#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.14.73 Kernel Configuration
+# Linux/x86 4.9.12 Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_BITS_MAX=16
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
-# CONFIG_ZONE_DMA32 is not set
-# CONFIG_AUDIT_ARCH is not set
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_HAVE_INTEL_TXT=y
CONFIG_X86_32_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
+CONFIG_PGTABLE_LEVELS=2
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
+CONFIG_THREAD_INFO_IN_TASK=y
#
# General setup
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FHANDLE=y
CONFIG_AUDIT=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_KTIME_SCALAR=y
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_GENERIC_CMOS_UPDATE=y
#
# CPU/Task time and stats accounting
#
-# CONFIG_TICK_CPU_ACCOUNTING is not set
+CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_IRQ_TIME_ACCOUNTING=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# RCU Subsystem
#
CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
-CONFIG_RCU_FANOUT=32
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FAST_NO_HZ=y
# CONFIG_TREE_RCU_TRACE is not set
-CONFIG_RCU_NOCB_CPU=y
-# CONFIG_RCU_NOCB_CPU_NONE is not set
-# CONFIG_RCU_NOCB_CPU_ZERO is not set
-CONFIG_RCU_NOCB_CPU_ALL=y
+# CONFIG_RCU_EXPEDITE_BOOT is not set
+# CONFIG_BUILD_BIN2C is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_NMI_LOG_BUF_SHIFT=13
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
-CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
# CONFIG_MEMCG is not set
-CONFIG_CGROUP_PERF=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_CFS_BANDWIDTH is not set
CONFIG_RT_GROUP_SCHED=y
-CONFIG_BLK_CGROUP=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+# CONFIG_CGROUP_DEBUG is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_BPF=y
CONFIG_EXPERT=y
CONFIG_UID16=y
+CONFIG_MULTIUSER=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
+# CONFIG_BPF_SYSCALL is not set
CONFIG_SHMEM=y
CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
CONFIG_PCI_QUIRKS=y
+CONFIG_MEMBARRIER=y
CONFIG_EMBEDDED=y
CONFIG_HAVE_PERF_EVENTS=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
+CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLUB_CPU_PARTIAL=y
-# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_DATA_VERIFICATION is not set
# CONFIG_PROFILING is not set
CONFIG_TRACEPOINTS=y
CONFIG_HAVE_OPROFILE=y
CONFIG_OPROFILE_NMI_TIMER=y
# CONFIG_KPROBES is not set
CONFIG_JUMP_LABEL=y
+CONFIG_STATIC_KEYS_SELFTEST=y
+# CONFIG_UPROBES is not set
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_NMI=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set
+CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
CONFIG_CC_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
-CONFIG_HAVE_ARCH_SOFT_DIRTY=y
CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=8
+CONFIG_HAVE_COPY_THREAD_TLS=y
+# CONFIG_HAVE_ARCH_HASH is not set
+CONFIG_ISA_BUS_API=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OLD_SIGACTION=y
+# CONFIG_CPU_NO_EFFICIENT_FFS is not set
+# CONFIG_HAVE_ARCH_VMAP_STACK is not set
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_MODULE_SIG is not set
-CONFIG_STOP_MACHINE=y
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
CONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not set
# CONFIG_CMDLINE_PARTITION is not set
+CONFIG_BLK_MQ_PCI=y
#
# IO Schedulers
CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_RWLOCKS=y
CONFIG_FREEZER=y
#
#
CONFIG_ZONE_DMA=y
CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
+CONFIG_X86_FAST_FEATURE_TESTS=y
CONFIG_X86_MPPARSE=y
-CONFIG_X86_BIGSMP=y
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_GOLDFISH is not set
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_GOLDFISH is not set
-# CONFIG_X86_INTEL_MID is not set
+CONFIG_X86_INTEL_MID=y
+CONFIG_X86_INTEL_QUARK=y
CONFIG_X86_INTEL_LPSS=y
+CONFIG_X86_AMD_PLATFORM_DEVICE=y
+CONFIG_IOSF_MBI=y
+# CONFIG_IOSF_MBI_DEBUG is not set
# CONFIG_X86_RDC321X is not set
CONFIG_X86_32_NON_STANDARD=y
-# CONFIG_X86_NUMAQ is not set
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
# CONFIG_STA2X11 is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_ES7000 is not set
CONFIG_X86_32_IRIS=m
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
# CONFIG_PARAVIRT_DEBUG is not set
# CONFIG_PARAVIRT_SPINLOCKS is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
CONFIG_KVM_GUEST=y
# CONFIG_KVM_DEBUG_FS is not set
# CONFIG_LGUEST_GUEST is not set
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_PARAVIRT_CLOCK=y
CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
CONFIG_M586TSC=y
CONFIG_CPU_SUP_UMC_32=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
+CONFIG_APB_TIMER=y
CONFIG_DMI=y
CONFIG_NR_CPUS=8
CONFIG_SCHED_SMT=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
-CONFIG_X86_UP_APIC_MSI=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_INTEL=y
CONFIG_X86_MCE_AMD=y
-# CONFIG_X86_ANCIENT_MCE is not set
+CONFIG_X86_ANCIENT_MCE=y
CONFIG_X86_MCE_THRESHOLD=y
# CONFIG_X86_MCE_INJECT is not set
CONFIG_X86_THERMAL_VECTOR=y
-CONFIG_VM86=y
+
+#
+# Performance monitoring
+#
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
+# CONFIG_X86_LEGACY_VM86 is not set
+# CONFIG_VM86 is not set
CONFIG_TOSHIBA=m
CONFIG_I8K=m
# CONFIG_X86_REBOOTFIXUPS is not set
-CONFIG_MICROCODE=m
+CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
CONFIG_MICROCODE_OLD_INTERFACE=y
-# CONFIG_MICROCODE_INTEL_EARLY is not set
-# CONFIG_MICROCODE_AMD_EARLY is not set
# CONFIG_X86_MSR is not set
CONFIG_X86_CPUID=y
# CONFIG_NOHIGHMEM is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ILLEGAL_POINTER_VALUE=0
+CONFIG_ILLEGAL_POINTER_VALUE=0xfffff000
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_ARCH_DISCARD_MEMBLOCK=y
CONFIG_MEMORY_ISOLATION=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MEMORY_BALLOON=y
CONFIG_BALLOON_COMPACTION=y
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
+CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_MMU_NOTIFIER=y
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
-CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
CONFIG_CLEANCACHE=y
# CONFIG_FRONTSWAP is not set
# CONFIG_CMA is not set
+# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
+# CONFIG_X86_PMEM_LEGACY is not set
CONFIG_HIGHPTE=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
CONFIG_ARCH_USES_PG_UNCACHED=y
CONFIG_ARCH_RANDOM=y
CONFIG_X86_SMAP=y
+# CONFIG_X86_INTEL_MPX is not set
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_SECCOMP=y
CONFIG_CRASH_DUMP=y
CONFIG_PHYSICAL_START=0x400000
CONFIG_RELOCATABLE=y
-# CONFIG_RANDOMIZE_BASE is not set
CONFIG_X86_NEED_RELOCS=y
CONFIG_PHYSICAL_ALIGN=0x400000
CONFIG_HOTPLUG_CPU=y
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
# CONFIG_CMDLINE_BOOL is not set
-# CONFIG_DEFAULT_MODIFY_LDT_SYSCALL is not set
+CONFIG_MODIFY_LDT_SYSCALL=y
+CONFIG_DEFAULT_MODIFY_LDT_SYSCALL=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
#
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
+# CONFIG_HIBERNATION is not set
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
# CONFIG_PM_AUTOSLEEP is not set
# CONFIG_PM_WAKELOCKS is not set
-CONFIG_PM_RUNTIME=y
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_CLK=y
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
CONFIG_ACPI=y
+CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
+CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
+CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
+# CONFIG_ACPI_DEBUGGER is not set
CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
# CONFIG_ACPI_PROCFS_POWER is not set
+CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
CONFIG_ACPI_EC_DEBUGFS=m
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_FAN=y
CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_CPU_FREQ_PSS=y
+CONFIG_ACPI_PROCESSOR_CSTATE=y
+CONFIG_ACPI_PROCESSOR_IDLE=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_IPMI=m
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
+CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_PCI_SLOT=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_HOTPLUG_IOAPIC=y
CONFIG_ACPI_SBS=m
CONFIG_ACPI_HED=y
CONFIG_ACPI_CUSTOM_METHOD=m
# CONFIG_ACPI_BGRT is not set
+# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
+# CONFIG_ACPI_NFIT is not set
+CONFIG_HAVE_ACPI_APEI=y
+CONFIG_HAVE_ACPI_APEI_NMI=y
CONFIG_ACPI_APEI=y
CONFIG_ACPI_APEI_GHES=y
CONFIG_ACPI_APEI_PCIEAER=y
CONFIG_ACPI_APEI_MEMORY_FAILURE=y
# CONFIG_ACPI_APEI_EINJ is not set
# CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_DPTF_POWER=m
+CONFIG_ACPI_WATCHDOG=y
CONFIG_ACPI_EXTLOG=m
+CONFIG_PMIC_OPREGION=y
+CONFIG_ACPI_CONFIGFS=m
CONFIG_SFI=y
CONFIG_X86_APM_BOOT=y
CONFIG_APM=y
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
CONFIG_CPU_FREQ_GOV_COMMON=y
-CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
#
-# x86 CPU frequency scaling drivers
+# CPU frequency scaling drivers
#
CONFIG_X86_INTEL_PSTATE=y
CONFIG_X86_PCC_CPUFREQ=m
CONFIG_X86_ACPI_CPUFREQ=m
# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
+# CONFIG_X86_SFI_CPUFREQ is not set
CONFIG_X86_POWERNOW_K6=m
CONFIG_X86_POWERNOW_K7=m
CONFIG_X86_POWERNOW_K7_ACPI=y
# CPU Idle
#
CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
# CONFIG_PCIEASPM_POWERSAVE is not set
# CONFIG_PCIEASPM_PERFORMANCE is not set
CONFIG_PCIE_PME=y
+# CONFIG_PCIE_DPC is not set
+# CONFIG_PCIE_PTM is not set
CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
CONFIG_PCI_ATS=y
CONFIG_PCI_IOV=y
# CONFIG_PCI_PRI is not set
-# CONFIG_PCI_PASID is not set
-CONFIG_PCI_IOAPIC=y
+CONFIG_PCI_PASID=y
CONFIG_PCI_LABEL=y
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_IBM is not set
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
#
# PCI host controller drivers
#
+CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_DW=y
+# CONFIG_ISA_BUS is not set
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
CONFIG_EISA=y
CONFIG_EISA_PCI_EISA=y
CONFIG_EISA_VIRTUAL_ROOT=y
CONFIG_EISA_NAMES=y
-CONFIG_SCx200=m
-CONFIG_SCx200HR_TIMER=m
+CONFIG_SCx200=y
+CONFIG_SCx200HR_TIMER=y
# CONFIG_OLPC is not set
CONFIG_ALIX=y
CONFIG_NET5501=y
CONFIG_TCIC=m
CONFIG_PCMCIA_PROBE=y
CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-# CONFIG_HOTPLUG_PCI_IBM is not set
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
# CONFIG_RAPIDIO is not set
CONFIG_X86_SYSFB=y
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_ELFCORE=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_BINFMT_SCRIPT=y
CONFIG_HAVE_AOUT=y
CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y
CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_IOSF_MBI=m
+CONFIG_PMC_ATOM=y
CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_EGRESS=y
#
# Networking options
CONFIG_IP_PIMSM_V2=y
CONFIG_SYN_COOKIES=y
CONFIG_NET_IPVTI=m
+CONFIG_NET_UDP_TUNNEL=m
+CONFIG_NET_FOU=m
+CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_INET_UDP_DIAG=m
+CONFIG_INET_DIAG_DESTROY=y
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_NV=m
CONFIG_TCP_CONG_SCALABLE=m
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_CONG_BBR=m
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_MIP6=m
+CONFIG_IPV6_ILA=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_GRE=m
+CONFIG_IPV6_FOU=m
+CONFIG_IPV6_FOU_TUNNEL=m
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_PIMSM_V2=y
# CONFIG_NETLABEL is not set
CONFIG_NETWORK_SECMARK=y
+CONFIG_NET_PTP_CLASSIFY=y
# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
#
# Core Netfilter Configuration
#
-CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_INGRESS=y
+CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_ACCT=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_COMMON=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_ZONES=y
CONFIG_NF_CT_NETLINK=m
CONFIG_NF_CT_NETLINK_TIMEOUT=m
CONFIG_NF_CT_NETLINK_HELPER=m
-CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_NF_NAT_PROTO_DCCP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_SIP=m
CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
CONFIG_NETFILTER_SYNPROXY=m
-CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES=y
CONFIG_NF_TABLES_INET=m
+CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m
+CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
-CONFIG_NFT_RBTREE=m
-CONFIG_NFT_HASH=m
+CONFIG_NFT_SET_RBTREE=m
+CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m
+CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
+CONFIG_NFT_HASH=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XTABLES=y
#
CONFIG_NETFILTER_XT_TARGET_LOG=m
CONFIG_NETFILTER_XT_TARGET_IMQ=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_NAT=m
CONFIG_NETFILTER_XT_TARGET_NETMAP=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_MATCH_HL=m
CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
CONFIG_NETFILTER_XT_MATCH_L2TP=m
CONFIG_NETFILTER_XT_MATCH_LAYER7=m
# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
CONFIG_IP_SET_BITMAP_IPMAC=m
CONFIG_IP_SET_BITMAP_PORT=m
CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPMARK=m
CONFIG_IP_SET_HASH_IPPORT=m
CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_MAC=m
CONFIG_IP_SET_HASH_NETPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETNET=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_FO=m
+CONFIG_IP_VS_OVF=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
#
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_CONNTRACK_IPV4=y
-# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
CONFIG_NF_TABLES_IPV4=m
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_DUP_IPV4=m
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_SYNPROXY=m
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_NF_CONNTRACK_IPV6=y
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NF_DUP_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_RAW=m
CONFIG_IP6_NF_SECURITY=m
-CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IP6_NF_TARGET_NPT=m
CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
-# CONFIG_BRIDGE_EBT_ULOG is not set
CONFIG_BRIDGE_EBT_NFLOG=m
# CONFIG_IP_DCCP is not set
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+CONFIG_INET_SCTP_DIAG=m
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
CONFIG_ATM=m
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_HAVE_NET_DSA=y
CONFIG_NET_DSA=y
+CONFIG_NET_DSA_HWMON=y
+CONFIG_NET_DSA_TAG_BRCM=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_DSA_TAG_TRAILER=y
+CONFIG_NET_DSA_TAG_QCA=y
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_GVRP=y
# CONFIG_VLAN_8021Q_MVRP is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
# CONFIG_IEEE802154 is not set
-CONFIG_6LOWPAN_IPHC=m
CONFIG_NET_SCHED=y
#
CONFIG_NET_CLS_FLOW=m
CONFIG_NET_CLS_CGROUP=m
CONFIG_NET_CLS_BPF=m
+CONFIG_NET_CLS_FLOWER=m
+CONFIG_NET_CLS_MATCHALL=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_ACT_SIMP=m
CONFIG_NET_ACT_SKBEDIT=m
CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
# CONFIG_DCB is not set
CONFIG_DNS_RESOLVER=y
CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BATMAN_V=y
CONFIG_BATMAN_ADV_BLA=y
CONFIG_BATMAN_ADV_DAT=y
CONFIG_BATMAN_ADV_NC=y
+CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_BATMAN_ADV_DEBUGFS=y
# CONFIG_BATMAN_ADV_DEBUG is not set
CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=y
-CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
CONFIG_VSOCKETS=m
CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_VIRTIO_VSOCKETS_COMMON=m
CONFIG_NETLINK_DIAG=m
+CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
+CONFIG_MPLS_ROUTING=m
+CONFIG_MPLS_IPTUNNEL=m
CONFIG_HSR=m
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_L3_MASTER_DEV=y
+CONFIG_NET_NCSI=y
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
-CONFIG_CGROUP_NET_PRIO=m
+CONFIG_SOCK_CGROUP_DATA=y
+CONFIG_CGROUP_NET_PRIO=y
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
CONFIG_BT=m
+CONFIG_BT_BREDR=y
CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_CMTP=m
CONFIG_BT_HIDP=m
+CONFIG_BT_HS=y
+CONFIG_BT_LE=y
+CONFIG_BT_LEDS=y
+# CONFIG_BT_SELFTEST is not set
+CONFIG_BT_DEBUGFS=y
#
# Bluetooth device drivers
#
+CONFIG_BT_INTEL=m
+CONFIG_BT_BCM=m
+CONFIG_BT_RTL=m
+CONFIG_BT_QCA=m
CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
CONFIG_BT_HCIBTSDIO=m
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_ATH3K=y
CONFIG_BT_HCIUART_LL=y
CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIUART_INTEL=y
+CONFIG_BT_HCIUART_BCM=y
+CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_AG6XX=y
+CONFIG_BT_HCIUART_MRVL=y
CONFIG_BT_HCIBCM203X=m
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
CONFIG_BT_ATH3K=m
CONFIG_BT_WILINK=m
# CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+# CONFIG_STREAM_PARSER is not set
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
CONFIG_CFG80211_WEXT=y
+CONFIG_CFG80211_WEXT_EXPORT=y
CONFIG_LIB80211=m
CONFIG_LIB80211_CRYPT_WEP=m
CONFIG_LIB80211_CRYPT_CCMP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
CONFIG_MAC80211_HAS_RC=y
-# CONFIG_MAC80211_RC_PID is not set
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_MINSTREL_VHT=y
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
CONFIG_MAC80211_MESH=y
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_MESSAGE_TRACING is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
# CONFIG_WIMAX is not set
CONFIG_RFKILL=m
CONFIG_RFKILL_LEDS=y
# CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set
# CONFIG_NFC is not set
+CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
#
# Device Drivers
#
# Generic Driver Options
#
+CONFIG_UEVENT_HELPER=y
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE=""
CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+CONFIG_WANT_DEV_COREDUMP=y
+CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_IRQ=y
CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_FENCE_TRACE is not set
#
# Bus devices
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
# CONFIG_MTD is not set
+# CONFIG_OF is not set
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_DRBD is not set
# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_NVME=m
# CONFIG_BLK_DEV_OSD is not set
CONFIG_BLK_DEV_SX8=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_VIRTIO_BLK=m
# CONFIG_BLK_DEV_HD is not set
# CONFIG_BLK_DEV_RBD is not set
CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
+CONFIG_BLK_DEV_NVME=m
+CONFIG_BLK_DEV_NVME_SCSI=y
+CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_LOOP is not set
#
# Misc devices
#
CONFIG_SENSORS_LIS3LV02D=m
# CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
CONFIG_DUMMY_IRQ=m
CONFIG_IBM_ASM=m
# CONFIG_PHANTOM is not set
+# CONFIG_INTEL_MID_PTI is not set
# CONFIG_SGI_IOC4 is not set
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
CONFIG_ICS932S401=m
-# CONFIG_ATMEL_SSC is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_CS5535_MFGPT=m
CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
# CONFIG_ISL29003 is not set
# CONFIG_ISL29020 is not set
# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
# CONFIG_SENSORS_BH1770 is not set
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
CONFIG_DS1682=m
CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=m
-CONFIG_BMP085_I2C=m
CONFIG_PCH_PHUB=m
CONFIG_USB_SWITCH_FSA9480=m
# CONFIG_SRAM is not set
+# CONFIG_PANEL is not set
# CONFIG_C2PORT is not set
#
CONFIG_ALTERA_STAPL=m
# CONFIG_INTEL_MEI is not set
# CONFIG_INTEL_MEI_ME is not set
+# CONFIG_INTEL_MEI_TXE is not set
CONFIG_VMWARE_VMCI=m
+#
+# Intel MIC Bus Driver
+#
+
+#
+# SCIF Bus Driver
+#
+
+#
+# VOP Bus Driver
+#
+
#
# Intel MIC Host Driver
#
#
# Intel MIC Card Driver
#
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
+
+#
+# VOP Driver
+#
+CONFIG_ECHO=m
+# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_AFU_DRIVER_OPS is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_MQ_DEFAULT is not set
CONFIG_SCSI_PROC_FS=y
#
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=m
CONFIG_SCSI_SAS_ATTRS=m
CONFIG_SCSI_SAS_LIBSAS=m
CONFIG_SCSI_SAS_ATA=y
CONFIG_SCSI_SAS_HOST_SMP=y
CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_SRP_TGT_ATTRS=y
CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=m
CONFIG_ISCSI_BOOT_SYSFS=m
CONFIG_SCSI_HPSA=m
CONFIG_SCSI_3W_9XXX=m
CONFIG_SCSI_3W_SAS=m
-CONFIG_SCSI_7000FASST=m
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AHA152X=m
CONFIG_SCSI_AHA1542=m
CONFIG_SCSI_MVUMI=m
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_IN2000=m
CONFIG_SCSI_ARCMSR=m
CONFIG_SCSI_ESAS2R=m
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MAILBOX=m
CONFIG_MEGARAID_LEGACY=m
CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
CONFIG_SCSI_MPT3SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_SMARTPQI=m
CONFIG_SCSI_UFSHCD=m
CONFIG_SCSI_UFSHCD_PCI=m
+CONFIG_SCSI_UFS_DWC_TC_PCI=m
CONFIG_SCSI_UFSHCD_PLATFORM=m
+CONFIG_SCSI_UFS_DWC_TC_PLATFORM=m
CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_BUSLOGIC=m
# CONFIG_SCSI_FLASHPOINT is not set
CONFIG_LIBFCOE=m
CONFIG_FCOE=m
CONFIG_FCOE_FNIC=m
+CONFIG_SCSI_SNIC=m
+# CONFIG_SCSI_SNIC_DEBUG_FS is not set
CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_DTC3280=m
CONFIG_SCSI_EATA=m
CONFIG_SCSI_EATA_TAGGED_QUEUE=y
# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
CONFIG_SCSI_ISCI=m
CONFIG_SCSI_GENERIC_NCR5380=m
CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
-# CONFIG_SCSI_GENERIC_NCR53C400 is not set
CONFIG_SCSI_IPS=m
CONFIG_SCSI_INITIO=m
CONFIG_SCSI_INIA100=m
CONFIG_SCSI_IPR=m
CONFIG_SCSI_IPR_TRACE=y
CONFIG_SCSI_IPR_DUMP=y
-CONFIG_SCSI_PAS16=m
CONFIG_SCSI_QLOGIC_FAS=m
CONFIG_SCSI_QLOGIC_1280=m
CONFIG_SCSI_QLA_FC=m
CONFIG_SCSI_SIM710=m
CONFIG_SCSI_SYM53C416=m
CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_T128=m
-CONFIG_SCSI_U14_34F=m
-# CONFIG_SCSI_U14_34F_TAGGED_QUEUE is not set
-# CONFIG_SCSI_U14_34F_LINKED_COMMANDS is not set
-CONFIG_SCSI_U14_34F_MAX_TAGS=8
-CONFIG_SCSI_ULTRASTOR=m
+CONFIG_SCSI_AM53C974=m
CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_WD719X=m
# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_PMCRAID=m
CONFIG_SCSI_PM8001=m
-# CONFIG_SCSI_SRP is not set
CONFIG_SCSI_BFA_FC=m
CONFIG_SCSI_VIRTIO=m
CONFIG_SCSI_CHELSIO_FCOE=m
# SATA SFF controllers with BMDMA
#
CONFIG_ATA_PIIX=y
-CONFIG_SATA_HIGHBANK=m
+CONFIG_SATA_DWC=m
+# CONFIG_SATA_DWC_OLD_DMA is not set
+# CONFIG_SATA_DWC_DEBUG is not set
CONFIG_SATA_MV=m
CONFIG_SATA_NV=m
CONFIG_SATA_PROMISE=m
-CONFIG_SATA_RCAR=m
CONFIG_SATA_SIL=m
CONFIG_SATA_SIS=m
CONFIG_SATA_SVW=m
#
CONFIG_PATA_ALI=m
CONFIG_PATA_AMD=m
-CONFIG_PATA_ARASAN_CF=m
CONFIG_PATA_ARTOP=m
CONFIG_PATA_ATIIXP=m
CONFIG_PATA_ATP867X=m
CONFIG_MD_RAID456=m
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
+# CONFIG_MD_CLUSTER is not set
CONFIG_BCACHE=m
# CONFIG_BCACHE_DEBUG is not set
# CONFIG_BCACHE_CLOSURES_DEBUG is not set
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_MQ_DEFAULT is not set
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=y
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
CONFIG_DM_BIO_PRISON=m
CONFIG_DM_PERSISTENT_DATA=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=y
# CONFIG_DM_THIN_PROVISIONING is not set
CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_SMQ=m
CONFIG_DM_CACHE_CLEANER=m
+# CONFIG_DM_ERA is not set
CONFIG_DM_MIRROR=y
CONFIG_DM_LOG_USERSPACE=m
CONFIG_DM_RAID=m
CONFIG_DM_UEVENT=y
# CONFIG_DM_FLAKEY is not set
CONFIG_DM_VERITY=m
+# CONFIG_DM_VERITY_FEC is not set
CONFIG_DM_SWITCH=m
+CONFIG_DM_LOG_WRITES=m
# CONFIG_TARGET_CORE is not set
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FIREWIRE_SBP2=m
# CONFIG_FIREWIRE_NET is not set
# CONFIG_FIREWIRE_NOSY is not set
-CONFIG_I2O=m
-# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_CONFIG_OLD_IOCTL=y
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
CONFIG_MACINTOSH_DRIVERS=y
# CONFIG_MAC_EMUMOUSEBTN is not set
CONFIG_NETDEVICES=y
# CONFIG_NET_TEAM is not set
CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
+CONFIG_IPVLAN=m
CONFIG_VXLAN=m
+CONFIG_GENEVE=m
+CONFIG_GTP=m
+CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
-CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_IMQ=m
# CONFIG_IMQ_BEHAVIOR_AA is not set
# CONFIG_IMQ_BEHAVIOR_BB is not set
CONFIG_IMQ_NUM_DEVS=2
CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
CONFIG_VETH=m
CONFIG_VIRTIO_NET=m
CONFIG_NLMON=m
+CONFIG_NET_VRF=m
CONFIG_SUNGEM_PHY=m
# CONFIG_ARCNET is not set
CONFIG_ATM_DRIVERS=y
#
# CAIF transport drivers
#
-CONFIG_VHOST_NET=m
-CONFIG_VHOST_RING=m
-CONFIG_VHOST=m
#
# Distributed Switch Architecture drivers
#
-CONFIG_NET_DSA_MV88E6XXX=y
CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
+CONFIG_NET_DSA_BCM_SF2=m
+CONFIG_B53=m
+CONFIG_B53_MDIO_DRIVER=m
+CONFIG_B53_MMAP_DRIVER=m
+CONFIG_B53_SRAB_DRIVER=m
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
+CONFIG_NET_DSA_QCA8K=m
CONFIG_ETHERNET=y
CONFIG_MDIO=m
CONFIG_NET_VENDOR_3COM=y
CONFIG_TYPHOON=m
CONFIG_NET_VENDOR_ADAPTEC=y
CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_AGERE=y
+CONFIG_ET131X=m
CONFIG_NET_VENDOR_ALTEON=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_ALTERA_TSE=m
+CONFIG_NET_VENDOR_AMAZON=y
+CONFIG_ENA_ETHERNET=m
CONFIG_NET_VENDOR_AMD=y
CONFIG_AMD8111_ETH=m
CONFIG_LANCE=m
CONFIG_ATL1E=m
CONFIG_ATL1C=m
CONFIG_ALX=m
+CONFIG_NET_VENDOR_AURORA=y
+CONFIG_AURORA_NB8800=m
CONFIG_NET_CADENCE=y
-CONFIG_ARM_AT91_ETHER=m
CONFIG_MACB=m
CONFIG_NET_VENDOR_BROADCOM=y
CONFIG_B44=m
CONFIG_B44_PCI_AUTOSELECT=y
CONFIG_B44_PCICORE_AUTOSELECT=y
CONFIG_B44_PCI=y
+CONFIG_BCMGENET=m
CONFIG_BNX2=m
CONFIG_CNIC=m
CONFIG_TIGON3=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
CONFIG_NET_VENDOR_BROCADE=y
CONFIG_BNA=m
-CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_VENDOR_CAVIUM=y
CONFIG_NET_VENDOR_CHELSIO=y
CONFIG_CHELSIO_T1=m
CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T3=m
CONFIG_CHELSIO_T4=m
CONFIG_CHELSIO_T4VF=m
+CONFIG_CHELSIO_LIB=m
CONFIG_NET_VENDOR_CIRRUS=y
CONFIG_CS89x0=m
# CONFIG_CS89x0_PLATFORM is not set
CONFIG_NET_VENDOR_CISCO=y
CONFIG_ENIC=m
+CONFIG_CX_ECAT=m
CONFIG_DNET=m
CONFIG_NET_VENDOR_DEC=y
CONFIG_NET_TULIP=y
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_NET_VENDOR_EMULEX=y
CONFIG_BE2NET=m
+CONFIG_BE2NET_HWMON=y
+CONFIG_NET_VENDOR_EZCHIP=y
CONFIG_NET_VENDOR_EXAR=y
CONFIG_S2IO=m
CONFIG_VXGE=m
CONFIG_E100=m
CONFIG_E1000=m
CONFIG_E1000E=m
+CONFIG_E1000E_HWTS=y
CONFIG_IGB=m
CONFIG_IGB_HWMON=y
-CONFIG_IGB_DCA=y
CONFIG_IGBVF=m
CONFIG_IXGB=m
CONFIG_IXGBE=m
CONFIG_IXGBE_HWMON=y
-CONFIG_IXGBE_DCA=y
CONFIG_IXGBEVF=m
CONFIG_I40E=m
-CONFIG_I40E_VXLAN=y
CONFIG_I40EVF=m
+CONFIG_FM10K=m
CONFIG_NET_VENDOR_I825XX=y
-CONFIG_IP1000=m
CONFIG_JME=m
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKGE_GENESIS=y
CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
# CONFIG_MLX5_CORE is not set
+CONFIG_MLXSW_CORE=m
+CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_SWITCHX2=m
+CONFIG_MLXSW_SPECTRUM=m
CONFIG_NET_VENDOR_MICREL=y
CONFIG_KS8842=m
CONFIG_KS8851_MLL=m
CONFIG_KSZ884X_PCI=m
CONFIG_NET_VENDOR_MYRI=y
CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
CONFIG_FEALNX=m
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NATSEMI=m
CONFIG_NS83820=m
+CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NFP_NETVF=m
+# CONFIG_NFP_NET_DEBUG is not set
CONFIG_NET_VENDOR_8390=y
CONFIG_PCMCIA_AXNET=m
CONFIG_NE2000=m
CONFIG_NET_VENDOR_OKI=y
CONFIG_PCH_GBE=m
CONFIG_ETHOC=m
-# CONFIG_NET_PACKET_ENGINE is not set
+CONFIG_NET_PACKET_ENGINE=y
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
CONFIG_NET_VENDOR_QLOGIC=y
CONFIG_QLA3XXX=m
CONFIG_QLCNIC=m
CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLCNIC_HWMON=y
CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QED_SRIOV=y
+CONFIG_QEDE=m
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_QCOM_EMAC=m
CONFIG_NET_VENDOR_REALTEK=y
CONFIG_ATP=m
CONFIG_8139CP=m
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_TUNE_TWISTER=y
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_R8169=m
-CONFIG_SH_ETH=m
+CONFIG_NET_VENDOR_RENESAS=y
CONFIG_NET_VENDOR_RDC=y
CONFIG_R6040=m
+CONFIG_NET_VENDOR_ROCKER=y
+CONFIG_ROCKER=m
+CONFIG_NET_VENDOR_SAMSUNG=y
+CONFIG_SXGBE_ETH=m
CONFIG_NET_VENDOR_SEEQ=y
CONFIG_NET_VENDOR_SILAN=y
CONFIG_SC92031=m
CONFIG_SFC=m
CONFIG_SFC_MCDI_MON=y
CONFIG_SFC_SRIOV=y
+CONFIG_SFC_MCDI_LOGGING=y
CONFIG_NET_VENDOR_SMSC=y
CONFIG_SMC9194=m
CONFIG_PCMCIA_SMC91C92=m
CONFIG_SMSC9420=m
CONFIG_NET_VENDOR_STMICRO=y
CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=y
-CONFIG_STMMAC_PCI=y
-# CONFIG_STMMAC_DEBUG_FS is not set
-# CONFIG_STMMAC_DA is not set
+CONFIG_STMMAC_PLATFORM=m
+CONFIG_DWMAC_GENERIC=m
+CONFIG_STMMAC_PCI=m
CONFIG_NET_VENDOR_SUN=y
CONFIG_HAPPYMEAL=m
CONFIG_SUNGEM=m
CONFIG_CASSINI=m
CONFIG_NIU=m
+CONFIG_NET_VENDOR_SYNOPSYS=y
CONFIG_NET_VENDOR_TEHUTI=y
CONFIG_TEHUTI=m
CONFIG_NET_VENDOR_TI=y
+CONFIG_TI_CPSW_ALE=m
CONFIG_TLAN=m
CONFIG_NET_VENDOR_VIA=y
CONFIG_VIA_RHINE=m
# CONFIG_HIPPI is not set
# CONFIG_NET_SB1000 is not set
CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+
+#
+# MDIO bus device drivers
+#
+CONFIG_MDIO_BCM_UNIMAC=m
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_GPIO is not set
#
# MII PHY device drivers
#
-CONFIG_AT803X_PHY=m
CONFIG_AMD_PHY=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
+CONFIG_AQUANTIA_PHY=m
+CONFIG_AT803X_PHY=m
+CONFIG_BCM7XXX_PHY=m
CONFIG_BCM87XX_PHY=m
+CONFIG_BCM_NET_PHYLIB=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_DP83848_PHY=m
+CONFIG_DP83867_PHY=m
+CONFIG_FIXED_PHY=y
CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
+CONFIG_INTEL_XWAY_PHY=m
CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_MARVELL_PHY=m
CONFIG_MICREL_PHY=m
-CONFIG_FIXED_PHY=y
-CONFIG_MDIO_BITBANG=m
-# CONFIG_MDIO_GPIO is not set
+CONFIG_MICROCHIP_PHY=m
+CONFIG_MICROSEMI_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_STE10XP=m
+CONFIG_TERANETICS_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_XILINX_GMII2RGMII=m
# CONFIG_PLIP is not set
CONFIG_PPP=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_SYNC_TTY=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-
-#
-# USB Network Adapters
-#
+CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_RTL8152=m
+CONFIG_USB_LAN78XX=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_AX88179_178A=m
CONFIG_USB_NET_PLUSB=m
CONFIG_USB_NET_MCS7830=m
CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y
CONFIG_USB_IPHETH=m
CONFIG_USB_SIERRA_NET=m
CONFIG_USB_VL600=m
+CONFIG_USB_NET_CH9200=m
CONFIG_WLAN=y
-# CONFIG_PCMCIA_RAYCS is not set
-CONFIG_LIBERTAS_THINFIRM=m
-# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_LIBERTAS_UAP=m
-CONFIG_AIRO=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AT76C50X_USB=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
+CONFIG_WLAN_VENDOR_ADMTEK=y
CONFIG_ADM8211=m
-CONFIG_MAC80211_HWSIM=m
-CONFIG_MWL8K=m
CONFIG_ATH_COMMON=m
-CONFIG_ATH_CARDS=m
+CONFIG_WLAN_VENDOR_ATH=y
# CONFIG_ATH_DEBUG is not set
CONFIG_ATH5K=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH9K_PCI=y
CONFIG_ATH9K_AHB=y
# CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_DYNACK is not set
# CONFIG_ATH9K_WOW is not set
-# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
CONFIG_ATH9K_RFKILL=y
+# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
+CONFIG_ATH9K_PCOEM=y
CONFIG_ATH9K_HTC=m
# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_ATH9K_HWRNG=y
CONFIG_CARL9170=m
CONFIG_CARL9170_LEDS=y
CONFIG_CARL9170_WPC=y
# CONFIG_ATH10K_TRACING is not set
CONFIG_WCN36XX=m
# CONFIG_WCN36XX_DEBUGFS is not set
+CONFIG_WLAN_VENDOR_ATMEL=y
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AT76C50X_USB=m
+CONFIG_WLAN_VENDOR_BROADCOM=y
CONFIG_B43=m
CONFIG_B43_BCMA=y
CONFIG_B43_SSB=y
+CONFIG_B43_BUSES_BCMA_AND_SSB=y
+# CONFIG_B43_BUSES_BCMA is not set
+# CONFIG_B43_BUSES_SSB is not set
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
-# CONFIG_B43_PCMCIA is not set
CONFIG_B43_SDIO=y
CONFIG_B43_BCMA_PIO=y
CONFIG_B43_PIO=y
+CONFIG_B43_PHY_G=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_LP=y
CONFIG_B43_PHY_HT=y
CONFIG_BRCMUTIL=m
CONFIG_BRCMSMAC=m
CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_PROTO_BCDC=y
+CONFIG_BRCMFMAC_PROTO_MSGBUF=y
CONFIG_BRCMFMAC_SDIO=y
-# CONFIG_BRCMFMAC_USB is not set
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMFMAC_PCIE=y
# CONFIG_BRCM_TRACING is not set
# CONFIG_BRCMDBG is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_HOSTAP_CS=m
+CONFIG_WLAN_VENDOR_CISCO=y
+CONFIG_AIRO=m
+CONFIG_AIRO_CS=m
+CONFIG_WLAN_VENDOR_INTEL=y
CONFIG_IPW2100=m
CONFIG_IPW2100_MONITOR=y
# CONFIG_IPW2100_DEBUG is not set
# CONFIG_IPW2200_DEBUG is not set
CONFIG_LIBIPW=m
# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLEGACY=m
+CONFIG_IWL4965=m
+CONFIG_IWL3945=m
+
+#
+# iwl3945 / iwl4965 Debugging Options
+#
+# CONFIG_IWLEGACY_DEBUG is not set
CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_LEDS=y
CONFIG_IWLDVM=m
CONFIG_IWLMVM=m
CONFIG_IWLWIFI_OPMODE_MODULAR=y
+# CONFIG_IWLWIFI_BCAST_FILTERING is not set
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
#
# Debugging Options
#
# CONFIG_IWLWIFI_DEBUG is not set
# CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLEGACY=m
-CONFIG_IWL4965=m
-CONFIG_IWL3945=m
-
-#
-# iwl3945 / iwl4965 Debugging Options
-#
-# CONFIG_IWLEGACY_DEBUG is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_MESH=y
+CONFIG_WLAN_VENDOR_INTERSIL=y
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_HOSTAP_CS=m
CONFIG_HERMES=m
# CONFIG_HERMES_PRISM is not set
CONFIG_HERMES_CACHE_FW_ON_INIT=y
CONFIG_P54_USB=m
CONFIG_P54_PCI=m
CONFIG_P54_LEDS=y
+# CONFIG_PRISM54 is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_USB=m
+CONFIG_MWL8K=m
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_MT7601U=m
+CONFIG_WLAN_VENDOR_RALINK=y
CONFIG_RT2X00=m
CONFIG_RT2400PCI=m
CONFIG_RT2500PCI=m
CONFIG_RT2X00_LIB_CRYPTO=y
CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
+CONFIG_WLAN_VENDOR_REALTEK=y
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
CONFIG_RTL_CARDS=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
CONFIG_RTL8192DE=m
CONFIG_RTL8723AE=m
+CONFIG_RTL8723BE=m
CONFIG_RTL8188EE=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8821AE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTLWIFI_PCI=m
CONFIG_RTLWIFI_USB=m
# CONFIG_RTLWIFI_DEBUG is not set
CONFIG_RTL8192C_COMMON=m
-CONFIG_WL_TI=y
+CONFIG_RTL8723_COMMON=m
+CONFIG_RTLBTCOEXIST=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_WLAN_VENDOR_RSI=y
+CONFIG_RSI_91X=m
+CONFIG_RSI_DEBUGFS=y
+CONFIG_RSI_SDIO=m
+CONFIG_RSI_USB=m
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
+CONFIG_WLAN_VENDOR_TI=y
CONFIG_WL1251=m
CONFIG_WL1251_SDIO=m
CONFIG_WL12XX=m
CONFIG_WLCORE=m
CONFIG_WLCORE_SDIO=m
CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_WLAN_VENDOR_ZYDAS=y
+CONFIG_USB_ZD1201=m
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-CONFIG_MWIFIEX_PCIE=m
-CONFIG_MWIFIEX_USB=m
-CONFIG_CW1200=m
-CONFIG_CW1200_WLAN_SDIO=m
+# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_PCMCIA_WL3501=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_USB_NET_RNDIS_WLAN=m
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
#
# CONFIG_WAN is not set
CONFIG_VMXNET3=m
+CONFIG_FUJITSU_ES=m
CONFIG_HYPERV_NET=m
CONFIG_ISDN=y
CONFIG_ISDN_I4L=m
CONFIG_HISAX_HFCUSB=m
CONFIG_HISAX_HFC4S8S=m
CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
-# CONFIG_ISDN_DRV_ICN is not set
-# CONFIG_ISDN_DRV_PCBIT is not set
-# CONFIG_ISDN_DRV_SC is not set
-# CONFIG_ISDN_DRV_ACT2000 is not set
CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
CONFIG_CAPI_TRACE=y
CONFIG_ISDN_CAPI_CAPI20=m
CONFIG_ISDN_CAPI_MIDDLEWARE=y
CONFIG_ISDN_CAPI_CAPIDRV=m
+# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set
#
# CAPI hardware drivers
CONFIG_MISDN_IPAC=m
CONFIG_MISDN_ISAR=m
CONFIG_ISDN_HDLC=m
+CONFIG_NVM=y
+# CONFIG_NVM_DEBUG is not set
+CONFIG_NVM_GENNVM=m
+CONFIG_NVM_RRPC=m
#
# Input device support
#
CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
# CONFIG_INPUT_FF_MEMLESS is not set
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_SPARSEKMAP=m
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ADC=m
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_CYPRESS=y
CONFIG_MOUSE_PS2_ELANTECH=y
CONFIG_MOUSE_PS2_SENTELIC=y
CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_PS2_FOCALTECH=y
+# CONFIG_MOUSE_PS2_VMMOUSE is not set
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_APPLETOUCH=m
CONFIG_MOUSE_BCM5974=m
CONFIG_MOUSE_CYAPA=m
+# CONFIG_MOUSE_ELAN_I2C is not set
# CONFIG_MOUSE_INPORT is not set
# CONFIG_MOUSE_LOGIBM is not set
# CONFIG_MOUSE_PC110PAD is not set
CONFIG_INPUT_MISC=y
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_E3X0_BUTTON is not set
CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_MMA8450 is not set
# CONFIG_INPUT_MPU3050 is not set
CONFIG_INPUT_APANEL=m
# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_BEEPER is not set
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_GPIO_DECODER is not set
# CONFIG_INPUT_WISTRON_BTNS is not set
CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_RETU_PWRBUTTON=m
+# CONFIG_INPUT_AXP20X_PEK is not set
CONFIG_INPUT_UINPUT=m
# CONFIG_INPUT_PCF8574 is not set
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+# CONFIG_INPUT_DA9063_ONKEY is not set
# CONFIG_INPUT_ADXL34X is not set
# CONFIG_INPUT_IMS_PCU is not set
# CONFIG_INPUT_CMA3000 is not set
CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
+# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+# CONFIG_RMI4_CORE is not set
#
# Hardware I/O ports
# CONFIG_SERIO_PS2MULT is not set
CONFIG_SERIO_ARC_PS2=m
CONFIG_HYPERV_KEYBOARD=m
+# CONFIG_USERIO is not set
# CONFIG_GAMEPORT is not set
#
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_NONSTANDARD=y
CONFIG_ROCKETPORT=m
CONFIG_N_HDLC=m
CONFIG_N_GSM=m
# CONFIG_TRACE_SINK is not set
+CONFIG_DEVMEM=y
# CONFIG_DEVKMEM is not set
#
# Serial drivers
#
+CONFIG_SERIAL_EARLYCON=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_FINTEK=y
CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_PCI=y
# CONFIG_SERIAL_8250_CS is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
CONFIG_SERIAL_8250_RSA=y
+# CONFIG_SERIAL_8250_FSL is not set
CONFIG_SERIAL_8250_DW=m
+CONFIG_SERIAL_8250_RT288X=y
+CONFIG_SERIAL_8250_LPSS=y
+CONFIG_SERIAL_8250_MID=y
+CONFIG_SERIAL_8250_MOXA=m
#
# Non-8250 serial port support
#
-# CONFIG_SERIAL_MFD_HSU is not set
+# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_JSM=m
CONFIG_SERIAL_SCCNXP=m
+# CONFIG_SERIAL_SC16IS7XX is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
# CONFIG_IPMI_PANIC_EVENT is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
+CONFIG_IPMI_SSIF=m
CONFIG_IPMI_WATCHDOG=m
CONFIG_IPMI_POWEROFF=m
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_TIMERIOMEM=m
CONFIG_HW_RANDOM_INTEL=m
CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_ATMEL=m
CONFIG_HW_RANDOM_GEODE=m
CONFIG_HW_RANDOM_VIA=m
CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_HW_RANDOM_EXYNOS=m
CONFIG_NVRAM=y
# CONFIG_DTLK is not set
CONFIG_R3964=m
# CONFIG_CARDMAN_4040 is not set
# CONFIG_IPWIRELESS is not set
CONFIG_MWAVE=m
-# CONFIG_SCx200_GPIO is not set
+CONFIG_SCx200_GPIO=m
CONFIG_PC8736x_GPIO=m
CONFIG_NSC_GPIO=m
CONFIG_RAW_DRIVER=y
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
-CONFIG_I2C=m
+# CONFIG_XILLYBUS is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_ACPI_I2C_OPREGION=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=m
CONFIG_I2C_MUX_PCA9541=m
CONFIG_I2C_MUX_PCA954x=m
CONFIG_I2C_MUX_PINCTRL=m
+CONFIG_I2C_MUX_REG=m
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_SMBUS=m
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_DESIGNWARE_CORE=m
CONFIG_I2C_DESIGNWARE_PLATFORM=m
# CONFIG_I2C_DESIGNWARE_PCI is not set
+CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
# CONFIG_I2C_EG20T is not set
+CONFIG_I2C_EMEV2=m
# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_OCORES is not set
CONFIG_I2C_PCA_PLATFORM=m
# External I2C/SMBus adapter drivers
#
CONFIG_I2C_DIOLAN_U2C=m
+# CONFIG_I2C_DLN2 is not set
CONFIG_I2C_PARPORT=m
CONFIG_I2C_PARPORT_LIGHT=m
CONFIG_I2C_ROBOTFUZZ_OSIF=m
# CONFIG_I2C_PCA_ISA is not set
CONFIG_SCx200_ACB=m
# CONFIG_I2C_STUB is not set
+CONFIG_I2C_SLAVE=y
+# CONFIG_I2C_SLAVE_EEPROM is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_SPI is not set
+CONFIG_SPMI=m
CONFIG_HSI=m
CONFIG_HSI_BOARDINFO=y
+#
+# HSI controllers
+#
+
#
# HSI clients
#
#
# Pin controllers
#
-# CONFIG_PINMUX is not set
-# CONFIG_PINCONF is not set
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
# CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_PINCTRL_AMD is not set
CONFIG_PINCTRL_BAYTRAIL=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+# CONFIG_PINCTRL_CHERRYVIEW is not set
+# CONFIG_PINCTRL_MERRIFIELD is not set
+# CONFIG_PINCTRL_BROXTON is not set
+# CONFIG_PINCTRL_SUNRISEPOINT is not set
CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
CONFIG_GPIO_ACPI=y
+CONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
#
-# Memory mapped GPIO drivers:
+# Memory mapped GPIO drivers
#
+# CONFIG_GPIO_AMDPT is not set
+# CONFIG_GPIO_AXP209 is not set
+# CONFIG_GPIO_DWAPB is not set
# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-# CONFIG_GPIO_F7188X is not set
-# CONFIG_GPIO_SCH311X is not set
-CONFIG_GPIO_TS5500=m
-CONFIG_GPIO_SCH=m
CONFIG_GPIO_ICH=m
-# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_LYNXPOINT is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_ZX is not set
#
-# I2C GPIO expanders:
+# Port-mapped I/O GPIO drivers
#
+# CONFIG_GPIO_104_DIO_48E is not set
+# CONFIG_GPIO_104_IDIO_16 is not set
+# CONFIG_GPIO_104_IDI_48 is not set
+# CONFIG_GPIO_F7188X is not set
+# CONFIG_GPIO_GPIO_MM is not set
+# CONFIG_GPIO_IT87 is not set
+CONFIG_GPIO_SCH=m
+# CONFIG_GPIO_SCH311X is not set
+# CONFIG_GPIO_WS16C48 is not set
+
+#
+# I2C GPIO expanders
+#
+# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_SX150X is not set
+# CONFIG_GPIO_TPIC2810 is not set
+# CONFIG_GPIO_TS4900 is not set
+
+#
+# MFD GPIO expanders
+#
+# CONFIG_GPIO_CS5535 is not set
+# CONFIG_GPIO_DLN2 is not set
+# CONFIG_GPIO_MSIC is not set
#
-# PCI GPIO expanders:
+# PCI GPIO expanders
#
-CONFIG_GPIO_CS5535=m
# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_INTEL_MID is not set
-# CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_MERRIFIELD is not set
# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_PCH is not set
# CONFIG_GPIO_RDC321X is not set
#
-# SPI GPIO expanders:
-#
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# LPC GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
+# SPI or I2C GPIO expanders
#
#
-# USB GPIO expanders:
+# USB GPIO expanders
#
CONFIG_GPIO_VIPERBOARD=m
CONFIG_W1=m
CONFIG_W1_SLAVE_DS2408=m
CONFIG_W1_SLAVE_DS2408_READBACK=y
CONFIG_W1_SLAVE_DS2413=m
+CONFIG_W1_SLAVE_DS2406=m
CONFIG_W1_SLAVE_DS2423=m
CONFIG_W1_SLAVE_DS2431=m
CONFIG_W1_SLAVE_DS2433=m
CONFIG_W1_SLAVE_DS2781=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_AVS=y
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_RESTART is not set
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_BATTERY_DS2781 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_DA9150 is not set
+# CONFIG_AXP288_FUEL_GAUGE is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_CHARGER_ISP1704 is not set
# CONFIG_CHARGER_GPIO is not set
# CONFIG_CHARGER_BQ2415X is not set
# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
# CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_SMB347 is not set
-CONFIG_POWER_RESET=y
-CONFIG_POWER_AVS=y
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
+# CONFIG_AXP20X_POWER is not set
CONFIG_HWMON=y
CONFIG_HWMON_VID=m
# CONFIG_HWMON_DEBUG_CHIP is not set
CONFIG_SENSORS_K8TEMP=m
CONFIG_SENSORS_K10TEMP=m
CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_APPLESMC=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS620=m
CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_DELL_SMM=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_F71805F=m
CONFIG_SENSORS_F71882FG=m
CONFIG_SENSORS_F75375S=m
CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_G762=m
+CONFIG_SENSORS_FTSTEUTATES=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
# CONFIG_SENSORS_GPIO_FAN is not set
CONFIG_SENSORS_HIH6130=m
-CONFIG_SENSORS_HTU21=m
-CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_IBMAEM=m
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
+CONFIG_SENSORS_I5500=m
+CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_IT87=m
# CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_POWR1220 is not set
CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
+CONFIG_SENSORS_LTC4151=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4222=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LTC4260=m
+CONFIG_SENSORS_LTC4261=m
+CONFIG_SENSORS_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+CONFIG_SENSORS_MAX6639=m
+CONFIG_SENSORS_MAX6642=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MAX31790=m
+CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM73=m
CONFIG_SENSORS_LM75=m
CONFIG_SENSORS_LM90=m
CONFIG_SENSORS_LM92=m
CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_LM95234=m
CONFIG_SENSORS_LM95241=m
CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX197=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_MAX6697=m
-CONFIG_SENSORS_MCP3021=m
-CONFIG_SENSORS_NCT6775=m
-CONFIG_SENSORS_NTC_THERMISTOR=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
+CONFIG_SENSORS_NCT6683=m
+CONFIG_SENSORS_NCT6775=m
+CONFIG_SENSORS_NCT7802=m
+CONFIG_SENSORS_NCT7904=m
CONFIG_SENSORS_PCF8591=m
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_ADM1275=m
CONFIG_SENSORS_LM25066=m
# CONFIG_SENSORS_LTC2978 is not set
+# CONFIG_SENSORS_LTC3815 is not set
CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX20751=m
CONFIG_SENSORS_MAX34440=m
CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_TPS40422=m
CONFIG_SENSORS_UCD9000=m
CONFIG_SENSORS_UCD9200=m
# CONFIG_SENSORS_ZL6100 is not set
CONFIG_SENSORS_SHT15=m
CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SHT3x=m
+CONFIG_SENSORS_SHTC1=m
CONFIG_SENSORS_SIS5595=m
-# CONFIG_SENSORS_SMM665 is not set
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_EMC1403=m
# CONFIG_SENSORS_EMC2103 is not set
CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
CONFIG_SENSORS_SCH5636=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_ADC128D818=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_AMC6821=m
CONFIG_SENSORS_INA209=m
CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_INA3221=m
+CONFIG_SENSORS_TC74=m
CONFIG_SENSORS_THMC50=m
CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP103=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_VIA_CPUTEMP=m
CONFIG_SENSORS_W83L786NG=m
CONFIG_SENSORS_W83627HF=m
CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_APPLESMC=m
#
# ACPI drivers
CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=y
CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
CONFIG_THERMAL_EMULATION=y
CONFIG_INTEL_POWERCLAMP=m
CONFIG_X86_PKG_TEMP_THERMAL=m
-CONFIG_ACPI_INT3403_THERMAL=m
+CONFIG_INTEL_SOC_DTS_IOSF_CORE=m
+CONFIG_INTEL_SOC_DTS_THERMAL=m
+CONFIG_INTEL_QUARK_DTS_THERMAL=m
#
-# Texas Instruments thermal drivers
+# ACPI INT340X thermal drivers
#
+CONFIG_INT340X_THERMAL=m
+CONFIG_ACPI_THERMAL_REL=m
+CONFIG_INT3406_THERMAL=m
+CONFIG_INTEL_PCH_THERMAL=m
+CONFIG_GENERIC_ADC_THERMAL=m
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
CONFIG_WATCHDOG_NOWAYOUT=y
+# CONFIG_WATCHDOG_SYSFS is not set
#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=m
+# CONFIG_DA9063_WATCHDOG is not set
+# CONFIG_DA9062_WATCHDOG is not set
+CONFIG_WDAT_WDT=m
+CONFIG_XILINX_WATCHDOG=m
+CONFIG_ZIIRAVE_WATCHDOG=m
+CONFIG_CADENCE_WATCHDOG=m
CONFIG_DW_WATCHDOG=m
+CONFIG_MAX63XX_WATCHDOG=m
CONFIG_RETU_WATCHDOG=m
CONFIG_ACQUIRE_WDT=m
CONFIG_ADVANTECH_WDT=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_EBC_C384_WDT=m
CONFIG_F71808E_WDT=m
CONFIG_SP5100_TCO=m
CONFIG_GEODE_WDT=m
-CONFIG_SC520_WDT=m
CONFIG_SBC_FITPC2_WATCHDOG=m
CONFIG_EUROTECH_WDT=m
CONFIG_IB700_WDT=m
CONFIG_WAFER_WDT=m
CONFIG_I6300ESB_WDT=m
CONFIG_IE6XX_WDT=m
+# CONFIG_INTEL_SCU_WATCHDOG is not set
+# CONFIG_INTEL_MID_WATCHDOG is not set
CONFIG_ITCO_WDT=m
CONFIG_ITCO_VENDOR_SUPPORT=y
CONFIG_IT8712F_WDT=m
CONFIG_SMSC37B787_WDT=m
CONFIG_VIA_WDT=m
CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
CONFIG_W83877F_WDT=m
CONFIG_W83977F_WDT=m
CONFIG_MACHZ_WDT=m
CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_NI903X_WDT=m
CONFIG_MEN_A21_WDT=m
#
# USB-based Watchdog Cards
#
CONFIG_USBPCWATCHDOG=m
+
+#
+# Watchdog Pretimeout Governors
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
CONFIG_SSB_POSSIBLE=y
#
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
CONFIG_BCMA_HOST_PCI=y
CONFIG_BCMA_HOST_SOC=y
+CONFIG_BCMA_DRIVER_PCI=y
+CONFIG_BCMA_SFLASH=y
CONFIG_BCMA_DRIVER_GMAC_CMN=y
CONFIG_BCMA_DRIVER_GPIO=y
# CONFIG_BCMA_DEBUG is not set
#
# Multifunction device drivers
#
-CONFIG_MFD_CORE=m
+CONFIG_MFD_CORE=y
CONFIG_MFD_CS5535=m
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+CONFIG_MFD_BCM590XX=m
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
# CONFIG_MFD_CROS_EC is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+CONFIG_MFD_DA9062=m
+CONFIG_MFD_DA9063=m
+CONFIG_MFD_DA9150=m
+CONFIG_MFD_DLN2=m
+CONFIG_MFD_EXYNOS_LPASS=m
# CONFIG_MFD_MC13XXX_I2C is not set
# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
CONFIG_LPC_ICH=m
CONFIG_LPC_SCH=m
+# CONFIG_INTEL_SOC_PMIC is not set
+# CONFIG_MFD_INTEL_LPSS_ACPI is not set
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
+CONFIG_MFD_INTEL_MSIC=y
# CONFIG_MFD_JANZ_CMODIO is not set
# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX77843 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_RETU=m
# CONFIG_MFD_PCF50633 is not set
# CONFIG_UCB1400_CORE is not set
# CONFIG_MFD_RDC321X is not set
CONFIG_MFD_RTSX_PCI=m
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RTSX_USB is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_SEC_CORE is not set
# CONFIG_MFD_SI476X_CORE is not set
CONFIG_MFD_SM501=m
CONFIG_MFD_SM501_GPIO=y
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_MFD_SMSC is not set
# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_SYSCON is not set
+CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_PALMAS is not set
# CONFIG_TPS6105X is not set
# CONFIG_TPS65010 is not set
# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
# CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS80031 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
CONFIG_MFD_WL1273_CORE=m
CONFIG_MFD_LM3533=m
# CONFIG_MFD_TIMBERDALE is not set
# CONFIG_MFD_TMIO is not set
CONFIG_MFD_VX855=m
# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
# CONFIG_REGULATOR is not set
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
# CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_SDR_SUPPORT is not set
CONFIG_MEDIA_RC_SUPPORT=y
CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER_DVB is not set
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_VIDEO_V4L2=m
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_PCI_SKELETON=m
CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
+# CONFIG_V4L2_FLASH_LED_CLASS is not set
CONFIG_VIDEOBUF_GEN=m
CONFIG_VIDEOBUF_DMA_SG=m
CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DMA_CONTIG=m
CONFIG_VIDEOBUF_DVB=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
CONFIG_VIDEOBUF2_DMA_CONTIG=m
CONFIG_VIDEOBUF2_VMALLOC=m
+CONFIG_VIDEOBUF2_DMA_SG=m
+CONFIG_VIDEOBUF2_DVB=m
CONFIG_DVB_CORE=m
CONFIG_DVB_NET=y
CONFIG_TTPCI_EEPROM=m
CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_SHARP_DECODER=m
CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
+CONFIG_IR_HIX5HD2=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_ITE_CIR=m
CONFIG_IR_REDRAT3=m
CONFIG_IR_STREAMZAP=m
CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
CONFIG_RC_LOOPBACK=m
CONFIG_USB_GSPCA_BENQ=m
CONFIG_USB_GSPCA_CONEX=m
CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_DTCS033=m
CONFIG_USB_GSPCA_ETOMS=m
CONFIG_USB_GSPCA_FINEPIX=m
CONFIG_USB_GSPCA_JEILINJ=m
CONFIG_USB_GSPCA_SUNPLUS=m
CONFIG_USB_GSPCA_T613=m
CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TOUPTEK=m
CONFIG_USB_GSPCA_TV8532=m
CONFIG_USB_GSPCA_VC032X=m
CONFIG_USB_GSPCA_VICAM=m
CONFIG_VIDEO_PVRUSB2_DVB=y
# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_USBVISION=m
CONFIG_VIDEO_STK1160_COMMON=m
CONFIG_VIDEO_STK1160_AC97=y
CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+CONFIG_VIDEO_GO7007_LOADER=m
+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
#
# Analog/digital TV USB devices
#
CONFIG_VIDEO_AU0828=m
CONFIG_VIDEO_AU0828_V4L2=y
+CONFIG_VIDEO_AU0828_RC=y
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
CONFIG_VIDEO_CX231XX_ALSA=m
#
CONFIG_DVB_USB=m
# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_DIB3000MC=m
CONFIG_DVB_USB_A800=m
CONFIG_DVB_USB_DIBUSB_MB=m
CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
CONFIG_DVB_USB_CE6230=m
CONFIG_DVB_USB_EC168=m
CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_IT913X=m
CONFIG_DVB_USB_LME2510=m
CONFIG_DVB_USB_MXL111SF=m
CONFIG_DVB_USB_RTL28XXU=m
CONFIG_SMS_USB_DRV=m
CONFIG_DVB_B2C2_FLEXCOP_USB=m
# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+CONFIG_DVB_AS102=m
#
# Webcam, TV (analog/digital) USB devices
# Media capture support
#
CONFIG_VIDEO_MEYE=m
-
-#
-# Media capture/analog TV support
-#
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_IVTV_ALSA=m
-CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_TW5864=m
+CONFIG_VIDEO_TW68=m
+CONFIG_VIDEO_TW686X=m
CONFIG_VIDEO_ZORAN=m
CONFIG_VIDEO_ZORAN_DC30=m
CONFIG_VIDEO_ZORAN_ZR36060=m
CONFIG_VIDEO_ZORAN_LML33=m
CONFIG_VIDEO_ZORAN_LML33R10=m
CONFIG_VIDEO_ZORAN_AVS6EYES=m
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+CONFIG_VIDEO_FB_IVTV=m
CONFIG_VIDEO_HEXIUM_GEMINI=m
CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DT3155=m
#
# Media capture/analog/hybrid TV support
CONFIG_VIDEO_CX88_ENABLE_VP3054=y
CONFIG_VIDEO_CX88_VP3054=m
CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_BT848=m
-CONFIG_DVB_BT8XX=m
CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_RC=y
CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_GO7007=m
CONFIG_VIDEO_SAA7164=m
#
# Media digital TV PCI Adapters
#
+CONFIG_DVB_AV7110_IR=y
CONFIG_DVB_AV7110=m
CONFIG_DVB_AV7110_OSD=y
CONFIG_DVB_BUDGET_CORE=m
CONFIG_DVB_PLUTO2=m
CONFIG_DVB_DM1105=m
CONFIG_DVB_PT1=m
+CONFIG_DVB_PT3=m
CONFIG_MANTIS_CORE=m
CONFIG_DVB_MANTIS=m
CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
CONFIG_DVB_DDBRIDGE=m
+CONFIG_DVB_SMIPCIE=m
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_VIDEO_CAFE_CCIC=m
# CONFIG_VIDEO_VIA_CAMERA is not set
-CONFIG_VIDEO_TIMBERDALE=m
CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_SCALE_CROP=m
CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_VIDEO_RCAR_VIN=m
-CONFIG_VIDEO_SH_MOBILE_CSI2=m
-CONFIG_VIDEO_SH_MOBILE_CEU=m
CONFIG_V4L_MEM2MEM_DRIVERS=y
CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
CONFIG_VIDEO_SH_VEU=m
-CONFIG_VIDEO_RENESAS_VSP1=m
# CONFIG_V4L_TEST_DRIVERS is not set
+CONFIG_DVB_PLATFORM_DRIVERS=y
#
# Supported MMC/SDIO adapters
#
# CONFIG_SMS_SDIO_DRV is not set
-# CONFIG_MEDIA_PARPORT_SUPPORT is not set
#
# Supported FireWire (IEEE 1394) Adapters
# common driver options
#
CONFIG_VIDEO_CX2341X=m
-CONFIG_VIDEO_BTCX=m
CONFIG_VIDEO_TVEEPROM=m
CONFIG_CYPRESS_FIRMWARE=m
CONFIG_DVB_B2C2_FLEXCOP=m
CONFIG_SMS_SIANO_RC=y
#
-# Media ancillary drivers (tuners, sensors, i2c, frontends)
+# Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
#
CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
CONFIG_MEDIA_ATTACH=y
#
# Audio decoders, processors and mixers
#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
CONFIG_VIDEO_TDA9840=m
CONFIG_VIDEO_TEA6415C=m
CONFIG_VIDEO_TEA6420=m
CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS3308=m
CONFIG_VIDEO_CS5345=m
CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_UDA1342=m
CONFIG_VIDEO_WM8775=m
CONFIG_VIDEO_WM8739=m
CONFIG_VIDEO_VP27SMPX=m
+CONFIG_VIDEO_SONY_BTF_MPX=m
#
# RDS decoders
#
# Video decoders
#
-CONFIG_VIDEO_ADV7180=m
CONFIG_VIDEO_BT819=m
CONFIG_VIDEO_BT856=m
CONFIG_VIDEO_BT866=m
CONFIG_VIDEO_SAA7110=m
CONFIG_VIDEO_SAA711X=m
CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_TW2804=m
+CONFIG_VIDEO_TW9903=m
+CONFIG_VIDEO_TW9906=m
CONFIG_VIDEO_VPX3220=m
#
#
# Camera sensor devices
#
+CONFIG_VIDEO_OV7640=m
CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9M111=m
CONFIG_VIDEO_MT9V011=m
#
CONFIG_MEDIA_TUNER_TDA18212=m
CONFIG_MEDIA_TUNER_E4000=m
CONFIG_MEDIA_TUNER_FC2580=m
-CONFIG_MEDIA_TUNER_M88TS2022=m
+CONFIG_MEDIA_TUNER_M88RS6000T=m
CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_TUNER_IT913X=m
CONFIG_MEDIA_TUNER_R820T=m
+CONFIG_MEDIA_TUNER_MXL301RF=m
+CONFIG_MEDIA_TUNER_QM1D1C0042=m
#
# Multistandard (satellite) frontends
#
CONFIG_DVB_DRXK=m
CONFIG_DVB_TDA18271C2DD=m
+CONFIG_DVB_SI2165=m
+CONFIG_DVB_MN88472=m
+CONFIG_DVB_MN88473=m
#
# DVB-S (satellite) frontends
#
-CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_MT312=m
CONFIG_DVB_ZL10036=m
CONFIG_DVB_TUA6100=m
CONFIG_DVB_CX24116=m
CONFIG_DVB_CX24117=m
+CONFIG_DVB_CX24120=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_TS2020=m
CONFIG_DVB_DS3000=m
# DVB-T (terrestrial) frontends
#
CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22700=m
CONFIG_DVB_CX22702=m
CONFIG_DVB_DRXD=m
CONFIG_DVB_CXD2820R=m
CONFIG_DVB_RTL2830=m
CONFIG_DVB_RTL2832=m
+CONFIG_DVB_SI2168=m
+CONFIG_DVB_AS102_FE=m
+CONFIG_DVB_GP8PSK_FE=m
#
# DVB-C (cable) frontends
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LGDT3306A=m
CONFIG_DVB_LG2160=m
CONFIG_DVB_S5H1409=m
CONFIG_DVB_AU8522=m
CONFIG_DVB_DIB8000=m
CONFIG_DVB_MB86A20S=m
+#
+# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_TC90522=m
+
#
# Digital terrestrial only tuners/PLL
#
#
# SEC control devices for DVB-S
#
+CONFIG_DVB_DRX39XYJ=m
CONFIG_DVB_LNBP21=m
CONFIG_DVB_LNBP22=m
CONFIG_DVB_ISL6405=m
CONFIG_DVB_ISL6421=m
CONFIG_DVB_ISL6423=m
CONFIG_DVB_A8293=m
+CONFIG_DVB_SP2=m
CONFIG_DVB_LGS8GXX=m
CONFIG_DVB_ATBM8830=m
CONFIG_DVB_TDA665x=m
-CONFIG_DVB_DVBSKY_M88DS3103=m
-CONFIG_DVB_M88DC2800=m
CONFIG_DVB_IX2505V=m
-CONFIG_DVB_IT913X_FE=m
CONFIG_DVB_M88RS2000=m
CONFIG_DVB_AF9033=m
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VGA_SWITCHEROO=y
CONFIG_DRM=m
-CONFIG_DRM_USB=m
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
CONFIG_DRM_TTM=m
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
CONFIG_DRM_I2C_NXP_TDA998X=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
-# CONFIG_DRM_RADEON_UMS is not set
+# CONFIG_DRM_RADEON_USERPTR is not set
+CONFIG_DRM_AMDGPU=m
+# CONFIG_DRM_AMDGPU_SI is not set
+# CONFIG_DRM_AMDGPU_CIK is not set
+# CONFIG_DRM_AMDGPU_USERPTR is not set
+# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-CONFIG_DRM_I810=m
CONFIG_DRM_I915=m
-CONFIG_DRM_I915_KMS=y
-CONFIG_DRM_I915_FBDEV=y
CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y
-# CONFIG_DRM_I915_UMS is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_I915_USERPTR=y
+# CONFIG_DRM_I915_GVT is not set
+
+#
+# drm/i915 Debugging
+#
+# CONFIG_DRM_I915_WERROR is not set
+# CONFIG_DRM_I915_DEBUG is not set
+CONFIG_DRM_VGEM=m
CONFIG_DRM_VMWGFX=m
# CONFIG_DRM_VMWGFX_FBCON is not set
CONFIG_DRM_GMA500=m
CONFIG_DRM_GMA600=y
CONFIG_DRM_GMA3600=y
+# CONFIG_DRM_MEDFIELD is not set
CONFIG_DRM_UDL=m
CONFIG_DRM_AST=m
CONFIG_DRM_MGAG200=m
CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_QXL=m
CONFIG_DRM_BOCHS=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_HDMI=y
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+CONFIG_DRM_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+CONFIG_DRM_ANALOGIX_ANX78XX=m
+# CONFIG_DRM_LEGACY is not set
+
+#
+# Frame buffer Devices
+#
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
CONFIG_FB_DDC=m
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_GEODE_LX=m
CONFIG_FB_GEODE_GX=m
CONFIG_FB_GEODE_GX1=m
-# CONFIG_FB_TMIO is not set
# CONFIG_FB_SM501 is not set
CONFIG_FB_SMSCUFX=m
CONFIG_FB_UDL=m
-# CONFIG_FB_GOLDFISH is not set
+CONFIG_FB_IBM_GXT4500=m
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_AUO_K190X is not set
CONFIG_FB_HYPERV=m
CONFIG_FB_SIMPLE=y
-# CONFIG_EXYNOS_VIDEO is not set
+CONFIG_FB_SM712=m
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_PLATFORM=m
# CONFIG_BACKLIGHT_LM3533 is not set
# CONFIG_BACKLIGHT_CARILLO_RANCH is not set
CONFIG_BACKLIGHT_APPLE=m
+CONFIG_BACKLIGHT_PM8941_WLED=m
# CONFIG_BACKLIGHT_SAHARA is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
-# CONFIG_BACKLIGHT_LP855X is not set
-# CONFIG_BACKLIGHT_OT200 is not set
# CONFIG_BACKLIGHT_GPIO is not set
# CONFIG_BACKLIGHT_LV5207LP is not set
# CONFIG_BACKLIGHT_BD6107 is not set
+CONFIG_VGASTATE=m
+CONFIG_HDMI=y
#
# Console display driver support
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
CONFIG_MDA_CONSOLE=m
CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCM_TIMER=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_HRTIMER=m
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_MAX_CARDS=32
# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_PROC_FS=y
CONFIG_SND_VERBOSE_PROCFS=y
CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DEBUG=y
# CONFIG_SND_DEBUG_VERBOSE is not set
CONFIG_SND_PCM_XRUN_DEBUG=y
CONFIG_SND_VMASTER=y
-CONFIG_SND_KCTL_JACK=y
CONFIG_SND_DMA_SGBUF=y
CONFIG_SND_RAWMIDI_SEQ=m
CONFIG_SND_OPL3_LIB_SEQ=m
CONFIG_SND_ES1968=m
CONFIG_SND_ES1968_INPUT=y
CONFIG_SND_FM801=m
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_HDA_HWDEP=y
-CONFIG_SND_HDA_RECONFIG=y
-CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=1
-CONFIG_SND_HDA_INPUT_JACK=y
-# CONFIG_SND_HDA_PATCH_LOADER is not set
-CONFIG_SND_HDA_CODEC_REALTEK=m
-CONFIG_SND_HDA_CODEC_ANALOG=m
-CONFIG_SND_HDA_CODEC_SIGMATEL=m
-CONFIG_SND_HDA_CODEC_VIA=m
-CONFIG_SND_HDA_CODEC_HDMI=m
-CONFIG_SND_HDA_I915=y
-CONFIG_SND_HDA_CODEC_CIRRUS=m
-CONFIG_SND_HDA_CODEC_CONEXANT=m
-CONFIG_SND_HDA_CODEC_CA0110=m
-CONFIG_SND_HDA_CODEC_CA0132=m
-# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-CONFIG_SND_HDA_CODEC_CMEDIA=m
-CONFIG_SND_HDA_CODEC_SI3054=m
-CONFIG_SND_HDA_GENERIC=m
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
CONFIG_SND_HDSP=m
CONFIG_SND_HDSPM=m
CONFIG_SND_ICE1712=m
CONFIG_SND_VIRTUOSO=m
CONFIG_SND_VX222=m
CONFIG_SND_YMFPCI=m
+
+#
+# HD-Audio
+#
+CONFIG_SND_HDA=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
+# CONFIG_SND_HDA_PATCH_LOADER is not set
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_GENERIC=m
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_CORE=m
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_PREALLOC_SIZE=64
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_UA101=m
CONFIG_SND_USB_US122L=m
CONFIG_SND_USB_6FIRE=m
CONFIG_SND_USB_HIFACE=m
+CONFIG_SND_BCD2000=m
+CONFIG_SND_USB_LINE6=m
+CONFIG_SND_USB_POD=m
+CONFIG_SND_USB_PODHD=m
+CONFIG_SND_USB_TONEPORT=m
+CONFIG_SND_USB_VARIAX=m
CONFIG_SND_FIREWIRE=y
CONFIG_SND_FIREWIRE_LIB=m
CONFIG_SND_DICE=m
-CONFIG_SND_FIREWIRE_SPEAKERS=m
+CONFIG_SND_OXFW=m
# CONFIG_SND_ISIGHT is not set
-# CONFIG_SND_SCS1X is not set
+CONFIG_SND_FIREWORKS=m
+CONFIG_SND_BEBOB=m
+CONFIG_SND_FIREWIRE_DIGI00X=m
+CONFIG_SND_FIREWIRE_TASCAM=m
CONFIG_SND_PCMCIA=y
# CONFIG_SND_VXPOCKET is not set
# CONFIG_SND_PDAUDIOCF is not set
# CONFIG_HID_ACRUX is not set
CONFIG_HID_APPLE=y
# CONFIG_HID_APPLEIR is not set
+CONFIG_HID_ASUS=m
CONFIG_HID_AUREAL=m
CONFIG_HID_BELKIN=y
+# CONFIG_HID_BETOP_FF is not set
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
+CONFIG_HID_CORSAIR=m
# CONFIG_HID_PRODIKEYS is not set
+CONFIG_HID_CMEDIA=m
+CONFIG_HID_CP2112=m
CONFIG_HID_CYPRESS=y
# CONFIG_HID_DRAGONRISE is not set
# CONFIG_HID_EMS_FF is not set
# CONFIG_HID_ELECOM is not set
# CONFIG_HID_ELO is not set
CONFIG_HID_EZKEY=y
+CONFIG_HID_GEMBIRD=m
+CONFIG_HID_GFRM=m
# CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_HUION is not set
+CONFIG_HID_GT683R=m
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=y
# CONFIG_HID_UCLOGIC is not set
CONFIG_HID_TWINHAN=m
CONFIG_HID_KENSINGTON=y
CONFIG_HID_LCPOWER=m
-CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LED=m
+CONFIG_HID_LENOVO=m
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=m
+CONFIG_HID_LOGITECH_HIDPP=m
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_HID_NTRIG is not set
CONFIG_HID_ORTEK=m
# CONFIG_HID_PANTHERLORD is not set
+CONFIG_HID_PENMOUNT=m
CONFIG_HID_PETALYNX=m
CONFIG_HID_PICOLCD=m
CONFIG_HID_PICOLCD_FB=y
CONFIG_HID_PICOLCD_LCD=y
CONFIG_HID_PICOLCD_LEDS=y
CONFIG_HID_PICOLCD_CIR=y
+CONFIG_HID_PLANTRONICS=m
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=m
CONFIG_HID_SAITEK=m
CONFIG_HID_SPEEDLINK=m
# CONFIG_HID_STEELSERIES is not set
CONFIG_HID_SUNPLUS=m
+CONFIG_HID_RMI=m
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_HYPERV_MOUSE is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_ZEROPLUS is not set
CONFIG_HID_ZYDACRON=m
CONFIG_HID_SENSOR_HUB=m
+# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set
+CONFIG_HID_ALPS=m
#
# USB HID support
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
CONFIG_USB_OTG=y
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_OTG_FSM=m
+CONFIG_USB_LEDS_TRIGGER_USBPORT=m
CONFIG_USB_MON=m
CONFIG_USB_WUSB=m
CONFIG_USB_WUSB_CBAF=m
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
CONFIG_USB_XHCI_PLATFORM=m
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_HCD_PLATFORM=y
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
CONFIG_USB_ISP1362_HCD=m
-# CONFIG_USB_FUSBH200_HCD is not set
# CONFIG_USB_FOTG210_HCD is not set
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PCI=y
CONFIG_USB_STORAGE_KARMA=m
CONFIG_USB_STORAGE_CYPRESS_ATACB=m
CONFIG_USB_STORAGE_ENE_UB6250=m
+CONFIG_USB_UAS=y
#
# USB Imaging devices
#
CONFIG_USB_MDC800=m
CONFIG_USB_MICROTEK=m
+CONFIG_USBIP_CORE=m
+CONFIG_USBIP_VHCI_HCD=m
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
+CONFIG_USBIP_HOST=m
+# CONFIG_USBIP_DEBUG is not set
# CONFIG_USB_MUSB_HDRC is not set
CONFIG_USB_DWC3=m
+# CONFIG_USB_DWC3_ULPI is not set
CONFIG_USB_DWC3_HOST=y
#
# Platform Glue Driver Support
#
-# CONFIG_USB_DWC3_EXYNOS is not set
CONFIG_USB_DWC3_PCI=m
-CONFIG_USB_DWC3_KEYSTONE=m
-
-#
-# Debugging features
-#
-# CONFIG_USB_DWC3_DEBUG is not set
# CONFIG_USB_DWC2 is not set
CONFIG_USB_CHIPIDEA=m
# CONFIG_USB_CHIPIDEA_HOST is not set
-# CONFIG_USB_CHIPIDEA_DEBUG is not set
+# CONFIG_USB_ISP1760 is not set
#
# USB port drivers
# CONFIG_USB_SERIAL_OPTICON is not set
# CONFIG_USB_SERIAL_XSENS_MT is not set
# CONFIG_USB_SERIAL_WISHBONE is not set
-CONFIG_USB_SERIAL_ZTE=m
CONFIG_USB_SERIAL_SSU100=m
CONFIG_USB_SERIAL_QT2=m
# CONFIG_USB_SERIAL_DEBUG is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_IDMOUSE is not set
CONFIG_USB_YUREX=m
CONFIG_USB_EZUSB_FX2=m
CONFIG_USB_HSIC_USB3503=m
+CONFIG_USB_HSIC_USB4604=m
+# CONFIG_USB_LINK_LAYER_TEST is not set
+CONFIG_USB_CHAOSKEY=m
+CONFIG_UCSI=y
CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
CONFIG_USB_CXACRU=m
# USB Physical Layer drivers
#
CONFIG_USB_PHY=y
-CONFIG_USB_OTG_FSM=m
# CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_SAMSUNG_USB2PHY is not set
-# CONFIG_SAMSUNG_USB3PHY is not set
# CONFIG_USB_GPIO_VBUS is not set
+CONFIG_TAHVO_USB=m
+# CONFIG_TAHVO_USB_HOST_BY_DEFAULT is not set
# CONFIG_USB_ISP1301 is not set
-# CONFIG_USB_RCAR_PHY is not set
# CONFIG_USB_GADGET is not set
+CONFIG_USB_LED_TRIG=y
+CONFIG_USB_ULPI_BUS=m
CONFIG_UWB=m
CONFIG_UWB_HWA=m
CONFIG_UWB_WHCI=m
CONFIG_UWB_I1480U=m
CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
#
# MMC/SD/SDIO Card Drivers
CONFIG_MMC_RICOH_MMC=y
CONFIG_MMC_SDHCI_ACPI=m
CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_SDHCI_PXAV3=m
-CONFIG_MMC_SDHCI_PXAV2=m
CONFIG_MMC_WBSD=m
CONFIG_MMC_TIFM_SD=m
# CONFIG_MMC_SDRICOH_CS is not set
CONFIG_MMC_VIA_SDMMC=m
CONFIG_MMC_VUB300=m
CONFIG_MMC_USHC=m
+CONFIG_MMC_USDHI6ROL0=m
CONFIG_MMC_REALTEK_PCI=m
+CONFIG_MMC_TOSHIBA_PCI=m
+CONFIG_MMC_MTK=m
CONFIG_MEMSTICK=m
# CONFIG_MEMSTICK_DEBUG is not set
CONFIG_MEMSTICK_REALTEK_PCI=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_CLASS_FLASH=m
#
# LED drivers
CONFIG_LEDS_LM3530=m
CONFIG_LEDS_LM3533=m
CONFIG_LEDS_LM3642=m
+CONFIG_LEDS_NET48XX=m
+CONFIG_LEDS_WRAP=m
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP3952=m
CONFIG_LEDS_LP55XX_COMMON=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
CONFIG_LEDS_LP5562=m
CONFIG_LEDS_LP8501=m
+CONFIG_LEDS_LP8860=m
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_PCA955X=m
CONFIG_LEDS_PCA963X=m
-CONFIG_LEDS_PCA9685=m
CONFIG_LEDS_BD2802=m
CONFIG_LEDS_INTEL_SS4200=m
CONFIG_LEDS_LT3593=m
CONFIG_LEDS_DELL_NETBOOKS=m
CONFIG_LEDS_TCA6507=m
+CONFIG_LEDS_TLC591XX=m
CONFIG_LEDS_LM355x=m
CONFIG_LEDS_OT200=m
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
CONFIG_LEDS_BLINKM=m
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_CPU=y
#
CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_LEDS_TRIGGER_NETDEV=m
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
CONFIG_EDAC=y
# CONFIG_EDAC_LEGACY_SYSFS is not set
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_DECODE_MCE=m
-CONFIG_EDAC_MCE_INJ=m
CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD64=m
+# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
# CONFIG_EDAC_AMD76X is not set
# CONFIG_EDAC_E7XXX is not set
CONFIG_EDAC_E752X=m
CONFIG_EDAC_I82975X=m
CONFIG_EDAC_I3000=m
CONFIG_EDAC_I3200=m
+CONFIG_EDAC_IE31200=m
CONFIG_EDAC_X38=m
CONFIG_EDAC_I5400=m
CONFIG_EDAC_I7CORE=m
CONFIG_EDAC_I5100=m
CONFIG_EDAC_I7300=m
CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
#
# I2C RTC drivers
#
+CONFIG_RTC_DRV_ABB5ZES3=m
+CONFIG_RTC_DRV_ABX80X=m
CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
+CONFIG_RTC_DRV_DS1307_CENTURY=y
CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
CONFIG_RTC_DRV_MAX6900=m
CONFIG_RTC_DRV_RS5C372=m
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_ISL12057=m
CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF2127=m
CONFIG_RTC_DRV_PCF8523=m
+CONFIG_RTC_DRV_PCF85063=m
CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_M41T80=m
CONFIG_RTC_DRV_BQ32K=m
# CONFIG_RTC_DRV_S35390A is not set
CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8010=m
CONFIG_RTC_DRV_RX8581=m
CONFIG_RTC_DRV_RX8025=m
CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV8803=m
#
# SPI RTC drivers
#
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
#
# Platform RTC drivers
#
CONFIG_RTC_DRV_CMOS=y
+CONFIG_RTC_DRV_VRTC=y
CONFIG_RTC_DRV_DS1286=m
CONFIG_RTC_DRV_DS1511=m
CONFIG_RTC_DRV_DS1553=m
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_DS2404=m
+CONFIG_RTC_DRV_DA9063=m
CONFIG_RTC_DRV_STK17TA8=m
# CONFIG_RTC_DRV_M48T86 is not set
CONFIG_RTC_DRV_M48T35=m
CONFIG_RTC_DRV_BQ4802=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_DS2404=m
#
# on-CPU RTC drivers
#
-CONFIG_RTC_DRV_MOXART=m
#
# HID Sensor RTC drivers
#
# DMA Devices
#
-# CONFIG_INTEL_MID_DMAC is not set
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DW_DMAC_CORE=m
-CONFIG_DW_DMAC=m
-CONFIG_DW_DMAC_PCI=m
-CONFIG_TIMB_DMA=m
-CONFIG_PCH_DMA=m
CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_DMA_ACPI=y
+CONFIG_INTEL_IDMA64=m
+CONFIG_PCH_DMA=m
+CONFIG_QCOM_HIDMA_MGMT=m
+CONFIG_QCOM_HIDMA=m
+CONFIG_DW_DMAC_CORE=y
+CONFIG_DW_DMAC=m
+CONFIG_DW_DMAC_PCI=y
+CONFIG_HSU_DMA=y
+CONFIG_HSU_DMA_PCI=y
#
# DMA Clients
#
CONFIG_ASYNC_TX_DMA=y
# CONFIG_DMATEST is not set
-CONFIG_DMA_ENGINE_RAID=y
-CONFIG_DCA=m
+
+#
+# DMABUF options
+#
+# CONFIG_SYNC_FILE is not set
# CONFIG_AUXDISPLAY is not set
CONFIG_UIO=m
# CONFIG_UIO_CIF is not set
CONFIG_UIO_SERCOS3=m
CONFIG_UIO_PCI_GENERIC=m
# CONFIG_UIO_NETX is not set
+# CONFIG_UIO_PRUSS is not set
# CONFIG_UIO_MF624 is not set
# CONFIG_VFIO is not set
+CONFIG_IRQ_BYPASS_MANAGER=m
CONFIG_VIRT_DRIVERS=y
CONFIG_VIRTIO=y
# Virtio drivers
#
CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
CONFIG_HYPERV_UTILS=m
CONFIG_HYPERV_BALLOON=m
CONFIG_STAGING=y
-CONFIG_ET131X=m
CONFIG_SLICOSS=m
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-# CONFIG_USBIP_DEBUG is not set
-# CONFIG_W35UND is not set
# CONFIG_PRISM2_USB is not set
-CONFIG_ECHO=m
# CONFIG_COMEDI is not set
-# CONFIG_PANEL is not set
-# CONFIG_R8187SE is not set
-# CONFIG_RTL8192U is not set
+CONFIG_RTL8192U=m
# CONFIG_RTLLIB is not set
-# CONFIG_R8712U is not set
-# CONFIG_R8188EU is not set
-# CONFIG_R8821AE is not set
-CONFIG_RTS5139=m
-# CONFIG_RTS5139_DEBUG is not set
+CONFIG_R8712U=m
+CONFIG_R8188EU=m
+CONFIG_88EU_AP_MODE=y
# CONFIG_RTS5208 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
# CONFIG_VT6655 is not set
# CONFIG_VT6656 is not set
-# CONFIG_DX_SEP is not set
#
# IIO staging drivers
#
# Analog to digital converters
#
-# CONFIG_AD7291 is not set
# CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
#
# Analog digital bi-direction converters
# CONFIG_TSL2583 is not set
# CONFIG_TSL2x7x is not set
-#
-# Magnetometer sensors
-#
-# CONFIG_SENSORS_HMC5843 is not set
-
#
# Active energy metering IC
#
#
# Triggers - standalone
#
-# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_WLAGS49_H2 is not set
-# CONFIG_WLAGS49_H25 is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_CRYSTALHD is not set
+CONFIG_FB_SM750=m
# CONFIG_FB_XGI is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
#
# Speakup console speech
#
# CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
# CONFIG_STAGING_MEDIA is not set
#
# Android
#
-# CONFIG_ANDROID is not set
-# CONFIG_USB_WPAN_HCD is not set
-# CONFIG_WIMAX_GDM72XX is not set
CONFIG_LTE_GDM724X=m
-# CONFIG_NET_VENDOR_SILICOM is not set
-# CONFIG_CED1401 is not set
-# CONFIG_DGRP is not set
# CONFIG_FIREWIRE_SERIAL is not set
-# CONFIG_LUSTRE_FS is not set
-# CONFIG_XILLYBUS is not set
+# CONFIG_LNET is not set
# CONFIG_DGNC is not set
-# CONFIG_DGAP is not set
+# CONFIG_GS_FPGABOOT is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_MOST is not set
+
+#
+# Old ISDN4Linux (deprecated)
+#
+# CONFIG_ISDN_DRV_ICN is not set
+# CONFIG_ISDN_DRV_PCBIT is not set
+# CONFIG_ISDN_DRV_ACT2000 is not set
+# CONFIG_KS7010 is not set
+# CONFIG_GREYBUS is not set
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_ACER_WMI=m
CONFIG_ACERHDF=m
+CONFIG_ALIENWARE_WMI=m
CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_SMBIOS=m
CONFIG_DELL_LAPTOP=m
CONFIG_DELL_WMI=m
CONFIG_DELL_WMI_AIO=m
+CONFIG_DELL_SMO8800=m
+CONFIG_DELL_RBTN=m
CONFIG_FUJITSU_LAPTOP=m
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
# CONFIG_FUJITSU_TABLET is not set
CONFIG_ASUS_WMI=m
CONFIG_ASUS_NB_WMI=m
CONFIG_EEEPC_WMI=m
+CONFIG_ASUS_WIRELESS=m
CONFIG_ACPI_WMI=m
CONFIG_MSI_WMI=m
CONFIG_TOPSTAR_LAPTOP=m
CONFIG_ACPI_TOSHIBA=m
CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_TOSHIBA_HAPS=m
+CONFIG_TOSHIBA_WMI=m
CONFIG_ACPI_CMPC=m
+CONFIG_INTEL_HID_EVENT=m
+CONFIG_INTEL_VBTN=m
+CONFIG_INTEL_SCU_IPC=y
+CONFIG_INTEL_SCU_IPC_UTIL=y
+# CONFIG_GPIO_INTEL_PMIC is not set
+# CONFIG_INTEL_MID_POWER_BUTTON is not set
+# CONFIG_INTEL_MFLD_THERMAL is not set
CONFIG_INTEL_IPS=m
+CONFIG_INTEL_IMR=y
+# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_IBM_RTL is not set
-# CONFIG_XO15_EBOOK is not set
CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
CONFIG_INTEL_OAKTRAIL=m
CONFIG_INTEL_RST=m
# CONFIG_INTEL_SMARTCONNECT is not set
CONFIG_PVPANIC=m
+CONFIG_INTEL_PMC_IPC=m
+# CONFIG_SURFACE_PRO3_BUTTON is not set
+CONFIG_INTEL_PUNIT_IPC=m
# CONFIG_CHROME_PLATFORMS is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
# Common Clock Framework
#
# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_NXP is not set
+# CONFIG_COMMON_CLK_PXA is not set
+# CONFIG_COMMON_CLK_PIC32 is not set
#
# Hardware Spinlock drivers
#
+
+#
+# Clock Source drivers
+#
CONFIG_CLKSRC_I8253=y
CONFIG_CLKEVT_I8253=y
CONFIG_I8253_LOCK=y
CONFIG_CLKBLD_I8253=y
+CONFIG_DW_APB_TIMER=y
+# CONFIG_ATMEL_PIT is not set
+# CONFIG_SH_TIMER_CMT is not set
+# CONFIG_SH_TIMER_MTU2 is not set
+# CONFIG_SH_TIMER_TMU is not set
+# CONFIG_EM_TIMER_STI is not set
CONFIG_MAILBOX=y
+# CONFIG_PCC is not set
+# CONFIG_ALTERA_MBOX is not set
CONFIG_IOMMU_API=y
CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IOVA=y
CONFIG_DMAR_TABLE=y
CONFIG_INTEL_IOMMU=y
+CONFIG_INTEL_IOMMU_SVM=y
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
CONFIG_INTEL_IOMMU_FLOPPY_WA=y
#
# Rpmsg drivers
#
-# CONFIG_PM_DEVFREQ is not set
-# CONFIG_EXTCON is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Broadcom SoC drivers
+#
+# CONFIG_SUNXI_SRAM is not set
+# CONFIG_SOC_TI is not set
+CONFIG_PM_DEVFREQ=y
+
+#
+# DEVFREQ Governors
+#
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
+CONFIG_DEVFREQ_GOV_PERFORMANCE=m
+CONFIG_DEVFREQ_GOV_POWERSAVE=m
+CONFIG_DEVFREQ_GOV_USERSPACE=m
+CONFIG_DEVFREQ_GOV_PASSIVE=m
+
+#
+# DEVFREQ Drivers
+#
+# CONFIG_PM_DEVFREQ_EVENT is not set
+CONFIG_EXTCON=m
+
+#
+# Extcon Device Drivers
+#
+# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_AXP288 is not set
+# CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_MAX3355 is not set
+# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
+# CONFIG_EXTCON_RT8973A is not set
+# CONFIG_EXTCON_SM5502 is not set
+# CONFIG_EXTCON_USB_GPIO is not set
CONFIG_MEMORY=y
CONFIG_IIO=m
CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
CONFIG_IIO_KFIFO_BUF=m
+# CONFIG_IIO_CONFIGFS is not set
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+# CONFIG_IIO_SW_DEVICE is not set
+# CONFIG_IIO_SW_TRIGGER is not set
#
# Accelerometers
#
# CONFIG_BMA180 is not set
+# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DMARD09 is not set
# CONFIG_HID_SENSOR_ACCEL_3D is not set
# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+# CONFIG_KXSD9 is not set
+# CONFIG_KXCJK1013 is not set
+# CONFIG_MC3230 is not set
+# CONFIG_MMA7455_I2C is not set
+# CONFIG_MMA7660 is not set
+# CONFIG_MMA8452 is not set
+# CONFIG_MMA9551 is not set
+# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_MXC6255 is not set
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
#
# Analog to digital converters
#
+# CONFIG_AD7291 is not set
+# CONFIG_AD799X is not set
+# CONFIG_AXP288_ADC is not set
+# CONFIG_DA9150_GPADC is not set
+# CONFIG_INA2XX_ADC is not set
+# CONFIG_LTC2485 is not set
# CONFIG_MAX1363 is not set
# CONFIG_MCP3422 is not set
# CONFIG_NAU7802 is not set
+# CONFIG_QCOM_SPMI_IADC is not set
+# CONFIG_QCOM_SPMI_VADC is not set
+# CONFIG_STX104 is not set
# CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADS1015 is not set
# CONFIG_VIPERBOARD_ADC is not set
#
# Amplifiers
#
+#
+# Chemical Sensors
+#
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_IAQCORE is not set
+# CONFIG_VZ89X is not set
+
#
# Hid Sensor IIO Common
#
CONFIG_HID_SENSOR_IIO_COMMON=m
CONFIG_HID_SENSOR_IIO_TRIGGER=m
+#
+# SSP Sensor Common
+#
+
#
# Digital to analog converters
#
# CONFIG_AD5064 is not set
# CONFIG_AD5380 is not set
# CONFIG_AD5446 is not set
+# CONFIG_AD5593R is not set
+# CONFIG_CIO_DAC is not set
+# CONFIG_M62332 is not set
# CONFIG_MAX517 is not set
# CONFIG_MCP4725 is not set
+#
+# IIO dummy driver
+#
+
#
# Frequency Synthesizers DDS/PLL
#
#
# Digital gyroscope sensors
#
+# CONFIG_BMG160 is not set
# CONFIG_HID_SENSOR_GYRO_3D is not set
# CONFIG_IIO_ST_GYRO_3AXIS is not set
# CONFIG_ITG3200 is not set
+#
+# Health Sensors
+#
+
+#
+# Heart Rate Monitors
+#
+# CONFIG_AFE4404 is not set
+# CONFIG_MAX30100 is not set
+
#
# Humidity sensors
#
+# CONFIG_AM2315 is not set
# CONFIG_DHT11 is not set
+# CONFIG_HDC100X is not set
+# CONFIG_HTU21 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
#
# Inertial measurement units
#
-# CONFIG_INV_MPU6050_IIO is not set
+# CONFIG_BMI160_I2C is not set
+# CONFIG_KMX61 is not set
+# CONFIG_INV_MPU6050_I2C is not set
#
# Light sensors
#
+# CONFIG_ACPI_ALS is not set
# CONFIG_ADJD_S311 is not set
+# CONFIG_AL3320A is not set
# CONFIG_APDS9300 is not set
+# CONFIG_APDS9960 is not set
+# CONFIG_BH1750 is not set
+# CONFIG_BH1780 is not set
# CONFIG_CM32181 is not set
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
# CONFIG_CM36651 is not set
# CONFIG_GP2AP020A00F is not set
+# CONFIG_ISL29125 is not set
# CONFIG_HID_SENSOR_ALS is not set
+# CONFIG_HID_SENSOR_PROX is not set
+# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
# CONFIG_SENSORS_LM3533 is not set
+# CONFIG_LTR501 is not set
+# CONFIG_MAX44000 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_STK3310 is not set
+# CONFIG_TCS3414 is not set
# CONFIG_TCS3472 is not set
# CONFIG_SENSORS_TSL2563 is not set
# CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
# CONFIG_VCNL4000 is not set
+# CONFIG_VEML6070 is not set
#
# Magnetometer sensors
#
# CONFIG_AK8975 is not set
+# CONFIG_AK09911 is not set
+# CONFIG_BMC150_MAGN_I2C is not set
# CONFIG_MAG3110 is not set
# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_MMC35240 is not set
# CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_SENSORS_HMC5843_I2C is not set
#
# Inclinometer sensors
#
# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set
#
# Triggers - standalone
# CONFIG_IIO_INTERRUPT_TRIGGER is not set
# CONFIG_IIO_SYSFS_TRIGGER is not set
+#
+# Digital potentiometers
+#
+# CONFIG_DS1803 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_TPL0102 is not set
+
#
# Pressure sensors
#
+# CONFIG_BMP280 is not set
+# CONFIG_HID_SENSOR_PRESS is not set
+# CONFIG_HP03 is not set
+# CONFIG_MPL115_I2C is not set
# CONFIG_MPL3115 is not set
+# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
# CONFIG_IIO_ST_PRESS is not set
+# CONFIG_T5403 is not set
+# CONFIG_HP206C is not set
+# CONFIG_ZPA2326 is not set
+
+#
+# Lightning sensors
+#
+
+#
+# Proximity sensors
+#
+# CONFIG_LIDAR_LITE_V2 is not set
+# CONFIG_SX9500 is not set
#
# Temperature sensors
#
+# CONFIG_MLX90614 is not set
# CONFIG_TMP006 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
# CONFIG_NTB is not set
# CONFIG_VME_BUS is not set
# CONFIG_PWM is not set
+CONFIG_ARM_GIC_MAX_NR=1
# CONFIG_IPACK_BUS is not set
CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_ATH79 is not set
+# CONFIG_RESET_BERLIN is not set
+# CONFIG_RESET_LPC18XX is not set
+# CONFIG_RESET_MESON is not set
+# CONFIG_RESET_PISTACHIO is not set
+# CONFIG_RESET_SOCFPGA is not set
+# CONFIG_RESET_STM32 is not set
+# CONFIG_RESET_SUNXI is not set
+# CONFIG_TI_SYSCON_RESET is not set
+# CONFIG_RESET_ZYNQ is not set
# CONFIG_FMC is not set
#
# PHY Subsystem
#
CONFIG_GENERIC_PHY=y
-# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_TUSB1210 is not set
# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+CONFIG_RAS=y
+# CONFIG_MCE_AMD_INJ is not set
+# CONFIG_THUNDERBOLT is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_LIBNVDIMM is not set
+# CONFIG_DEV_DAX is not set
+CONFIG_NVMEM=m
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
#
# Firmware Drivers
#
+# CONFIG_ARM_SCPI_PROTOCOL is not set
CONFIG_EDD=m
# CONFIG_EDD_OFF is not set
CONFIG_FIRMWARE_MEMMAP=y
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
CONFIG_ISCSI_IBFT_FIND=y
CONFIG_ISCSI_IBFT=m
+# CONFIG_FW_CFG_SYSFS is not set
# CONFIG_GOOGLE_FIRMWARE is not set
#
# EFI (Extensible Firmware Interface) Support
#
CONFIG_EFI_VARS=y
+CONFIG_EFI_ESRT=y
CONFIG_EFI_VARS_PSTORE=y
# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+# CONFIG_EFI_FAKE_MEMMAP is not set
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+CONFIG_EFI_BOOTLOADER_CONTROL=m
+# CONFIG_EFI_CAPSULE_LOADER is not set
+# CONFIG_EFI_TEST is not set
CONFIG_UEFI_CPER=y
#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
+CONFIG_EXT4_ENCRYPTION=y
+CONFIG_EXT4_FS_ENCRYPTION=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
# CONFIG_BTRFS_DEBUG is not set
CONFIG_BTRFS_ASSERT=y
# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_DAX is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
+CONFIG_EXPORTFS_BLOCK_OPS=y
CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=m
CONFIG_CUSE=m
+# CONFIG_OVERLAY_FS is not set
#
# Caches
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
# CONFIG_NTFS_FS is not set
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_CONFIGFS_FS=m
+CONFIG_EFIVAR_FS=m
CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_ECRYPT_FS is not set
# CONFIG_QNX6FS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_PSTORE=y
+CONFIG_PSTORE_ZLIB_COMPRESS=y
+# CONFIG_PSTORE_LZO_COMPRESS is not set
+# CONFIG_PSTORE_LZ4_COMPRESS is not set
# CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_PMSG is not set
# CONFIG_PSTORE_FTRACE is not set
# CONFIG_PSTORE_RAM is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_EXOFS_FS is not set
-# CONFIG_F2FS_FS is not set
-CONFIG_EFIVAR_FS=m
CONFIG_ORE=m
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_PNFS_FILE_LAYOUT=m
CONFIG_PNFS_BLOCK=m
CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
CONFIG_NFS_V4_1_MIGRATION=y
CONFIG_NFS_V4_SECURITY_LABEL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
+CONFIG_NFSD_PNFS=y
+CONFIG_NFSD_BLOCKLAYOUT=y
+CONFIG_NFSD_SCSILAYOUT=y
+CONFIG_NFSD_FLEXFILELAYOUT=y
CONFIG_NFSD_V4_SECURITY_LABEL=y
# CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=m
# CONFIG_CIFS_DEBUG is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
+# CONFIG_CIFS_SMB311 is not set
CONFIG_CIFS_FSCACHE=y
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# printk and dmesg options
#
# CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_BOOT_PRINTK_DELAY is not set
CONFIG_DYNAMIC_DEBUG=y
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_READABLE_ASM is not set
# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
CONFIG_DEBUG_FS=y
CONFIG_HEADERS_CHECK=y
# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
#
# Memory Debugging
#
+CONFIG_PAGE_EXTENSION=y
+CONFIG_PAGE_POISONING=y
+# CONFIG_PAGE_POISONING_NO_SANITY is not set
+CONFIG_PAGE_POISONING_ZERO=y
+CONFIG_DEBUG_PAGE_REF=y
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
CONFIG_SCHEDSTATS=y
+CONFIG_SCHED_STACK_END_CHECK=y
+# CONFIG_DEBUG_TIMEKEEPING is not set
CONFIG_TIMER_STATS=y
#
# Lock Debugging (spinlocks, mutexes, etc...)
#
# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_LIST=y
+# CONFIG_DEBUG_PI_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set
#
# RCU Debugging
#
+# CONFIG_PROVE_RCU is not set
# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_TORTURE_TEST is not set
+# CONFIG_RCU_PERF_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_RCU_CPU_STALL_INFO is not set
# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
-CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_NOP_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_FUNCTION_GRAPH_TRACER=y
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_SCHED_TRACER=y
+# CONFIG_HWLAT_TRACER is not set
CONFIG_FTRACE_SYSCALLS=y
CONFIG_TRACER_SNAPSHOT=y
# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
CONFIG_FTRACE_MCOUNT_RECORD=y
# CONFIG_FTRACE_STARTUP_TEST is not set
# CONFIG_MMIOTRACE is not set
+# CONFIG_HIST_TRIGGERS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_TRACE_ENUM_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
#
# Runtime Testing
# CONFIG_LKDTM is not set
# CONFIG_TEST_LIST_SORT is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
-CONFIG_RBTREE_TEST=m
+# CONFIG_RBTREE_TEST is not set
# CONFIG_INTERVAL_TREE_TEST is not set
# CONFIG_PERCPU_TEST is not set
# CONFIG_ATOMIC64_SELFTEST is not set
-CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_ASYNC_RAID6_TEST is not set
+# CONFIG_TEST_HEXDUMP is not set
# CONFIG_TEST_STRING_HELPERS is not set
# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_LKM is not set
# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
+# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
CONFIG_EARLY_PRINTK_EFI=y
+# CONFIG_X86_PTDUMP_CORE is not set
# CONFIG_X86_PTDUMP is not set
+# CONFIG_EFI_PGT_DUMP is not set
+CONFIG_DEBUG_RODATA_TEST=y
CONFIG_DEBUG_NX_TEST=m
CONFIG_DOUBLEFAULT=y
# CONFIG_DEBUG_TLBFLUSH is not set
CONFIG_DEBUG_BOOT_PARAMS=y
# CONFIG_CPA_DEBUG is not set
CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_ENTRY is not set
# CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
+# CONFIG_DEBUG_IMR_SELFTEST is not set
+# CONFIG_X86_DEBUG_FPU is not set
+# CONFIG_PUNIT_ATOM_DEBUG is not set
#
# Security options
# Grsecurity
#
CONFIG_ARCH_TRACK_EXEC_LIMIT=y
-CONFIG_PAX_USERCOPY_SLABS=y
CONFIG_GRKERNSEC=y
# CONFIG_GRKERNSEC_CONFIG_AUTO is not set
CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
# CONFIG_PAX_MPROTECT_COMPAT is not set
CONFIG_PAX_ELFRELOCS=y
# CONFIG_PAX_KERNEXEC is not set
-CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
#
# Address Space Layout Randomization
CONFIG_PAX_USERCOPY=y
# CONFIG_PAX_USERCOPY_DEBUG is not set
# CONFIG_PAX_SIZE_OVERFLOW is not set
-# CONFIG_PAX_LATENT_ENTROPY is not set
+CONFIG_PAX_INITIFY=y
+CONFIG_HAVE_PAX_INITIFY_INIT_EXIT=y
+# CONFIG_PAX_INITIFY_VERBOSE is not set
+CONFIG_PAX_LATENT_ENTROPY=y
#
# Memory Protections
# CONFIG_GRKERNSEC_KMEM is not set
CONFIG_GRKERNSEC_VM86=y
# CONFIG_GRKERNSEC_IO is not set
+CONFIG_GRKERNSEC_BPF_HARDEN=y
# CONFIG_GRKERNSEC_PERF_HARDEN is not set
CONFIG_GRKERNSEC_RAND_THREADSTACK=y
CONFIG_GRKERNSEC_PROC_MEMMAP=y
CONFIG_GRKERNSEC_PTRACE_READEXEC=y
CONFIG_GRKERNSEC_SETXID=y
CONFIG_GRKERNSEC_HARDEN_IPC=y
+CONFIG_GRKERNSEC_HARDEN_TTY=y
# CONFIG_GRKERNSEC_TPE is not set
#
CONFIG_KEYS=y
# CONFIG_PERSISTENT_KEYRINGS is not set
# CONFIG_BIG_KEYS is not set
-# CONFIG_ENCRYPTED_KEYS is not set
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_KEY_DH_OPERATIONS is not set
CONFIG_SECURITY_DMESG_RESTRICT=y
CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
+# CONFIG_SECURITYFS is not set
CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
# CONFIG_INTEL_TXT is not set
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
+CONFIG_HARDENED_USERCOPY=y
# CONFIG_SECURITY_SELINUX is not set
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_SECURITY_LOADPIN is not set
+CONFIG_INTEGRITY=y
+# CONFIG_INTEGRITY_SIGNATURE is not set
+CONFIG_INTEGRITY_AUDIT=y
# CONFIG_IMA is not set
# CONFIG_EVM is not set
CONFIG_DEFAULT_SECURITY_DAC=y
#
# Crypto core or helper
#
-CONFIG_CRYPTO_FIPS=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=m
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_DH=m
+CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
# CONFIG_CRYPTO_USER is not set
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_MCRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ABLK_HELPER=y
#
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_ECHAINIV=m
#
# Block modes
#
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y
-CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_LRW=y
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_KEYWRAP=m
#
# Hash modes
CONFIG_CRYPTO_CRC32_PCLMUL=m
CONFIG_CRYPTO_CRCT10DIF=y
CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_SHA3=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SALSA20=m
-# CONFIG_CRYPTO_SALSA20_586 is not set
+CONFIG_CRYPTO_SALSA20_586=m
+CONFIG_CRYPTO_CHACHA20=m
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SERPENT_SSE2_586=m
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_842=m
CONFIG_CRYPTO_LZ4=m
CONFIG_CRYPTO_LZ4HC=m
# Random Number Generation
#
CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+# CONFIG_CRYPTO_DRBG_HASH is not set
+# CONFIG_CRYPTO_DRBG_CTR is not set
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_USER_API=y
CONFIG_CRYPTO_USER_API_HASH=y
CONFIG_CRYPTO_USER_API_SKCIPHER=y
-CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_AEAD=m
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_PADLOCK=m
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
CONFIG_CRYPTO_DEV_GEODE=m
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
-# CONFIG_CRYPTO_DEV_CCP is not set
-CONFIG_ASYMMETRIC_KEY_TYPE=m
-CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
-CONFIG_PUBLIC_KEY_ALGO_RSA=m
-CONFIG_X509_CERTIFICATE_PARSER=m
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
+CONFIG_CRYPTO_DEV_QAT=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
+CONFIG_CRYPTO_DEV_QAT_C3XXX=m
+CONFIG_CRYPTO_DEV_QAT_C62X=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_CRYPTO_DEV_CHELSIO=m
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+
+#
+# Certificates for signature checking
+#
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_IRQFD=y
CONFIG_HAVE_KVM_IRQ_ROUTING=y
CONFIG_HAVE_KVM_EVENTFD=y
-CONFIG_KVM_APIC_ARCHITECTURE=y
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_HAVE_KVM_MSI=y
CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
CONFIG_KVM_VFIO=y
+CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
+CONFIG_HAVE_KVM_IRQ_BYPASS=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_MMU_AUDIT=y
CONFIG_KVM_DEVICE_ASSIGNMENT=y
+CONFIG_VHOST_NET=m
+# CONFIG_VHOST_VSOCK is not set
+CONFIG_VHOST=m
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
# CONFIG_LGUEST is not set
CONFIG_BINARY_PRINTF=y
#
CONFIG_RAID6_PQ=m
CONFIG_BITREVERSE=y
+# CONFIG_HAVE_ARCH_BITREVERSE is not set
+CONFIG_RATIONAL=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
CONFIG_LIBCRC32C=m
CONFIG_CRC8=m
CONFIG_AUDIT_GENERIC=y
+# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_842_COMPRESS=m
+CONFIG_842_DECOMPRESS=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_LZO_COMPRESS=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
+CONFIG_INTERVAL_TREE=y
+CONFIG_RADIX_TREE_MULTIORDER=y
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_CPU_RMAP=y
CONFIG_DQL=y
+CONFIG_GLOB=y
+# CONFIG_GLOB_SELFTEST is not set
CONFIG_NLATTR=y
-CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_AVERAGE=y
CONFIG_CLZ_TAB=y
CONFIG_CORDIC=m
# CONFIG_DDR is not set
+CONFIG_IRQ_POLL=y
CONFIG_MPILIB=m
CONFIG_OID_REGISTRY=m
CONFIG_UCS2_STRING=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
+# CONFIG_SG_SPLIT is not set
+CONFIG_SG_POOL=y
+CONFIG_ARCH_HAS_SG_CHAIN=y
+CONFIG_ARCH_HAS_MMIO_FLUSH=y
+CONFIG_SBITMAP=y
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.14.73 Kernel Configuration
+# Linux/x86 4.9.12 Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_BITS_MAX=16
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
-# CONFIG_ZONE_DMA32 is not set
-# CONFIG_AUDIT_ARCH is not set
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_HAVE_INTEL_TXT=y
CONFIG_X86_32_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
+CONFIG_PGTABLE_LEVELS=3
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
+CONFIG_THREAD_INFO_IN_TASK=y
#
# General setup
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FHANDLE=y
CONFIG_AUDIT=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_KTIME_SCALAR=y
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_GENERIC_CMOS_UPDATE=y
#
# CPU/Task time and stats accounting
#
-# CONFIG_TICK_CPU_ACCOUNTING is not set
+CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_IRQ_TIME_ACCOUNTING=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# RCU Subsystem
#
CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
-CONFIG_RCU_FANOUT=32
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FAST_NO_HZ=y
# CONFIG_TREE_RCU_TRACE is not set
-CONFIG_RCU_NOCB_CPU=y
-# CONFIG_RCU_NOCB_CPU_NONE is not set
-# CONFIG_RCU_NOCB_CPU_ZERO is not set
-CONFIG_RCU_NOCB_CPU_ALL=y
+# CONFIG_RCU_EXPEDITE_BOOT is not set
+# CONFIG_BUILD_BIN2C is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_NMI_LOG_BUF_SHIFT=13
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
-CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
# CONFIG_MEMCG is not set
-CONFIG_CGROUP_PERF=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_CFS_BANDWIDTH is not set
CONFIG_RT_GROUP_SCHED=y
-CONFIG_BLK_CGROUP=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+# CONFIG_CGROUP_DEBUG is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_BPF=y
CONFIG_EXPERT=y
CONFIG_UID16=y
+CONFIG_MULTIUSER=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
+# CONFIG_BPF_SYSCALL is not set
CONFIG_SHMEM=y
CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
CONFIG_PCI_QUIRKS=y
+CONFIG_MEMBARRIER=y
CONFIG_EMBEDDED=y
CONFIG_HAVE_PERF_EVENTS=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
+CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLUB_CPU_PARTIAL=y
-# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_DATA_VERIFICATION is not set
# CONFIG_PROFILING is not set
CONFIG_TRACEPOINTS=y
CONFIG_HAVE_OPROFILE=y
CONFIG_OPROFILE_NMI_TIMER=y
# CONFIG_KPROBES is not set
CONFIG_JUMP_LABEL=y
+CONFIG_STATIC_KEYS_SELFTEST=y
+# CONFIG_UPROBES is not set
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_NMI=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set
+CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
CONFIG_CC_STACKPROTECTOR_REGULAR=y
# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
-CONFIG_HAVE_ARCH_SOFT_DIRTY=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=8
+CONFIG_HAVE_COPY_THREAD_TLS=y
+# CONFIG_HAVE_ARCH_HASH is not set
+CONFIG_ISA_BUS_API=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OLD_SIGACTION=y
+# CONFIG_CPU_NO_EFFICIENT_FFS is not set
+# CONFIG_HAVE_ARCH_VMAP_STACK is not set
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_MODULE_SIG is not set
-CONFIG_STOP_MACHINE=y
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
CONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not set
# CONFIG_CMDLINE_PARTITION is not set
+CONFIG_BLK_MQ_PCI=y
#
# IO Schedulers
CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_RWLOCKS=y
CONFIG_FREEZER=y
#
#
CONFIG_ZONE_DMA=y
CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
+CONFIG_X86_FAST_FEATURE_TESTS=y
CONFIG_X86_MPPARSE=y
CONFIG_X86_BIGSMP=y
+# CONFIG_GOLDFISH is not set
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_GOLDFISH is not set
# CONFIG_X86_INTEL_MID is not set
+CONFIG_X86_INTEL_QUARK=y
CONFIG_X86_INTEL_LPSS=y
+CONFIG_X86_AMD_PLATFORM_DEVICE=y
+CONFIG_IOSF_MBI=y
+# CONFIG_IOSF_MBI_DEBUG is not set
# CONFIG_X86_RDC321X is not set
CONFIG_X86_32_NON_STANDARD=y
-# CONFIG_X86_NUMAQ is not set
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
# CONFIG_STA2X11 is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_ES7000 is not set
CONFIG_X86_32_IRIS=m
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_HYPERVISOR_GUEST=y
# CONFIG_PARAVIRT_SPINLOCKS is not set
CONFIG_XEN=y
CONFIG_XEN_DOM0=y
-CONFIG_XEN_PRIVILEGED_GUEST=y
CONFIG_XEN_PVHVM=y
-CONFIG_XEN_MAX_DOMAIN_MEMORY=64
CONFIG_XEN_SAVE_RESTORE=y
CONFIG_XEN_DEBUG_FS=y
CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_PARAVIRT_CLOCK=y
CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
-CONFIG_X86_UP_APIC_MSI=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
CONFIG_X86_MCE_THRESHOLD=y
# CONFIG_X86_MCE_INJECT is not set
CONFIG_X86_THERMAL_VECTOR=y
-CONFIG_VM86=y
+
+#
+# Performance monitoring
+#
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
+# CONFIG_X86_LEGACY_VM86 is not set
+# CONFIG_VM86 is not set
CONFIG_TOSHIBA=m
CONFIG_I8K=m
# CONFIG_X86_REBOOTFIXUPS is not set
-CONFIG_MICROCODE=m
+CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
CONFIG_MICROCODE_OLD_INTERFACE=y
-# CONFIG_MICROCODE_INTEL_EARLY is not set
-# CONFIG_MICROCODE_AMD_EARLY is not set
# CONFIG_X86_MSR is not set
CONFIG_X86_CPUID=y
# CONFIG_NOHIGHMEM is not set
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ILLEGAL_POINTER_VALUE=0
+CONFIG_ILLEGAL_POINTER_VALUE=0xfffff000
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_ARCH_DISCARD_MEMBLOCK=y
CONFIG_MEMORY_ISOLATION=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_MEMORY_BALLOON=y
CONFIG_BALLOON_COMPACTION=y
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_MMU_NOTIFIER=y
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
-CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
CONFIG_CLEANCACHE=y
# CONFIG_FRONTSWAP is not set
# CONFIG_CMA is not set
+# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
+CONFIG_X86_PMEM_LEGACY_DEVICE=y
+CONFIG_X86_PMEM_LEGACY=m
CONFIG_HIGHPTE=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
CONFIG_ARCH_USES_PG_UNCACHED=y
CONFIG_ARCH_RANDOM=y
CONFIG_X86_SMAP=y
+# CONFIG_X86_INTEL_MPX is not set
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_SECCOMP=y
CONFIG_CRASH_DUMP=y
CONFIG_PHYSICAL_START=0x400000
CONFIG_RELOCATABLE=y
-# CONFIG_RANDOMIZE_BASE is not set
CONFIG_X86_NEED_RELOCS=y
CONFIG_PHYSICAL_ALIGN=0x400000
CONFIG_HOTPLUG_CPU=y
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
# CONFIG_CMDLINE_BOOL is not set
-# CONFIG_DEFAULT_MODIFY_LDT_SYSCALL is not set
+CONFIG_MODIFY_LDT_SYSCALL=y
+CONFIG_DEFAULT_MODIFY_LDT_SYSCALL=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
#
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
CONFIG_HIBERNATE_CALLBACKS=y
+# CONFIG_HIBERNATION is not set
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
# CONFIG_PM_AUTOSLEEP is not set
# CONFIG_PM_WAKELOCKS is not set
-CONFIG_PM_RUNTIME=y
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_CLK=y
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
CONFIG_ACPI=y
+CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
+CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
+CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
+# CONFIG_ACPI_DEBUGGER is not set
CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
# CONFIG_ACPI_PROCFS_POWER is not set
+CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
CONFIG_ACPI_EC_DEBUGFS=m
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_FAN=y
CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_CPU_FREQ_PSS=y
+CONFIG_ACPI_PROCESSOR_CSTATE=y
+CONFIG_ACPI_PROCESSOR_IDLE=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_IPMI=m
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
+CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_PCI_SLOT=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_HOTPLUG_IOAPIC=y
CONFIG_ACPI_SBS=m
CONFIG_ACPI_HED=y
CONFIG_ACPI_CUSTOM_METHOD=m
# CONFIG_ACPI_BGRT is not set
+# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
+CONFIG_ACPI_NFIT=m
+# CONFIG_ACPI_NFIT_DEBUG is not set
+CONFIG_HAVE_ACPI_APEI=y
+CONFIG_HAVE_ACPI_APEI_NMI=y
CONFIG_ACPI_APEI=y
CONFIG_ACPI_APEI_GHES=y
CONFIG_ACPI_APEI_PCIEAER=y
CONFIG_ACPI_APEI_MEMORY_FAILURE=y
# CONFIG_ACPI_APEI_EINJ is not set
# CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_DPTF_POWER=m
+CONFIG_ACPI_WATCHDOG=y
CONFIG_ACPI_EXTLOG=m
+CONFIG_PMIC_OPREGION=y
+CONFIG_ACPI_CONFIGFS=m
CONFIG_SFI=y
CONFIG_X86_APM_BOOT=y
CONFIG_APM=y
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
CONFIG_CPU_FREQ_GOV_COMMON=y
-CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
#
-# x86 CPU frequency scaling drivers
+# CPU frequency scaling drivers
#
CONFIG_X86_INTEL_PSTATE=y
CONFIG_X86_PCC_CPUFREQ=m
# CPU Idle
#
CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
# CONFIG_PCIEASPM_POWERSAVE is not set
# CONFIG_PCIEASPM_PERFORMANCE is not set
CONFIG_PCIE_PME=y
+# CONFIG_PCIE_DPC is not set
+# CONFIG_PCIE_PTM is not set
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
CONFIG_PCI_ATS=y
CONFIG_PCI_IOV=y
# CONFIG_PCI_PRI is not set
-# CONFIG_PCI_PASID is not set
-CONFIG_PCI_IOAPIC=y
+CONFIG_PCI_PASID=y
CONFIG_PCI_LABEL=y
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_IBM is not set
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
#
# PCI host controller drivers
#
+CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_DW=y
+# CONFIG_ISA_BUS is not set
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
CONFIG_EISA=y
CONFIG_TCIC=m
CONFIG_PCMCIA_PROBE=y
CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-# CONFIG_HOTPLUG_PCI_IBM is not set
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
# CONFIG_RAPIDIO is not set
CONFIG_X86_SYSFB=y
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_ELFCORE=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_BINFMT_SCRIPT=y
CONFIG_HAVE_AOUT=y
CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y
CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_IOSF_MBI=m
+CONFIG_PMC_ATOM=y
CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_EGRESS=y
#
# Networking options
CONFIG_IP_PIMSM_V2=y
CONFIG_SYN_COOKIES=y
CONFIG_NET_IPVTI=m
+CONFIG_NET_UDP_TUNNEL=m
+CONFIG_NET_FOU=m
+CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_INET_UDP_DIAG=m
+CONFIG_INET_DIAG_DESTROY=y
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_NV=m
CONFIG_TCP_CONG_SCALABLE=m
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_CONG_BBR=m
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_MIP6=m
+CONFIG_IPV6_ILA=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_GRE=m
+CONFIG_IPV6_FOU=m
+CONFIG_IPV6_FOU_TUNNEL=m
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_PIMSM_V2=y
# CONFIG_NETLABEL is not set
CONFIG_NETWORK_SECMARK=y
+CONFIG_NET_PTP_CLASSIFY=y
# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
#
# Core Netfilter Configuration
#
+CONFIG_NETFILTER_INGRESS=y
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_ACCT=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_COMMON=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_ZONES=y
CONFIG_NF_CT_NETLINK=m
CONFIG_NF_CT_NETLINK_TIMEOUT=m
CONFIG_NF_CT_NETLINK_HELPER=m
-CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_NF_NAT_PROTO_DCCP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_SIP=m
CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=y
CONFIG_NF_TABLES_INET=m
+CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m
+CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
-CONFIG_NFT_RBTREE=m
-CONFIG_NFT_HASH=m
+CONFIG_NFT_SET_RBTREE=m
+CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m
+CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
+CONFIG_NFT_HASH=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XTABLES=y
#
CONFIG_NETFILTER_XT_TARGET_LOG=m
CONFIG_NETFILTER_XT_TARGET_IMQ=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_NAT=m
CONFIG_NETFILTER_XT_TARGET_NETMAP=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_IP_SET_BITMAP_IPMAC=m
CONFIG_IP_SET_BITMAP_PORT=m
CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPMARK=m
CONFIG_IP_SET_HASH_IPPORT=m
CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_MAC=m
CONFIG_IP_SET_HASH_NETPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETNET=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_FO=m
+CONFIG_IP_VS_OVF=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
#
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_CONNTRACK_IPV4=y
-# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
CONFIG_NF_TABLES_IPV4=m
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_DUP_IPV4=m
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_SYNPROXY=m
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_NF_CONNTRACK_IPV6=y
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NF_DUP_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_RAW=m
CONFIG_IP6_NF_SECURITY=m
-CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IP6_NF_TARGET_NPT=m
CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
-# CONFIG_BRIDGE_EBT_ULOG is not set
CONFIG_BRIDGE_EBT_NFLOG=m
# CONFIG_IP_DCCP is not set
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+CONFIG_INET_SCTP_DIAG=m
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
CONFIG_ATM=m
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_HAVE_NET_DSA=y
CONFIG_NET_DSA=y
+CONFIG_NET_DSA_HWMON=y
+CONFIG_NET_DSA_TAG_BRCM=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_DSA_TAG_TRAILER=y
+CONFIG_NET_DSA_TAG_QCA=y
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_GVRP=y
# CONFIG_VLAN_8021Q_MVRP is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
# CONFIG_IEEE802154 is not set
-CONFIG_6LOWPAN_IPHC=m
CONFIG_NET_SCHED=y
#
CONFIG_NET_CLS_FLOW=m
CONFIG_NET_CLS_CGROUP=m
CONFIG_NET_CLS_BPF=m
+CONFIG_NET_CLS_FLOWER=m
+CONFIG_NET_CLS_MATCHALL=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_ACT_SIMP=m
CONFIG_NET_ACT_SKBEDIT=m
CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
# CONFIG_DCB is not set
CONFIG_DNS_RESOLVER=y
CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BATMAN_V=y
CONFIG_BATMAN_ADV_BLA=y
CONFIG_BATMAN_ADV_DAT=y
CONFIG_BATMAN_ADV_NC=y
+CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_BATMAN_ADV_DEBUGFS=y
# CONFIG_BATMAN_ADV_DEBUG is not set
CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=y
-CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
CONFIG_VSOCKETS=m
CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_VIRTIO_VSOCKETS_COMMON=m
CONFIG_NETLINK_DIAG=m
+CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
+CONFIG_MPLS_ROUTING=m
+CONFIG_MPLS_IPTUNNEL=m
CONFIG_HSR=m
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_L3_MASTER_DEV=y
+CONFIG_NET_NCSI=y
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
-CONFIG_CGROUP_NET_PRIO=m
+CONFIG_SOCK_CGROUP_DATA=y
+CONFIG_CGROUP_NET_PRIO=y
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
CONFIG_BT=m
+CONFIG_BT_BREDR=y
CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_CMTP=m
CONFIG_BT_HIDP=m
+CONFIG_BT_HS=y
+CONFIG_BT_LE=y
+CONFIG_BT_LEDS=y
+# CONFIG_BT_SELFTEST is not set
+CONFIG_BT_DEBUGFS=y
#
# Bluetooth device drivers
#
+CONFIG_BT_INTEL=m
+CONFIG_BT_BCM=m
+CONFIG_BT_RTL=m
+CONFIG_BT_QCA=m
CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
CONFIG_BT_HCIBTSDIO=m
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_ATH3K=y
CONFIG_BT_HCIUART_LL=y
CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIUART_INTEL=y
+CONFIG_BT_HCIUART_BCM=y
+CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_AG6XX=y
+CONFIG_BT_HCIUART_MRVL=y
CONFIG_BT_HCIBCM203X=m
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
CONFIG_BT_ATH3K=m
CONFIG_BT_WILINK=m
# CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+# CONFIG_STREAM_PARSER is not set
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
CONFIG_CFG80211_WEXT=y
+CONFIG_CFG80211_WEXT_EXPORT=y
CONFIG_LIB80211=m
CONFIG_LIB80211_CRYPT_WEP=m
CONFIG_LIB80211_CRYPT_CCMP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
CONFIG_MAC80211_HAS_RC=y
-# CONFIG_MAC80211_RC_PID is not set
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_MINSTREL_VHT=y
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
CONFIG_MAC80211_MESH=y
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_MESSAGE_TRACING is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
# CONFIG_WIMAX is not set
CONFIG_RFKILL=m
CONFIG_RFKILL_LEDS=y
# CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set
# CONFIG_NFC is not set
+CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
#
# Device Drivers
#
# Generic Driver Options
#
+CONFIG_UEVENT_HELPER=y
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE=""
CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+CONFIG_WANT_DEV_COREDUMP=y
+CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
CONFIG_SYS_HYPERVISOR=y
# CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_IRQ=y
CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_FENCE_TRACE is not set
#
# Bus devices
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
# CONFIG_MTD is not set
+# CONFIG_OF is not set
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_DRBD is not set
# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_NVME=m
# CONFIG_BLK_DEV_OSD is not set
CONFIG_BLK_DEV_SX8=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_XEN_BLKDEV_FRONTEND=m
# CONFIG_BLK_DEV_HD is not set
# CONFIG_BLK_DEV_RBD is not set
CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
+CONFIG_BLK_DEV_NVME=m
+CONFIG_BLK_DEV_NVME_SCSI=y
+CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_LOOP is not set
#
# Misc devices
#
CONFIG_SENSORS_LIS3LV02D=m
# CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
CONFIG_DUMMY_IRQ=m
CONFIG_IBM_ASM=m
# CONFIG_PHANTOM is not set
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
CONFIG_ICS932S401=m
-# CONFIG_ATMEL_SSC is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_CS5535_MFGPT=m
CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
# CONFIG_ISL29003 is not set
# CONFIG_ISL29020 is not set
# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
# CONFIG_SENSORS_BH1770 is not set
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
CONFIG_DS1682=m
CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=m
-CONFIG_BMP085_I2C=m
CONFIG_PCH_PHUB=m
CONFIG_USB_SWITCH_FSA9480=m
# CONFIG_SRAM is not set
+# CONFIG_PANEL is not set
# CONFIG_C2PORT is not set
#
CONFIG_ALTERA_STAPL=m
# CONFIG_INTEL_MEI is not set
# CONFIG_INTEL_MEI_ME is not set
+# CONFIG_INTEL_MEI_TXE is not set
CONFIG_VMWARE_VMCI=m
+#
+# Intel MIC Bus Driver
+#
+
+#
+# SCIF Bus Driver
+#
+
+#
+# VOP Bus Driver
+#
+
#
# Intel MIC Host Driver
#
#
# Intel MIC Card Driver
#
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
+
+#
+# VOP Driver
+#
+CONFIG_ECHO=m
+# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_AFU_DRIVER_OPS is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_MQ_DEFAULT is not set
CONFIG_SCSI_PROC_FS=y
#
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=m
CONFIG_SCSI_SAS_ATTRS=m
CONFIG_SCSI_SAS_LIBSAS=m
CONFIG_SCSI_SAS_ATA=y
CONFIG_SCSI_SAS_HOST_SMP=y
CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_SRP_TGT_ATTRS=y
CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=m
CONFIG_ISCSI_BOOT_SYSFS=m
CONFIG_SCSI_HPSA=m
CONFIG_SCSI_3W_9XXX=m
CONFIG_SCSI_3W_SAS=m
-CONFIG_SCSI_7000FASST=m
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AHA152X=m
CONFIG_SCSI_AHA1542=m
CONFIG_SCSI_MVUMI=m
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_IN2000=m
CONFIG_SCSI_ARCMSR=m
CONFIG_SCSI_ESAS2R=m
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MAILBOX=m
CONFIG_MEGARAID_LEGACY=m
CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
CONFIG_SCSI_MPT3SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_SMARTPQI=m
CONFIG_SCSI_UFSHCD=m
CONFIG_SCSI_UFSHCD_PCI=m
+CONFIG_SCSI_UFS_DWC_TC_PCI=m
CONFIG_SCSI_UFSHCD_PLATFORM=m
+CONFIG_SCSI_UFS_DWC_TC_PLATFORM=m
CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_BUSLOGIC=m
# CONFIG_SCSI_FLASHPOINT is not set
CONFIG_VMWARE_PVSCSI=m
+CONFIG_XEN_SCSI_FRONTEND=m
CONFIG_HYPERV_STORAGE=m
CONFIG_LIBFC=m
CONFIG_LIBFCOE=m
CONFIG_FCOE=m
CONFIG_FCOE_FNIC=m
+CONFIG_SCSI_SNIC=m
+# CONFIG_SCSI_SNIC_DEBUG_FS is not set
CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_DTC3280=m
CONFIG_SCSI_EATA=m
CONFIG_SCSI_EATA_TAGGED_QUEUE=y
# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
CONFIG_SCSI_ISCI=m
CONFIG_SCSI_GENERIC_NCR5380=m
CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
-# CONFIG_SCSI_GENERIC_NCR53C400 is not set
CONFIG_SCSI_IPS=m
CONFIG_SCSI_INITIO=m
CONFIG_SCSI_INIA100=m
CONFIG_SCSI_IPR=m
CONFIG_SCSI_IPR_TRACE=y
CONFIG_SCSI_IPR_DUMP=y
-CONFIG_SCSI_PAS16=m
CONFIG_SCSI_QLOGIC_FAS=m
CONFIG_SCSI_QLOGIC_1280=m
CONFIG_SCSI_QLA_FC=m
CONFIG_SCSI_SIM710=m
CONFIG_SCSI_SYM53C416=m
CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_T128=m
-CONFIG_SCSI_U14_34F=m
-# CONFIG_SCSI_U14_34F_TAGGED_QUEUE is not set
-# CONFIG_SCSI_U14_34F_LINKED_COMMANDS is not set
-CONFIG_SCSI_U14_34F_MAX_TAGS=8
-CONFIG_SCSI_ULTRASTOR=m
+CONFIG_SCSI_AM53C974=m
CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_WD719X=m
# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_PMCRAID=m
CONFIG_SCSI_PM8001=m
-# CONFIG_SCSI_SRP is not set
CONFIG_SCSI_BFA_FC=m
CONFIG_SCSI_VIRTIO=m
CONFIG_SCSI_CHELSIO_FCOE=m
# SATA SFF controllers with BMDMA
#
CONFIG_ATA_PIIX=y
-CONFIG_SATA_HIGHBANK=m
+CONFIG_SATA_DWC=m
+# CONFIG_SATA_DWC_OLD_DMA is not set
+# CONFIG_SATA_DWC_DEBUG is not set
CONFIG_SATA_MV=m
CONFIG_SATA_NV=m
CONFIG_SATA_PROMISE=m
-CONFIG_SATA_RCAR=m
CONFIG_SATA_SIL=m
CONFIG_SATA_SIS=m
CONFIG_SATA_SVW=m
#
CONFIG_PATA_ALI=m
CONFIG_PATA_AMD=m
-CONFIG_PATA_ARASAN_CF=m
CONFIG_PATA_ARTOP=m
CONFIG_PATA_ATIIXP=m
CONFIG_PATA_ATP867X=m
CONFIG_MD_RAID456=m
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
+# CONFIG_MD_CLUSTER is not set
CONFIG_BCACHE=m
# CONFIG_BCACHE_DEBUG is not set
# CONFIG_BCACHE_CLOSURES_DEBUG is not set
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_MQ_DEFAULT is not set
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=y
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
CONFIG_DM_BIO_PRISON=m
CONFIG_DM_PERSISTENT_DATA=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=y
# CONFIG_DM_THIN_PROVISIONING is not set
CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_SMQ=m
CONFIG_DM_CACHE_CLEANER=m
+# CONFIG_DM_ERA is not set
CONFIG_DM_MIRROR=y
CONFIG_DM_LOG_USERSPACE=m
CONFIG_DM_RAID=m
CONFIG_DM_UEVENT=y
# CONFIG_DM_FLAKEY is not set
CONFIG_DM_VERITY=m
+# CONFIG_DM_VERITY_FEC is not set
CONFIG_DM_SWITCH=m
+CONFIG_DM_LOG_WRITES=m
# CONFIG_TARGET_CORE is not set
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FIREWIRE_SBP2=m
# CONFIG_FIREWIRE_NET is not set
# CONFIG_FIREWIRE_NOSY is not set
-CONFIG_I2O=m
-# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_EXT_ADAPTEC_DMA64=y
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_CONFIG_OLD_IOCTL=y
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
CONFIG_MACINTOSH_DRIVERS=y
# CONFIG_MAC_EMUMOUSEBTN is not set
CONFIG_NETDEVICES=y
# CONFIG_NET_TEAM is not set
CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
+CONFIG_IPVLAN=m
CONFIG_VXLAN=m
+CONFIG_GENEVE=m
+CONFIG_GTP=m
+CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
-CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_IMQ=m
# CONFIG_IMQ_BEHAVIOR_AA is not set
# CONFIG_IMQ_BEHAVIOR_BB is not set
CONFIG_IMQ_NUM_DEVS=2
CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
CONFIG_VETH=m
CONFIG_VIRTIO_NET=m
CONFIG_NLMON=m
+CONFIG_NET_VRF=m
CONFIG_SUNGEM_PHY=m
# CONFIG_ARCNET is not set
CONFIG_ATM_DRIVERS=y
#
# CAIF transport drivers
#
-CONFIG_VHOST_NET=m
-CONFIG_VHOST_RING=m
-CONFIG_VHOST=m
#
# Distributed Switch Architecture drivers
#
-CONFIG_NET_DSA_MV88E6XXX=y
CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
+CONFIG_NET_DSA_BCM_SF2=m
+CONFIG_B53=m
+CONFIG_B53_MDIO_DRIVER=m
+CONFIG_B53_MMAP_DRIVER=m
+CONFIG_B53_SRAB_DRIVER=m
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
+CONFIG_NET_DSA_QCA8K=m
CONFIG_ETHERNET=y
CONFIG_MDIO=m
CONFIG_NET_VENDOR_3COM=y
CONFIG_TYPHOON=m
CONFIG_NET_VENDOR_ADAPTEC=y
CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_AGERE=y
+CONFIG_ET131X=m
CONFIG_NET_VENDOR_ALTEON=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_ALTERA_TSE=m
+CONFIG_NET_VENDOR_AMAZON=y
+CONFIG_ENA_ETHERNET=m
CONFIG_NET_VENDOR_AMD=y
CONFIG_AMD8111_ETH=m
CONFIG_LANCE=m
CONFIG_ATL1E=m
CONFIG_ATL1C=m
CONFIG_ALX=m
+CONFIG_NET_VENDOR_AURORA=y
+CONFIG_AURORA_NB8800=m
CONFIG_NET_CADENCE=y
-CONFIG_ARM_AT91_ETHER=m
CONFIG_MACB=m
CONFIG_NET_VENDOR_BROADCOM=y
CONFIG_B44=m
CONFIG_B44_PCI_AUTOSELECT=y
CONFIG_B44_PCICORE_AUTOSELECT=y
CONFIG_B44_PCI=y
+CONFIG_BCMGENET=m
CONFIG_BNX2=m
CONFIG_CNIC=m
CONFIG_TIGON3=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
CONFIG_NET_VENDOR_BROCADE=y
CONFIG_BNA=m
-CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_VENDOR_CAVIUM=y
CONFIG_NET_VENDOR_CHELSIO=y
CONFIG_CHELSIO_T1=m
CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T3=m
CONFIG_CHELSIO_T4=m
CONFIG_CHELSIO_T4VF=m
+CONFIG_CHELSIO_LIB=m
CONFIG_NET_VENDOR_CIRRUS=y
CONFIG_CS89x0=m
# CONFIG_CS89x0_PLATFORM is not set
CONFIG_NET_VENDOR_CISCO=y
CONFIG_ENIC=m
+CONFIG_CX_ECAT=m
CONFIG_DNET=m
CONFIG_NET_VENDOR_DEC=y
CONFIG_NET_TULIP=y
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_NET_VENDOR_EMULEX=y
CONFIG_BE2NET=m
+CONFIG_BE2NET_HWMON=y
+CONFIG_NET_VENDOR_EZCHIP=y
CONFIG_NET_VENDOR_EXAR=y
CONFIG_S2IO=m
CONFIG_VXGE=m
CONFIG_E100=m
CONFIG_E1000=m
CONFIG_E1000E=m
+CONFIG_E1000E_HWTS=y
CONFIG_IGB=m
CONFIG_IGB_HWMON=y
-CONFIG_IGB_DCA=y
CONFIG_IGBVF=m
CONFIG_IXGB=m
CONFIG_IXGBE=m
CONFIG_IXGBE_HWMON=y
-CONFIG_IXGBE_DCA=y
CONFIG_IXGBEVF=m
CONFIG_I40E=m
-CONFIG_I40E_VXLAN=y
CONFIG_I40EVF=m
+CONFIG_FM10K=m
CONFIG_NET_VENDOR_I825XX=y
-CONFIG_IP1000=m
CONFIG_JME=m
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKGE_GENESIS=y
CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
# CONFIG_MLX5_CORE is not set
+CONFIG_MLXSW_CORE=m
+CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_SWITCHX2=m
+CONFIG_MLXSW_SPECTRUM=m
CONFIG_NET_VENDOR_MICREL=y
CONFIG_KS8842=m
CONFIG_KS8851_MLL=m
CONFIG_KSZ884X_PCI=m
CONFIG_NET_VENDOR_MYRI=y
CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
CONFIG_FEALNX=m
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NATSEMI=m
CONFIG_NS83820=m
+CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NFP_NETVF=m
+# CONFIG_NFP_NET_DEBUG is not set
CONFIG_NET_VENDOR_8390=y
CONFIG_PCMCIA_AXNET=m
CONFIG_NE2000=m
CONFIG_NET_VENDOR_OKI=y
CONFIG_PCH_GBE=m
CONFIG_ETHOC=m
-# CONFIG_NET_PACKET_ENGINE is not set
+CONFIG_NET_PACKET_ENGINE=y
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
CONFIG_NET_VENDOR_QLOGIC=y
CONFIG_QLA3XXX=m
CONFIG_QLCNIC=m
CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLCNIC_HWMON=y
CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QED_SRIOV=y
+CONFIG_QEDE=m
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_QCOM_EMAC=m
CONFIG_NET_VENDOR_REALTEK=y
CONFIG_ATP=m
CONFIG_8139CP=m
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_TUNE_TWISTER=y
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_R8169=m
-CONFIG_SH_ETH=m
+CONFIG_NET_VENDOR_RENESAS=y
CONFIG_NET_VENDOR_RDC=y
CONFIG_R6040=m
+CONFIG_NET_VENDOR_ROCKER=y
+CONFIG_ROCKER=m
+CONFIG_NET_VENDOR_SAMSUNG=y
+CONFIG_SXGBE_ETH=m
CONFIG_NET_VENDOR_SEEQ=y
CONFIG_NET_VENDOR_SILAN=y
CONFIG_SC92031=m
CONFIG_SFC=m
CONFIG_SFC_MCDI_MON=y
CONFIG_SFC_SRIOV=y
+CONFIG_SFC_MCDI_LOGGING=y
CONFIG_NET_VENDOR_SMSC=y
CONFIG_SMC9194=m
CONFIG_PCMCIA_SMC91C92=m
CONFIG_SMSC9420=m
CONFIG_NET_VENDOR_STMICRO=y
CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=y
-CONFIG_STMMAC_PCI=y
-# CONFIG_STMMAC_DEBUG_FS is not set
-# CONFIG_STMMAC_DA is not set
+CONFIG_STMMAC_PLATFORM=m
+CONFIG_DWMAC_GENERIC=m
+CONFIG_STMMAC_PCI=m
CONFIG_NET_VENDOR_SUN=y
CONFIG_HAPPYMEAL=m
CONFIG_SUNGEM=m
CONFIG_CASSINI=m
CONFIG_NIU=m
+CONFIG_NET_VENDOR_SYNOPSYS=y
CONFIG_NET_VENDOR_TEHUTI=y
CONFIG_TEHUTI=m
CONFIG_NET_VENDOR_TI=y
+CONFIG_TI_CPSW_ALE=m
CONFIG_TLAN=m
CONFIG_NET_VENDOR_VIA=y
CONFIG_VIA_RHINE=m
# CONFIG_HIPPI is not set
# CONFIG_NET_SB1000 is not set
CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+
+#
+# MDIO bus device drivers
+#
+CONFIG_MDIO_BCM_UNIMAC=m
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_GPIO is not set
#
# MII PHY device drivers
#
-CONFIG_AT803X_PHY=m
CONFIG_AMD_PHY=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
+CONFIG_AQUANTIA_PHY=m
+CONFIG_AT803X_PHY=m
+CONFIG_BCM7XXX_PHY=m
CONFIG_BCM87XX_PHY=m
+CONFIG_BCM_NET_PHYLIB=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_DP83848_PHY=m
+CONFIG_DP83867_PHY=m
+CONFIG_FIXED_PHY=y
CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
+CONFIG_INTEL_XWAY_PHY=m
CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_MARVELL_PHY=m
CONFIG_MICREL_PHY=m
-CONFIG_FIXED_PHY=y
-CONFIG_MDIO_BITBANG=m
-# CONFIG_MDIO_GPIO is not set
+CONFIG_MICROCHIP_PHY=m
+CONFIG_MICROSEMI_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_STE10XP=m
+CONFIG_TERANETICS_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_XILINX_GMII2RGMII=m
# CONFIG_PLIP is not set
CONFIG_PPP=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_SYNC_TTY=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-
-#
-# USB Network Adapters
-#
+CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_RTL8152=m
+CONFIG_USB_LAN78XX=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_AX88179_178A=m
CONFIG_USB_NET_PLUSB=m
CONFIG_USB_NET_MCS7830=m
CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y
CONFIG_USB_IPHETH=m
CONFIG_USB_SIERRA_NET=m
CONFIG_USB_VL600=m
+CONFIG_USB_NET_CH9200=m
CONFIG_WLAN=y
-# CONFIG_PCMCIA_RAYCS is not set
-CONFIG_LIBERTAS_THINFIRM=m
-# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_LIBERTAS_UAP=m
-CONFIG_AIRO=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AT76C50X_USB=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
+CONFIG_WLAN_VENDOR_ADMTEK=y
CONFIG_ADM8211=m
-CONFIG_MAC80211_HWSIM=m
-CONFIG_MWL8K=m
CONFIG_ATH_COMMON=m
-CONFIG_ATH_CARDS=m
+CONFIG_WLAN_VENDOR_ATH=y
# CONFIG_ATH_DEBUG is not set
CONFIG_ATH5K=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH9K_PCI=y
CONFIG_ATH9K_AHB=y
# CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_DYNACK is not set
# CONFIG_ATH9K_WOW is not set
-# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
CONFIG_ATH9K_RFKILL=y
+# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
+CONFIG_ATH9K_PCOEM=y
CONFIG_ATH9K_HTC=m
# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_ATH9K_HWRNG=y
CONFIG_CARL9170=m
CONFIG_CARL9170_LEDS=y
CONFIG_CARL9170_WPC=y
# CONFIG_ATH10K_TRACING is not set
CONFIG_WCN36XX=m
# CONFIG_WCN36XX_DEBUGFS is not set
+CONFIG_WLAN_VENDOR_ATMEL=y
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AT76C50X_USB=m
+CONFIG_WLAN_VENDOR_BROADCOM=y
CONFIG_B43=m
CONFIG_B43_BCMA=y
CONFIG_B43_SSB=y
+CONFIG_B43_BUSES_BCMA_AND_SSB=y
+# CONFIG_B43_BUSES_BCMA is not set
+# CONFIG_B43_BUSES_SSB is not set
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
-# CONFIG_B43_PCMCIA is not set
CONFIG_B43_SDIO=y
CONFIG_B43_BCMA_PIO=y
CONFIG_B43_PIO=y
+CONFIG_B43_PHY_G=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_LP=y
CONFIG_B43_PHY_HT=y
CONFIG_BRCMUTIL=m
CONFIG_BRCMSMAC=m
CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_PROTO_BCDC=y
+CONFIG_BRCMFMAC_PROTO_MSGBUF=y
CONFIG_BRCMFMAC_SDIO=y
-# CONFIG_BRCMFMAC_USB is not set
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMFMAC_PCIE=y
# CONFIG_BRCM_TRACING is not set
# CONFIG_BRCMDBG is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_HOSTAP_CS=m
+CONFIG_WLAN_VENDOR_CISCO=y
+CONFIG_AIRO=m
+CONFIG_AIRO_CS=m
+CONFIG_WLAN_VENDOR_INTEL=y
CONFIG_IPW2100=m
CONFIG_IPW2100_MONITOR=y
# CONFIG_IPW2100_DEBUG is not set
# CONFIG_IPW2200_DEBUG is not set
CONFIG_LIBIPW=m
# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLEGACY=m
+CONFIG_IWL4965=m
+CONFIG_IWL3945=m
+
+#
+# iwl3945 / iwl4965 Debugging Options
+#
+# CONFIG_IWLEGACY_DEBUG is not set
CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_LEDS=y
CONFIG_IWLDVM=m
CONFIG_IWLMVM=m
CONFIG_IWLWIFI_OPMODE_MODULAR=y
+# CONFIG_IWLWIFI_BCAST_FILTERING is not set
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
#
# Debugging Options
#
# CONFIG_IWLWIFI_DEBUG is not set
# CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLEGACY=m
-CONFIG_IWL4965=m
-CONFIG_IWL3945=m
-
-#
-# iwl3945 / iwl4965 Debugging Options
-#
-# CONFIG_IWLEGACY_DEBUG is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_MESH=y
+CONFIG_WLAN_VENDOR_INTERSIL=y
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_HOSTAP_CS=m
CONFIG_HERMES=m
# CONFIG_HERMES_PRISM is not set
CONFIG_HERMES_CACHE_FW_ON_INIT=y
CONFIG_P54_USB=m
CONFIG_P54_PCI=m
CONFIG_P54_LEDS=y
+# CONFIG_PRISM54 is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_USB=m
+CONFIG_MWL8K=m
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_MT7601U=m
+CONFIG_WLAN_VENDOR_RALINK=y
CONFIG_RT2X00=m
CONFIG_RT2400PCI=m
CONFIG_RT2500PCI=m
CONFIG_RT2X00_LIB_CRYPTO=y
CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
+CONFIG_WLAN_VENDOR_REALTEK=y
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
CONFIG_RTL_CARDS=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
CONFIG_RTL8192DE=m
CONFIG_RTL8723AE=m
+CONFIG_RTL8723BE=m
CONFIG_RTL8188EE=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8821AE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTLWIFI_PCI=m
CONFIG_RTLWIFI_USB=m
# CONFIG_RTLWIFI_DEBUG is not set
CONFIG_RTL8192C_COMMON=m
-CONFIG_WL_TI=y
+CONFIG_RTL8723_COMMON=m
+CONFIG_RTLBTCOEXIST=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_WLAN_VENDOR_RSI=y
+CONFIG_RSI_91X=m
+CONFIG_RSI_DEBUGFS=y
+CONFIG_RSI_SDIO=m
+CONFIG_RSI_USB=m
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
+CONFIG_WLAN_VENDOR_TI=y
CONFIG_WL1251=m
CONFIG_WL1251_SDIO=m
CONFIG_WL12XX=m
CONFIG_WLCORE=m
CONFIG_WLCORE_SDIO=m
CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_WLAN_VENDOR_ZYDAS=y
+CONFIG_USB_ZD1201=m
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-CONFIG_MWIFIEX_PCIE=m
-CONFIG_MWIFIEX_USB=m
-CONFIG_CW1200=m
-CONFIG_CW1200_WLAN_SDIO=m
+# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_PCMCIA_WL3501=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_USB_NET_RNDIS_WLAN=m
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_VMXNET3=m
+CONFIG_FUJITSU_ES=m
CONFIG_HYPERV_NET=m
CONFIG_ISDN=y
CONFIG_ISDN_I4L=m
CONFIG_HISAX_HFCUSB=m
CONFIG_HISAX_HFC4S8S=m
CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
-# CONFIG_ISDN_DRV_ICN is not set
-# CONFIG_ISDN_DRV_PCBIT is not set
-# CONFIG_ISDN_DRV_SC is not set
-# CONFIG_ISDN_DRV_ACT2000 is not set
CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
CONFIG_CAPI_TRACE=y
CONFIG_ISDN_CAPI_CAPI20=m
CONFIG_ISDN_CAPI_MIDDLEWARE=y
CONFIG_ISDN_CAPI_CAPIDRV=m
+# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set
#
# CAPI hardware drivers
CONFIG_MISDN_IPAC=m
CONFIG_MISDN_ISAR=m
CONFIG_ISDN_HDLC=m
+CONFIG_NVM=y
+# CONFIG_NVM_DEBUG is not set
+CONFIG_NVM_GENNVM=m
+CONFIG_NVM_RRPC=m
#
# Input device support
#
CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
# CONFIG_INPUT_FF_MEMLESS is not set
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_SPARSEKMAP=m
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ADC=m
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_CYPRESS=y
CONFIG_MOUSE_PS2_ELANTECH=y
CONFIG_MOUSE_PS2_SENTELIC=y
CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_PS2_FOCALTECH=y
+# CONFIG_MOUSE_PS2_VMMOUSE is not set
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_APPLETOUCH=m
CONFIG_MOUSE_BCM5974=m
CONFIG_MOUSE_CYAPA=m
+# CONFIG_MOUSE_ELAN_I2C is not set
# CONFIG_MOUSE_INPORT is not set
# CONFIG_MOUSE_LOGIBM is not set
# CONFIG_MOUSE_PC110PAD is not set
CONFIG_INPUT_MISC=y
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_E3X0_BUTTON is not set
CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_MMA8450 is not set
# CONFIG_INPUT_MPU3050 is not set
CONFIG_INPUT_APANEL=m
# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_BEEPER is not set
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_GPIO_DECODER is not set
# CONFIG_INPUT_WISTRON_BTNS is not set
CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_RETU_PWRBUTTON=m
+# CONFIG_INPUT_AXP20X_PEK is not set
CONFIG_INPUT_UINPUT=m
# CONFIG_INPUT_PCF8574 is not set
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+# CONFIG_INPUT_DA9063_ONKEY is not set
# CONFIG_INPUT_ADXL34X is not set
# CONFIG_INPUT_IMS_PCU is not set
# CONFIG_INPUT_CMA3000 is not set
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
+# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+# CONFIG_RMI4_CORE is not set
#
# Hardware I/O ports
# CONFIG_SERIO_PS2MULT is not set
CONFIG_SERIO_ARC_PS2=m
CONFIG_HYPERV_KEYBOARD=m
+# CONFIG_USERIO is not set
# CONFIG_GAMEPORT is not set
#
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_NONSTANDARD=y
CONFIG_ROCKETPORT=m
CONFIG_N_HDLC=m
CONFIG_N_GSM=m
# CONFIG_TRACE_SINK is not set
+CONFIG_DEVMEM=y
# CONFIG_DEVKMEM is not set
#
# Serial drivers
#
+CONFIG_SERIAL_EARLYCON=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_FINTEK=y
CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_PCI=y
# CONFIG_SERIAL_8250_CS is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
CONFIG_SERIAL_8250_RSA=y
+# CONFIG_SERIAL_8250_FSL is not set
CONFIG_SERIAL_8250_DW=m
+CONFIG_SERIAL_8250_RT288X=y
+CONFIG_SERIAL_8250_LPSS=y
+CONFIG_SERIAL_8250_MID=y
+CONFIG_SERIAL_8250_MOXA=m
#
# Non-8250 serial port support
#
-# CONFIG_SERIAL_MFD_HSU is not set
+# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_JSM=m
CONFIG_SERIAL_SCCNXP=m
+# CONFIG_SERIAL_SC16IS7XX is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
# CONFIG_IPMI_PANIC_EVENT is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
+CONFIG_IPMI_SSIF=m
CONFIG_IPMI_WATCHDOG=m
CONFIG_IPMI_POWEROFF=m
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_TIMERIOMEM=m
CONFIG_HW_RANDOM_INTEL=m
CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_ATMEL=m
CONFIG_HW_RANDOM_GEODE=m
CONFIG_HW_RANDOM_VIA=m
CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_HW_RANDOM_EXYNOS=m
CONFIG_NVRAM=y
# CONFIG_DTLK is not set
CONFIG_R3964=m
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
+# CONFIG_XILLYBUS is not set
+
+#
+# I2C support
+#
CONFIG_I2C=m
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_MUX_PCA9541=m
CONFIG_I2C_MUX_PCA954x=m
CONFIG_I2C_MUX_PINCTRL=m
+CONFIG_I2C_MUX_REG=m
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_SMBUS=m
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_DESIGNWARE_CORE=m
CONFIG_I2C_DESIGNWARE_PLATFORM=m
# CONFIG_I2C_DESIGNWARE_PCI is not set
+CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
# CONFIG_I2C_EG20T is not set
+CONFIG_I2C_EMEV2=m
# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_OCORES is not set
CONFIG_I2C_PCA_PLATFORM=m
# External I2C/SMBus adapter drivers
#
CONFIG_I2C_DIOLAN_U2C=m
+# CONFIG_I2C_DLN2 is not set
CONFIG_I2C_PARPORT=m
CONFIG_I2C_PARPORT_LIGHT=m
CONFIG_I2C_ROBOTFUZZ_OSIF=m
# CONFIG_I2C_PCA_ISA is not set
CONFIG_SCx200_ACB=m
# CONFIG_I2C_STUB is not set
+CONFIG_I2C_SLAVE=y
+# CONFIG_I2C_SLAVE_EEPROM is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_SPI is not set
+CONFIG_SPMI=m
CONFIG_HSI=m
CONFIG_HSI_BOARDINFO=y
+#
+# HSI controllers
+#
+
#
# HSI clients
#
#
# Pin controllers
#
-# CONFIG_PINMUX is not set
-# CONFIG_PINCONF is not set
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
# CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_PINCTRL_AMD is not set
CONFIG_PINCTRL_BAYTRAIL=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+# CONFIG_PINCTRL_CHERRYVIEW is not set
+# CONFIG_PINCTRL_BROXTON is not set
+# CONFIG_PINCTRL_SUNRISEPOINT is not set
CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
CONFIG_GPIO_ACPI=y
+CONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
#
-# Memory mapped GPIO drivers:
+# Memory mapped GPIO drivers
#
+# CONFIG_GPIO_AMDPT is not set
+# CONFIG_GPIO_AXP209 is not set
+# CONFIG_GPIO_DWAPB is not set
# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-CONFIG_GPIO_F7188X=m
-CONFIG_GPIO_SCH311X=m
-CONFIG_GPIO_TS5500=m
-CONFIG_GPIO_SCH=m
CONFIG_GPIO_ICH=m
-# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_LYNXPOINT is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_ZX is not set
#
-# I2C GPIO expanders:
+# Port-mapped I/O GPIO drivers
+#
+# CONFIG_GPIO_104_DIO_48E is not set
+# CONFIG_GPIO_104_IDIO_16 is not set
+# CONFIG_GPIO_104_IDI_48 is not set
+# CONFIG_GPIO_F7188X is not set
+# CONFIG_GPIO_GPIO_MM is not set
+# CONFIG_GPIO_IT87 is not set
+CONFIG_GPIO_SCH=m
+# CONFIG_GPIO_SCH311X is not set
+# CONFIG_GPIO_WS16C48 is not set
+
#
+# I2C GPIO expanders
+#
+# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_TPIC2810 is not set
+# CONFIG_GPIO_TS4900 is not set
#
-# PCI GPIO expanders:
+# MFD GPIO expanders
#
# CONFIG_GPIO_CS5535 is not set
-# CONFIG_GPIO_AMD8111 is not set
-# CONFIG_GPIO_INTEL_MID is not set
-# CONFIG_GPIO_PCH is not set
-# CONFIG_GPIO_ML_IOH is not set
-# CONFIG_GPIO_RDC321X is not set
+# CONFIG_GPIO_DLN2 is not set
#
-# SPI GPIO expanders:
-#
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# LPC GPIO expanders:
+# PCI GPIO expanders
#
+# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_RDC321X is not set
#
-# MODULbus GPIO expanders:
+# SPI or I2C GPIO expanders
#
#
-# USB GPIO expanders:
+# USB GPIO expanders
#
CONFIG_GPIO_VIPERBOARD=m
CONFIG_W1=m
CONFIG_W1_SLAVE_DS2408=m
CONFIG_W1_SLAVE_DS2408_READBACK=y
CONFIG_W1_SLAVE_DS2413=m
+CONFIG_W1_SLAVE_DS2406=m
CONFIG_W1_SLAVE_DS2423=m
CONFIG_W1_SLAVE_DS2431=m
CONFIG_W1_SLAVE_DS2433=m
CONFIG_W1_SLAVE_DS2781=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_AVS=y
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_RESTART is not set
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_BATTERY_DS2781 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_DA9150 is not set
+# CONFIG_AXP288_FUEL_GAUGE is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_CHARGER_ISP1704 is not set
# CONFIG_CHARGER_GPIO is not set
# CONFIG_CHARGER_BQ2415X is not set
# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
# CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_SMB347 is not set
-CONFIG_POWER_RESET=y
-CONFIG_POWER_AVS=y
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
+# CONFIG_AXP20X_POWER is not set
CONFIG_HWMON=y
CONFIG_HWMON_VID=m
# CONFIG_HWMON_DEBUG_CHIP is not set
CONFIG_SENSORS_K8TEMP=m
CONFIG_SENSORS_K10TEMP=m
CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_APPLESMC=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS620=m
CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_DELL_SMM=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_F71805F=m
CONFIG_SENSORS_F71882FG=m
CONFIG_SENSORS_F75375S=m
CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_G762=m
+CONFIG_SENSORS_FTSTEUTATES=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
# CONFIG_SENSORS_GPIO_FAN is not set
CONFIG_SENSORS_HIH6130=m
-CONFIG_SENSORS_HTU21=m
-CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_IBMAEM=m
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
+CONFIG_SENSORS_I5500=m
+CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_IT87=m
# CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_POWR1220 is not set
CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
+CONFIG_SENSORS_LTC4151=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4222=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LTC4260=m
+CONFIG_SENSORS_LTC4261=m
+CONFIG_SENSORS_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+CONFIG_SENSORS_MAX6639=m
+CONFIG_SENSORS_MAX6642=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MAX31790=m
+CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM73=m
CONFIG_SENSORS_LM75=m
CONFIG_SENSORS_LM90=m
CONFIG_SENSORS_LM92=m
CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_LM95234=m
CONFIG_SENSORS_LM95241=m
CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX197=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_MAX6697=m
-CONFIG_SENSORS_MCP3021=m
-CONFIG_SENSORS_NCT6775=m
-CONFIG_SENSORS_NTC_THERMISTOR=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
+CONFIG_SENSORS_NCT6683=m
+CONFIG_SENSORS_NCT6775=m
+CONFIG_SENSORS_NCT7802=m
+CONFIG_SENSORS_NCT7904=m
CONFIG_SENSORS_PCF8591=m
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_ADM1275=m
CONFIG_SENSORS_LM25066=m
# CONFIG_SENSORS_LTC2978 is not set
+# CONFIG_SENSORS_LTC3815 is not set
CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX20751=m
CONFIG_SENSORS_MAX34440=m
CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_TPS40422=m
CONFIG_SENSORS_UCD9000=m
CONFIG_SENSORS_UCD9200=m
# CONFIG_SENSORS_ZL6100 is not set
CONFIG_SENSORS_SHT15=m
CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SHT3x=m
+CONFIG_SENSORS_SHTC1=m
CONFIG_SENSORS_SIS5595=m
-# CONFIG_SENSORS_SMM665 is not set
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_EMC1403=m
# CONFIG_SENSORS_EMC2103 is not set
CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
CONFIG_SENSORS_SCH5636=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_ADC128D818=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_AMC6821=m
CONFIG_SENSORS_INA209=m
CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_INA3221=m
+CONFIG_SENSORS_TC74=m
CONFIG_SENSORS_THMC50=m
CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP103=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_VIA_CPUTEMP=m
CONFIG_SENSORS_W83L786NG=m
CONFIG_SENSORS_W83627HF=m
CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_APPLESMC=m
#
# ACPI drivers
CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=y
CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
CONFIG_THERMAL_EMULATION=y
CONFIG_INTEL_POWERCLAMP=m
CONFIG_X86_PKG_TEMP_THERMAL=m
-CONFIG_ACPI_INT3403_THERMAL=m
+CONFIG_INTEL_SOC_DTS_IOSF_CORE=m
+CONFIG_INTEL_SOC_DTS_THERMAL=m
+CONFIG_INTEL_QUARK_DTS_THERMAL=m
#
-# Texas Instruments thermal drivers
+# ACPI INT340X thermal drivers
#
+CONFIG_INT340X_THERMAL=m
+CONFIG_ACPI_THERMAL_REL=m
+CONFIG_INT3406_THERMAL=m
+CONFIG_INTEL_PCH_THERMAL=m
+CONFIG_GENERIC_ADC_THERMAL=m
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
CONFIG_WATCHDOG_NOWAYOUT=y
+# CONFIG_WATCHDOG_SYSFS is not set
#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=m
+# CONFIG_DA9063_WATCHDOG is not set
+# CONFIG_DA9062_WATCHDOG is not set
+CONFIG_WDAT_WDT=m
+CONFIG_XILINX_WATCHDOG=m
+CONFIG_ZIIRAVE_WATCHDOG=m
+CONFIG_CADENCE_WATCHDOG=m
CONFIG_DW_WATCHDOG=m
+CONFIG_MAX63XX_WATCHDOG=m
CONFIG_RETU_WATCHDOG=m
CONFIG_ACQUIRE_WDT=m
CONFIG_ADVANTECH_WDT=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_EBC_C384_WDT=m
CONFIG_F71808E_WDT=m
CONFIG_SP5100_TCO=m
CONFIG_GEODE_WDT=m
-CONFIG_SC520_WDT=m
CONFIG_SBC_FITPC2_WATCHDOG=m
CONFIG_EUROTECH_WDT=m
CONFIG_IB700_WDT=m
CONFIG_SMSC37B787_WDT=m
CONFIG_VIA_WDT=m
CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
CONFIG_W83877F_WDT=m
CONFIG_W83977F_WDT=m
CONFIG_MACHZ_WDT=m
CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_NI903X_WDT=m
CONFIG_MEN_A21_WDT=m
CONFIG_XEN_WDT=m
# USB-based Watchdog Cards
#
CONFIG_USBPCWATCHDOG=m
+
+#
+# Watchdog Pretimeout Governors
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
CONFIG_SSB_POSSIBLE=y
#
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
CONFIG_BCMA_HOST_PCI=y
CONFIG_BCMA_HOST_SOC=y
+CONFIG_BCMA_DRIVER_PCI=y
+CONFIG_BCMA_SFLASH=y
CONFIG_BCMA_DRIVER_GMAC_CMN=y
CONFIG_BCMA_DRIVER_GPIO=y
# CONFIG_BCMA_DEBUG is not set
#
CONFIG_MFD_CORE=m
CONFIG_MFD_CS5535=m
+CONFIG_MFD_BCM590XX=m
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
# CONFIG_MFD_CROS_EC is not set
+CONFIG_MFD_DA9062=m
+CONFIG_MFD_DA9063=m
+CONFIG_MFD_DA9150=m
+CONFIG_MFD_DLN2=m
+CONFIG_MFD_EXYNOS_LPASS=m
# CONFIG_MFD_MC13XXX_I2C is not set
# CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
CONFIG_LPC_ICH=m
CONFIG_LPC_SCH=m
+# CONFIG_MFD_INTEL_LPSS_ACPI is not set
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
# CONFIG_MFD_JANZ_CMODIO is not set
# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_RETU=m
# CONFIG_MFD_PCF50633 is not set
# CONFIG_UCB1400_CORE is not set
# CONFIG_MFD_RDC321X is not set
CONFIG_MFD_RTSX_PCI=m
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RTSX_USB is not set
# CONFIG_MFD_SI476X_CORE is not set
CONFIG_MFD_SM501=m
CONFIG_MFD_SM501_GPIO=y
+# CONFIG_MFD_SKY81452 is not set
# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_SYSCON is not set
+CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP3943 is not set
# CONFIG_TPS6105X is not set
# CONFIG_TPS65010 is not set
# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
# CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
CONFIG_MFD_WL1273_CORE=m
CONFIG_MFD_LM3533=m
# CONFIG_MFD_TIMBERDALE is not set
# CONFIG_MFD_TMIO is not set
CONFIG_MFD_VX855=m
# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_WM8994 is not set
# CONFIG_REGULATOR is not set
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
# CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_SDR_SUPPORT is not set
CONFIG_MEDIA_RC_SUPPORT=y
CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER_DVB is not set
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_VIDEO_V4L2=m
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_PCI_SKELETON=m
CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
+# CONFIG_V4L2_FLASH_LED_CLASS is not set
CONFIG_VIDEOBUF_GEN=m
CONFIG_VIDEOBUF_DMA_SG=m
CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DMA_CONTIG=m
CONFIG_VIDEOBUF_DVB=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
CONFIG_VIDEOBUF2_DMA_CONTIG=m
CONFIG_VIDEOBUF2_VMALLOC=m
+CONFIG_VIDEOBUF2_DMA_SG=m
+CONFIG_VIDEOBUF2_DVB=m
CONFIG_DVB_CORE=m
CONFIG_DVB_NET=y
CONFIG_TTPCI_EEPROM=m
CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_SHARP_DECODER=m
CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
+CONFIG_IR_HIX5HD2=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_ITE_CIR=m
CONFIG_IR_REDRAT3=m
CONFIG_IR_STREAMZAP=m
CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
CONFIG_RC_LOOPBACK=m
CONFIG_USB_GSPCA_BENQ=m
CONFIG_USB_GSPCA_CONEX=m
CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_DTCS033=m
CONFIG_USB_GSPCA_ETOMS=m
CONFIG_USB_GSPCA_FINEPIX=m
CONFIG_USB_GSPCA_JEILINJ=m
CONFIG_USB_GSPCA_SUNPLUS=m
CONFIG_USB_GSPCA_T613=m
CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TOUPTEK=m
CONFIG_USB_GSPCA_TV8532=m
CONFIG_USB_GSPCA_VC032X=m
CONFIG_USB_GSPCA_VICAM=m
CONFIG_VIDEO_PVRUSB2_DVB=y
# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_USBVISION=m
CONFIG_VIDEO_STK1160_COMMON=m
CONFIG_VIDEO_STK1160_AC97=y
CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+CONFIG_VIDEO_GO7007_LOADER=m
+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
#
# Analog/digital TV USB devices
#
CONFIG_VIDEO_AU0828=m
CONFIG_VIDEO_AU0828_V4L2=y
+CONFIG_VIDEO_AU0828_RC=y
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
CONFIG_VIDEO_CX231XX_ALSA=m
#
CONFIG_DVB_USB=m
# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_DIB3000MC=m
CONFIG_DVB_USB_A800=m
CONFIG_DVB_USB_DIBUSB_MB=m
CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
CONFIG_DVB_USB_CE6230=m
CONFIG_DVB_USB_EC168=m
CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_IT913X=m
CONFIG_DVB_USB_LME2510=m
CONFIG_DVB_USB_MXL111SF=m
CONFIG_DVB_USB_RTL28XXU=m
CONFIG_SMS_USB_DRV=m
CONFIG_DVB_B2C2_FLEXCOP_USB=m
# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+CONFIG_DVB_AS102=m
#
# Webcam, TV (analog/digital) USB devices
# Media capture support
#
CONFIG_VIDEO_MEYE=m
-
-#
-# Media capture/analog TV support
-#
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_IVTV_ALSA=m
-CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_TW5864=m
+CONFIG_VIDEO_TW68=m
+CONFIG_VIDEO_TW686X=m
CONFIG_VIDEO_ZORAN=m
CONFIG_VIDEO_ZORAN_DC30=m
CONFIG_VIDEO_ZORAN_ZR36060=m
CONFIG_VIDEO_ZORAN_LML33=m
CONFIG_VIDEO_ZORAN_LML33R10=m
CONFIG_VIDEO_ZORAN_AVS6EYES=m
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+CONFIG_VIDEO_FB_IVTV=m
CONFIG_VIDEO_HEXIUM_GEMINI=m
CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DT3155=m
#
# Media capture/analog/hybrid TV support
CONFIG_VIDEO_CX88_ENABLE_VP3054=y
CONFIG_VIDEO_CX88_VP3054=m
CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_BT848=m
-CONFIG_DVB_BT8XX=m
CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_RC=y
CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_GO7007=m
CONFIG_VIDEO_SAA7164=m
#
# Media digital TV PCI Adapters
#
+CONFIG_DVB_AV7110_IR=y
CONFIG_DVB_AV7110=m
CONFIG_DVB_AV7110_OSD=y
CONFIG_DVB_BUDGET_CORE=m
CONFIG_DVB_PLUTO2=m
CONFIG_DVB_DM1105=m
CONFIG_DVB_PT1=m
+CONFIG_DVB_PT3=m
CONFIG_MANTIS_CORE=m
CONFIG_DVB_MANTIS=m
CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
CONFIG_DVB_DDBRIDGE=m
+CONFIG_DVB_SMIPCIE=m
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_VIDEO_CAFE_CCIC=m
# CONFIG_VIDEO_VIA_CAMERA is not set
-CONFIG_VIDEO_TIMBERDALE=m
CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_SCALE_CROP=m
CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_VIDEO_RCAR_VIN=m
-CONFIG_VIDEO_SH_MOBILE_CSI2=m
-CONFIG_VIDEO_SH_MOBILE_CEU=m
CONFIG_V4L_MEM2MEM_DRIVERS=y
CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
CONFIG_VIDEO_SH_VEU=m
-CONFIG_VIDEO_RENESAS_VSP1=m
# CONFIG_V4L_TEST_DRIVERS is not set
+CONFIG_DVB_PLATFORM_DRIVERS=y
#
# Supported MMC/SDIO adapters
#
# CONFIG_SMS_SDIO_DRV is not set
-# CONFIG_MEDIA_PARPORT_SUPPORT is not set
#
# Supported FireWire (IEEE 1394) Adapters
# common driver options
#
CONFIG_VIDEO_CX2341X=m
-CONFIG_VIDEO_BTCX=m
CONFIG_VIDEO_TVEEPROM=m
CONFIG_CYPRESS_FIRMWARE=m
CONFIG_DVB_B2C2_FLEXCOP=m
CONFIG_SMS_SIANO_RC=y
#
-# Media ancillary drivers (tuners, sensors, i2c, frontends)
+# Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
#
CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
CONFIG_MEDIA_ATTACH=y
#
# Audio decoders, processors and mixers
#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
CONFIG_VIDEO_TDA9840=m
CONFIG_VIDEO_TEA6415C=m
CONFIG_VIDEO_TEA6420=m
CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS3308=m
CONFIG_VIDEO_CS5345=m
CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_UDA1342=m
CONFIG_VIDEO_WM8775=m
CONFIG_VIDEO_WM8739=m
CONFIG_VIDEO_VP27SMPX=m
+CONFIG_VIDEO_SONY_BTF_MPX=m
#
# RDS decoders
#
# Video decoders
#
-CONFIG_VIDEO_ADV7180=m
CONFIG_VIDEO_BT819=m
CONFIG_VIDEO_BT856=m
CONFIG_VIDEO_BT866=m
CONFIG_VIDEO_SAA7110=m
CONFIG_VIDEO_SAA711X=m
CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_TW2804=m
+CONFIG_VIDEO_TW9903=m
+CONFIG_VIDEO_TW9906=m
CONFIG_VIDEO_VPX3220=m
#
#
# Camera sensor devices
#
+CONFIG_VIDEO_OV7640=m
CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9M111=m
CONFIG_VIDEO_MT9V011=m
#
CONFIG_MEDIA_TUNER_TDA18212=m
CONFIG_MEDIA_TUNER_E4000=m
CONFIG_MEDIA_TUNER_FC2580=m
-CONFIG_MEDIA_TUNER_M88TS2022=m
+CONFIG_MEDIA_TUNER_M88RS6000T=m
CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_TUNER_IT913X=m
CONFIG_MEDIA_TUNER_R820T=m
+CONFIG_MEDIA_TUNER_MXL301RF=m
+CONFIG_MEDIA_TUNER_QM1D1C0042=m
#
# Multistandard (satellite) frontends
#
CONFIG_DVB_DRXK=m
CONFIG_DVB_TDA18271C2DD=m
+CONFIG_DVB_SI2165=m
+CONFIG_DVB_MN88472=m
+CONFIG_DVB_MN88473=m
#
# DVB-S (satellite) frontends
#
-CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_MT312=m
CONFIG_DVB_ZL10036=m
CONFIG_DVB_TUA6100=m
CONFIG_DVB_CX24116=m
CONFIG_DVB_CX24117=m
+CONFIG_DVB_CX24120=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_TS2020=m
CONFIG_DVB_DS3000=m
# DVB-T (terrestrial) frontends
#
CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22700=m
CONFIG_DVB_CX22702=m
CONFIG_DVB_DRXD=m
CONFIG_DVB_CXD2820R=m
CONFIG_DVB_RTL2830=m
CONFIG_DVB_RTL2832=m
+CONFIG_DVB_SI2168=m
+CONFIG_DVB_AS102_FE=m
+CONFIG_DVB_GP8PSK_FE=m
#
# DVB-C (cable) frontends
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LGDT3306A=m
CONFIG_DVB_LG2160=m
CONFIG_DVB_S5H1409=m
CONFIG_DVB_AU8522=m
CONFIG_DVB_DIB8000=m
CONFIG_DVB_MB86A20S=m
+#
+# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_TC90522=m
+
#
# Digital terrestrial only tuners/PLL
#
#
# SEC control devices for DVB-S
#
+CONFIG_DVB_DRX39XYJ=m
CONFIG_DVB_LNBP21=m
CONFIG_DVB_LNBP22=m
CONFIG_DVB_ISL6405=m
CONFIG_DVB_ISL6421=m
CONFIG_DVB_ISL6423=m
CONFIG_DVB_A8293=m
+CONFIG_DVB_SP2=m
CONFIG_DVB_LGS8GXX=m
CONFIG_DVB_ATBM8830=m
CONFIG_DVB_TDA665x=m
-CONFIG_DVB_DVBSKY_M88DS3103=m
-CONFIG_DVB_M88DC2800=m
CONFIG_DVB_IX2505V=m
-CONFIG_DVB_IT913X_FE=m
CONFIG_DVB_M88RS2000=m
CONFIG_DVB_AF9033=m
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VGA_SWITCHEROO=y
CONFIG_DRM=m
-CONFIG_DRM_USB=m
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
CONFIG_DRM_TTM=m
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
CONFIG_DRM_I2C_NXP_TDA998X=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
-# CONFIG_DRM_RADEON_UMS is not set
+# CONFIG_DRM_RADEON_USERPTR is not set
+CONFIG_DRM_AMDGPU=m
+# CONFIG_DRM_AMDGPU_SI is not set
+# CONFIG_DRM_AMDGPU_CIK is not set
+# CONFIG_DRM_AMDGPU_USERPTR is not set
+# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-CONFIG_DRM_I810=m
CONFIG_DRM_I915=m
-CONFIG_DRM_I915_KMS=y
-CONFIG_DRM_I915_FBDEV=y
CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y
-# CONFIG_DRM_I915_UMS is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_I915_USERPTR=y
+# CONFIG_DRM_I915_GVT is not set
+
+#
+# drm/i915 Debugging
+#
+# CONFIG_DRM_I915_WERROR is not set
+# CONFIG_DRM_I915_DEBUG is not set
+CONFIG_DRM_VGEM=m
CONFIG_DRM_VMWGFX=m
# CONFIG_DRM_VMWGFX_FBCON is not set
CONFIG_DRM_GMA500=m
CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_QXL=m
CONFIG_DRM_BOCHS=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_HDMI=y
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+CONFIG_DRM_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+CONFIG_DRM_ANALOGIX_ANX78XX=m
+# CONFIG_DRM_LEGACY is not set
+
+#
+# Frame buffer Devices
+#
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
CONFIG_FB_DDC=m
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_GEODE_LX=m
CONFIG_FB_GEODE_GX=m
CONFIG_FB_GEODE_GX1=m
-# CONFIG_FB_TMIO is not set
# CONFIG_FB_SM501 is not set
CONFIG_FB_SMSCUFX=m
CONFIG_FB_UDL=m
-# CONFIG_FB_GOLDFISH is not set
+CONFIG_FB_IBM_GXT4500=m
# CONFIG_FB_VIRTUAL is not set
CONFIG_XEN_FBDEV_FRONTEND=m
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_AUO_K190X is not set
CONFIG_FB_HYPERV=m
CONFIG_FB_SIMPLE=y
-# CONFIG_EXYNOS_VIDEO is not set
+CONFIG_FB_SM712=m
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_PLATFORM=m
# CONFIG_BACKLIGHT_LM3533 is not set
# CONFIG_BACKLIGHT_CARILLO_RANCH is not set
CONFIG_BACKLIGHT_APPLE=m
+CONFIG_BACKLIGHT_PM8941_WLED=m
# CONFIG_BACKLIGHT_SAHARA is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
-# CONFIG_BACKLIGHT_LP855X is not set
# CONFIG_BACKLIGHT_GPIO is not set
# CONFIG_BACKLIGHT_LV5207LP is not set
# CONFIG_BACKLIGHT_BD6107 is not set
+CONFIG_VGASTATE=m
+CONFIG_HDMI=y
#
# Console display driver support
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
CONFIG_MDA_CONSOLE=m
CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCM_TIMER=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_HRTIMER=m
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_MAX_CARDS=32
# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_PROC_FS=y
CONFIG_SND_VERBOSE_PROCFS=y
CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DEBUG=y
# CONFIG_SND_DEBUG_VERBOSE is not set
CONFIG_SND_PCM_XRUN_DEBUG=y
CONFIG_SND_VMASTER=y
-CONFIG_SND_KCTL_JACK=y
CONFIG_SND_DMA_SGBUF=y
CONFIG_SND_RAWMIDI_SEQ=m
CONFIG_SND_OPL3_LIB_SEQ=m
CONFIG_SND_ES1968=m
CONFIG_SND_ES1968_INPUT=y
CONFIG_SND_FM801=m
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_HDA_HWDEP=y
-CONFIG_SND_HDA_RECONFIG=y
-CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=1
-CONFIG_SND_HDA_INPUT_JACK=y
-# CONFIG_SND_HDA_PATCH_LOADER is not set
-CONFIG_SND_HDA_CODEC_REALTEK=m
-CONFIG_SND_HDA_CODEC_ANALOG=m
-CONFIG_SND_HDA_CODEC_SIGMATEL=m
-CONFIG_SND_HDA_CODEC_VIA=m
-CONFIG_SND_HDA_CODEC_HDMI=m
-CONFIG_SND_HDA_I915=y
-CONFIG_SND_HDA_CODEC_CIRRUS=m
-CONFIG_SND_HDA_CODEC_CONEXANT=m
-CONFIG_SND_HDA_CODEC_CA0110=m
-CONFIG_SND_HDA_CODEC_CA0132=m
-# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-CONFIG_SND_HDA_CODEC_CMEDIA=m
-CONFIG_SND_HDA_CODEC_SI3054=m
-CONFIG_SND_HDA_GENERIC=m
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
CONFIG_SND_HDSP=m
CONFIG_SND_HDSPM=m
CONFIG_SND_ICE1712=m
CONFIG_SND_VIRTUOSO=m
CONFIG_SND_VX222=m
CONFIG_SND_YMFPCI=m
+
+#
+# HD-Audio
+#
+CONFIG_SND_HDA=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
+# CONFIG_SND_HDA_PATCH_LOADER is not set
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_GENERIC=m
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_CORE=m
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_PREALLOC_SIZE=64
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_UA101=m
CONFIG_SND_USB_US122L=m
CONFIG_SND_USB_6FIRE=m
CONFIG_SND_USB_HIFACE=m
+CONFIG_SND_BCD2000=m
+CONFIG_SND_USB_LINE6=m
+CONFIG_SND_USB_POD=m
+CONFIG_SND_USB_PODHD=m
+CONFIG_SND_USB_TONEPORT=m
+CONFIG_SND_USB_VARIAX=m
CONFIG_SND_FIREWIRE=y
CONFIG_SND_FIREWIRE_LIB=m
-# CONFIG_SND_DICE is not set
-CONFIG_SND_FIREWIRE_SPEAKERS=m
+CONFIG_SND_DICE=m
+CONFIG_SND_OXFW=m
# CONFIG_SND_ISIGHT is not set
-# CONFIG_SND_SCS1X is not set
+CONFIG_SND_FIREWORKS=m
+CONFIG_SND_BEBOB=m
+CONFIG_SND_FIREWIRE_DIGI00X=m
+CONFIG_SND_FIREWIRE_TASCAM=m
CONFIG_SND_PCMCIA=y
# CONFIG_SND_VXPOCKET is not set
# CONFIG_SND_PDAUDIOCF is not set
# CONFIG_HID_ACRUX is not set
CONFIG_HID_APPLE=y
# CONFIG_HID_APPLEIR is not set
+CONFIG_HID_ASUS=m
CONFIG_HID_AUREAL=m
CONFIG_HID_BELKIN=y
+# CONFIG_HID_BETOP_FF is not set
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
+CONFIG_HID_CORSAIR=m
# CONFIG_HID_PRODIKEYS is not set
+CONFIG_HID_CMEDIA=m
+CONFIG_HID_CP2112=m
CONFIG_HID_CYPRESS=y
# CONFIG_HID_DRAGONRISE is not set
# CONFIG_HID_EMS_FF is not set
# CONFIG_HID_ELECOM is not set
# CONFIG_HID_ELO is not set
CONFIG_HID_EZKEY=y
+CONFIG_HID_GEMBIRD=m
+CONFIG_HID_GFRM=m
# CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_HUION is not set
+CONFIG_HID_GT683R=m
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=y
# CONFIG_HID_UCLOGIC is not set
CONFIG_HID_TWINHAN=m
CONFIG_HID_KENSINGTON=y
CONFIG_HID_LCPOWER=m
-CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LED=m
+CONFIG_HID_LENOVO=m
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=m
+CONFIG_HID_LOGITECH_HIDPP=m
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_HID_NTRIG is not set
CONFIG_HID_ORTEK=m
# CONFIG_HID_PANTHERLORD is not set
+CONFIG_HID_PENMOUNT=m
CONFIG_HID_PETALYNX=m
CONFIG_HID_PICOLCD=m
CONFIG_HID_PICOLCD_FB=y
CONFIG_HID_PICOLCD_LCD=y
CONFIG_HID_PICOLCD_LEDS=y
CONFIG_HID_PICOLCD_CIR=y
+CONFIG_HID_PLANTRONICS=m
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=m
CONFIG_HID_SAITEK=m
CONFIG_HID_SPEEDLINK=m
# CONFIG_HID_STEELSERIES is not set
CONFIG_HID_SUNPLUS=m
+CONFIG_HID_RMI=m
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_HYPERV_MOUSE is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_ZEROPLUS is not set
CONFIG_HID_ZYDACRON=m
CONFIG_HID_SENSOR_HUB=m
+# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set
+CONFIG_HID_ALPS=m
#
# USB HID support
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
CONFIG_USB_OTG=y
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_OTG_FSM=m
+CONFIG_USB_LEDS_TRIGGER_USBPORT=m
CONFIG_USB_MON=m
CONFIG_USB_WUSB=m
CONFIG_USB_WUSB_CBAF=m
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
CONFIG_USB_XHCI_PLATFORM=m
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_HCD_PLATFORM=y
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
CONFIG_USB_ISP1362_HCD=m
-# CONFIG_USB_FUSBH200_HCD is not set
# CONFIG_USB_FOTG210_HCD is not set
CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_OHCI_HCD_PCI=m
+CONFIG_USB_OHCI_HCD_PCI=y
CONFIG_USB_OHCI_HCD_PLATFORM=y
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_U132_HCD is not set
CONFIG_USB_STORAGE_KARMA=m
CONFIG_USB_STORAGE_CYPRESS_ATACB=m
CONFIG_USB_STORAGE_ENE_UB6250=m
+CONFIG_USB_UAS=y
#
# USB Imaging devices
#
CONFIG_USB_MDC800=m
CONFIG_USB_MICROTEK=m
+CONFIG_USBIP_CORE=m
+CONFIG_USBIP_VHCI_HCD=m
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
+CONFIG_USBIP_HOST=m
+# CONFIG_USBIP_DEBUG is not set
# CONFIG_USB_MUSB_HDRC is not set
CONFIG_USB_DWC3=m
+# CONFIG_USB_DWC3_ULPI is not set
CONFIG_USB_DWC3_HOST=y
#
# Platform Glue Driver Support
#
-# CONFIG_USB_DWC3_EXYNOS is not set
CONFIG_USB_DWC3_PCI=m
-CONFIG_USB_DWC3_KEYSTONE=m
-
-#
-# Debugging features
-#
-# CONFIG_USB_DWC3_DEBUG is not set
# CONFIG_USB_DWC2 is not set
CONFIG_USB_CHIPIDEA=m
# CONFIG_USB_CHIPIDEA_HOST is not set
-# CONFIG_USB_CHIPIDEA_DEBUG is not set
+# CONFIG_USB_ISP1760 is not set
#
# USB port drivers
# CONFIG_USB_SERIAL_OPTICON is not set
# CONFIG_USB_SERIAL_XSENS_MT is not set
# CONFIG_USB_SERIAL_WISHBONE is not set
-CONFIG_USB_SERIAL_ZTE=m
CONFIG_USB_SERIAL_SSU100=m
CONFIG_USB_SERIAL_QT2=m
# CONFIG_USB_SERIAL_DEBUG is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_IDMOUSE is not set
CONFIG_USB_YUREX=m
CONFIG_USB_EZUSB_FX2=m
CONFIG_USB_HSIC_USB3503=m
+CONFIG_USB_HSIC_USB4604=m
+# CONFIG_USB_LINK_LAYER_TEST is not set
+CONFIG_USB_CHAOSKEY=m
+CONFIG_UCSI=y
CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
CONFIG_USB_CXACRU=m
# USB Physical Layer drivers
#
CONFIG_USB_PHY=y
-CONFIG_USB_OTG_FSM=m
# CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_SAMSUNG_USB2PHY is not set
-# CONFIG_SAMSUNG_USB3PHY is not set
# CONFIG_USB_GPIO_VBUS is not set
+CONFIG_TAHVO_USB=m
+# CONFIG_TAHVO_USB_HOST_BY_DEFAULT is not set
# CONFIG_USB_ISP1301 is not set
-# CONFIG_USB_RCAR_PHY is not set
# CONFIG_USB_GADGET is not set
+CONFIG_USB_LED_TRIG=y
+CONFIG_USB_ULPI_BUS=m
CONFIG_UWB=m
CONFIG_UWB_HWA=m
CONFIG_UWB_WHCI=m
CONFIG_UWB_I1480U=m
CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
#
# MMC/SD/SDIO Card Drivers
CONFIG_MMC_RICOH_MMC=y
CONFIG_MMC_SDHCI_ACPI=m
CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_SDHCI_PXAV3=m
-CONFIG_MMC_SDHCI_PXAV2=m
CONFIG_MMC_WBSD=m
CONFIG_MMC_TIFM_SD=m
# CONFIG_MMC_SDRICOH_CS is not set
CONFIG_MMC_VIA_SDMMC=m
CONFIG_MMC_VUB300=m
CONFIG_MMC_USHC=m
+CONFIG_MMC_USDHI6ROL0=m
CONFIG_MMC_REALTEK_PCI=m
+CONFIG_MMC_TOSHIBA_PCI=m
+CONFIG_MMC_MTK=m
CONFIG_MEMSTICK=m
# CONFIG_MEMSTICK_DEBUG is not set
CONFIG_MEMSTICK_REALTEK_PCI=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_CLASS_FLASH=m
#
# LED drivers
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP3952=m
CONFIG_LEDS_LP55XX_COMMON=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
CONFIG_LEDS_LP5562=m
CONFIG_LEDS_LP8501=m
+CONFIG_LEDS_LP8860=m
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_PCA955X=m
CONFIG_LEDS_PCA963X=m
-CONFIG_LEDS_PCA9685=m
CONFIG_LEDS_BD2802=m
CONFIG_LEDS_INTEL_SS4200=m
CONFIG_LEDS_LT3593=m
CONFIG_LEDS_DELL_NETBOOKS=m
CONFIG_LEDS_TCA6507=m
+CONFIG_LEDS_TLC591XX=m
CONFIG_LEDS_LM355x=m
CONFIG_LEDS_OT200=m
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
CONFIG_LEDS_BLINKM=m
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_CPU=y
#
CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_LEDS_TRIGGER_NETDEV=m
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
CONFIG_EDAC=y
# CONFIG_EDAC_LEGACY_SYSFS is not set
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_DECODE_MCE=m
-CONFIG_EDAC_MCE_INJ=m
CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD64=m
+# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
# CONFIG_EDAC_AMD76X is not set
# CONFIG_EDAC_E7XXX is not set
CONFIG_EDAC_E752X=m
CONFIG_EDAC_I82975X=m
CONFIG_EDAC_I3000=m
CONFIG_EDAC_I3200=m
+CONFIG_EDAC_IE31200=m
CONFIG_EDAC_X38=m
CONFIG_EDAC_I5400=m
CONFIG_EDAC_I7CORE=m
CONFIG_EDAC_I5100=m
CONFIG_EDAC_I7300=m
CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
#
# I2C RTC drivers
#
+CONFIG_RTC_DRV_ABB5ZES3=m
+CONFIG_RTC_DRV_ABX80X=m
CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
+CONFIG_RTC_DRV_DS1307_CENTURY=y
CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
CONFIG_RTC_DRV_MAX6900=m
CONFIG_RTC_DRV_RS5C372=m
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_ISL12057=m
CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF2127=m
CONFIG_RTC_DRV_PCF8523=m
+CONFIG_RTC_DRV_PCF85063=m
CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_M41T80=m
CONFIG_RTC_DRV_BQ32K=m
# CONFIG_RTC_DRV_S35390A is not set
CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8010=m
CONFIG_RTC_DRV_RX8581=m
CONFIG_RTC_DRV_RX8025=m
CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV8803=m
#
# SPI RTC drivers
#
+CONFIG_RTC_I2C_AND_SPI=m
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
#
# Platform RTC drivers
CONFIG_RTC_DRV_DS1286=m
CONFIG_RTC_DRV_DS1511=m
CONFIG_RTC_DRV_DS1553=m
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_DS2404=m
+CONFIG_RTC_DRV_DA9063=m
CONFIG_RTC_DRV_STK17TA8=m
# CONFIG_RTC_DRV_M48T86 is not set
CONFIG_RTC_DRV_M48T35=m
CONFIG_RTC_DRV_BQ4802=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_DS2404=m
#
# on-CPU RTC drivers
#
-CONFIG_RTC_DRV_MOXART=m
#
# HID Sensor RTC drivers
#
# DMA Devices
#
-# CONFIG_INTEL_MID_DMAC is not set
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DW_DMAC_CORE=m
-CONFIG_DW_DMAC=m
-CONFIG_DW_DMAC_PCI=m
-CONFIG_TIMB_DMA=m
-CONFIG_PCH_DMA=m
CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_DMA_ACPI=y
+CONFIG_INTEL_IDMA64=m
+CONFIG_PCH_DMA=m
+CONFIG_QCOM_HIDMA_MGMT=m
+CONFIG_QCOM_HIDMA=m
+CONFIG_DW_DMAC_CORE=y
+CONFIG_DW_DMAC=m
+CONFIG_DW_DMAC_PCI=y
+CONFIG_HSU_DMA=y
#
# DMA Clients
#
CONFIG_ASYNC_TX_DMA=y
# CONFIG_DMATEST is not set
-CONFIG_DMA_ENGINE_RAID=y
-CONFIG_DCA=m
+
+#
+# DMABUF options
+#
+# CONFIG_SYNC_FILE is not set
# CONFIG_AUXDISPLAY is not set
CONFIG_UIO=m
# CONFIG_UIO_CIF is not set
CONFIG_UIO_SERCOS3=m
CONFIG_UIO_PCI_GENERIC=m
# CONFIG_UIO_NETX is not set
+# CONFIG_UIO_PRUSS is not set
# CONFIG_UIO_MF624 is not set
# CONFIG_VFIO is not set
+CONFIG_IRQ_BYPASS_MANAGER=m
CONFIG_VIRT_DRIVERS=y
CONFIG_VIRTIO=y
# Virtio drivers
#
CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
CONFIG_XEN_PRIVCMD=m
CONFIG_XEN_ACPI_PROCESSOR=m
CONFIG_XEN_HAVE_PVMMU=y
+CONFIG_XEN_AUTO_XLATE=y
+CONFIG_XEN_ACPI=y
+CONFIG_XEN_SYMS=y
+CONFIG_XEN_HAVE_VPMU=y
CONFIG_STAGING=y
-CONFIG_ET131X=m
CONFIG_SLICOSS=m
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-# CONFIG_USBIP_DEBUG is not set
-# CONFIG_W35UND is not set
# CONFIG_PRISM2_USB is not set
-CONFIG_ECHO=m
# CONFIG_COMEDI is not set
-# CONFIG_PANEL is not set
-# CONFIG_R8187SE is not set
-# CONFIG_RTL8192U is not set
+CONFIG_RTL8192U=m
# CONFIG_RTLLIB is not set
-# CONFIG_R8712U is not set
-# CONFIG_R8188EU is not set
-# CONFIG_R8821AE is not set
-CONFIG_RTS5139=m
-# CONFIG_RTS5139_DEBUG is not set
+CONFIG_R8712U=m
+CONFIG_R8188EU=m
+CONFIG_88EU_AP_MODE=y
# CONFIG_RTS5208 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
# CONFIG_VT6655 is not set
# CONFIG_VT6656 is not set
-# CONFIG_DX_SEP is not set
#
# IIO staging drivers
#
# Analog to digital converters
#
-# CONFIG_AD7291 is not set
# CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
#
# Analog digital bi-direction converters
# CONFIG_TSL2583 is not set
# CONFIG_TSL2x7x is not set
-#
-# Magnetometer sensors
-#
-# CONFIG_SENSORS_HMC5843 is not set
-
#
# Active energy metering IC
#
#
# Triggers - standalone
#
-# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_WLAGS49_H2 is not set
-# CONFIG_WLAGS49_H25 is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_CRYSTALHD is not set
+CONFIG_FB_SM750=m
# CONFIG_FB_XGI is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
#
# Speakup console speech
#
# CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
# CONFIG_STAGING_MEDIA is not set
#
# Android
#
-# CONFIG_ANDROID is not set
-# CONFIG_USB_WPAN_HCD is not set
-# CONFIG_WIMAX_GDM72XX is not set
CONFIG_LTE_GDM724X=m
-# CONFIG_NET_VENDOR_SILICOM is not set
-# CONFIG_CED1401 is not set
-# CONFIG_DGRP is not set
# CONFIG_FIREWIRE_SERIAL is not set
-# CONFIG_LUSTRE_FS is not set
-# CONFIG_XILLYBUS is not set
+# CONFIG_LNET is not set
# CONFIG_DGNC is not set
-# CONFIG_DGAP is not set
+# CONFIG_GS_FPGABOOT is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_MOST is not set
+
+#
+# Old ISDN4Linux (deprecated)
+#
+# CONFIG_ISDN_DRV_ICN is not set
+# CONFIG_ISDN_DRV_PCBIT is not set
+# CONFIG_ISDN_DRV_ACT2000 is not set
+# CONFIG_KS7010 is not set
+# CONFIG_GREYBUS is not set
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_ACER_WMI=m
CONFIG_ACERHDF=m
+CONFIG_ALIENWARE_WMI=m
CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_SMBIOS=m
CONFIG_DELL_LAPTOP=m
CONFIG_DELL_WMI=m
CONFIG_DELL_WMI_AIO=m
+CONFIG_DELL_SMO8800=m
+CONFIG_DELL_RBTN=m
CONFIG_FUJITSU_LAPTOP=m
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
# CONFIG_FUJITSU_TABLET is not set
CONFIG_ASUS_WMI=m
CONFIG_ASUS_NB_WMI=m
CONFIG_EEEPC_WMI=m
+CONFIG_ASUS_WIRELESS=m
CONFIG_ACPI_WMI=m
CONFIG_MSI_WMI=m
CONFIG_TOPSTAR_LAPTOP=m
CONFIG_ACPI_TOSHIBA=m
CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_TOSHIBA_HAPS=m
+CONFIG_TOSHIBA_WMI=m
CONFIG_ACPI_CMPC=m
+CONFIG_INTEL_HID_EVENT=m
+CONFIG_INTEL_VBTN=m
CONFIG_INTEL_IPS=m
+CONFIG_INTEL_IMR=y
+# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_IBM_RTL is not set
-# CONFIG_XO15_EBOOK is not set
CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
CONFIG_INTEL_OAKTRAIL=m
CONFIG_INTEL_RST=m
# CONFIG_INTEL_SMARTCONNECT is not set
CONFIG_PVPANIC=m
+CONFIG_INTEL_PMC_IPC=m
+# CONFIG_SURFACE_PRO3_BUTTON is not set
+CONFIG_INTEL_PUNIT_IPC=m
# CONFIG_CHROME_PLATFORMS is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
# Common Clock Framework
#
# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_NXP is not set
+# CONFIG_COMMON_CLK_PXA is not set
+# CONFIG_COMMON_CLK_PIC32 is not set
#
# Hardware Spinlock drivers
#
+
+#
+# Clock Source drivers
+#
CONFIG_CLKSRC_I8253=y
CONFIG_CLKEVT_I8253=y
CONFIG_I8253_LOCK=y
CONFIG_CLKBLD_I8253=y
+# CONFIG_ATMEL_PIT is not set
+# CONFIG_SH_TIMER_CMT is not set
+# CONFIG_SH_TIMER_MTU2 is not set
+# CONFIG_SH_TIMER_TMU is not set
+# CONFIG_EM_TIMER_STI is not set
CONFIG_MAILBOX=y
+# CONFIG_PCC is not set
+# CONFIG_ALTERA_MBOX is not set
CONFIG_IOMMU_API=y
CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IOVA=y
CONFIG_DMAR_TABLE=y
CONFIG_INTEL_IOMMU=y
+CONFIG_INTEL_IOMMU_SVM=y
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
CONFIG_INTEL_IOMMU_FLOPPY_WA=y
#
# Rpmsg drivers
#
-# CONFIG_PM_DEVFREQ is not set
-# CONFIG_EXTCON is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Broadcom SoC drivers
+#
+# CONFIG_SUNXI_SRAM is not set
+# CONFIG_SOC_TI is not set
+CONFIG_PM_DEVFREQ=y
+
+#
+# DEVFREQ Governors
+#
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
+CONFIG_DEVFREQ_GOV_PERFORMANCE=m
+CONFIG_DEVFREQ_GOV_POWERSAVE=m
+CONFIG_DEVFREQ_GOV_USERSPACE=m
+CONFIG_DEVFREQ_GOV_PASSIVE=m
+
+#
+# DEVFREQ Drivers
+#
+# CONFIG_PM_DEVFREQ_EVENT is not set
+CONFIG_EXTCON=m
+
+#
+# Extcon Device Drivers
+#
+# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_AXP288 is not set
+# CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_MAX3355 is not set
+# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
+# CONFIG_EXTCON_RT8973A is not set
+# CONFIG_EXTCON_SM5502 is not set
+# CONFIG_EXTCON_USB_GPIO is not set
CONFIG_MEMORY=y
CONFIG_IIO=m
CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
CONFIG_IIO_KFIFO_BUF=m
+# CONFIG_IIO_CONFIGFS is not set
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+# CONFIG_IIO_SW_DEVICE is not set
+# CONFIG_IIO_SW_TRIGGER is not set
#
# Accelerometers
#
# CONFIG_BMA180 is not set
+# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DMARD09 is not set
# CONFIG_HID_SENSOR_ACCEL_3D is not set
# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+# CONFIG_KXSD9 is not set
+# CONFIG_KXCJK1013 is not set
+# CONFIG_MC3230 is not set
+# CONFIG_MMA7455_I2C is not set
+# CONFIG_MMA7660 is not set
+# CONFIG_MMA8452 is not set
+# CONFIG_MMA9551 is not set
+# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_MXC6255 is not set
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
#
# Analog to digital converters
#
+# CONFIG_AD7291 is not set
+# CONFIG_AD799X is not set
+# CONFIG_AXP288_ADC is not set
+# CONFIG_DA9150_GPADC is not set
+# CONFIG_INA2XX_ADC is not set
+# CONFIG_LTC2485 is not set
# CONFIG_MAX1363 is not set
# CONFIG_MCP3422 is not set
# CONFIG_NAU7802 is not set
+# CONFIG_QCOM_SPMI_IADC is not set
+# CONFIG_QCOM_SPMI_VADC is not set
+# CONFIG_STX104 is not set
# CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADS1015 is not set
# CONFIG_VIPERBOARD_ADC is not set
#
# Amplifiers
#
+#
+# Chemical Sensors
+#
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_IAQCORE is not set
+# CONFIG_VZ89X is not set
+
#
# Hid Sensor IIO Common
#
CONFIG_HID_SENSOR_IIO_COMMON=m
CONFIG_HID_SENSOR_IIO_TRIGGER=m
+#
+# SSP Sensor Common
+#
+
#
# Digital to analog converters
#
# CONFIG_AD5064 is not set
# CONFIG_AD5380 is not set
# CONFIG_AD5446 is not set
+# CONFIG_AD5593R is not set
+# CONFIG_CIO_DAC is not set
+# CONFIG_M62332 is not set
# CONFIG_MAX517 is not set
# CONFIG_MCP4725 is not set
+#
+# IIO dummy driver
+#
+
#
# Frequency Synthesizers DDS/PLL
#
#
# Digital gyroscope sensors
#
+# CONFIG_BMG160 is not set
# CONFIG_HID_SENSOR_GYRO_3D is not set
# CONFIG_IIO_ST_GYRO_3AXIS is not set
# CONFIG_ITG3200 is not set
+#
+# Health Sensors
+#
+
+#
+# Heart Rate Monitors
+#
+# CONFIG_AFE4404 is not set
+# CONFIG_MAX30100 is not set
+
#
# Humidity sensors
#
+# CONFIG_AM2315 is not set
# CONFIG_DHT11 is not set
+# CONFIG_HDC100X is not set
+# CONFIG_HTU21 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
#
# Inertial measurement units
#
-# CONFIG_INV_MPU6050_IIO is not set
+# CONFIG_BMI160_I2C is not set
+# CONFIG_KMX61 is not set
+# CONFIG_INV_MPU6050_I2C is not set
#
# Light sensors
#
+# CONFIG_ACPI_ALS is not set
# CONFIG_ADJD_S311 is not set
+# CONFIG_AL3320A is not set
# CONFIG_APDS9300 is not set
+# CONFIG_APDS9960 is not set
+# CONFIG_BH1750 is not set
+# CONFIG_BH1780 is not set
# CONFIG_CM32181 is not set
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
# CONFIG_CM36651 is not set
# CONFIG_GP2AP020A00F is not set
+# CONFIG_ISL29125 is not set
# CONFIG_HID_SENSOR_ALS is not set
+# CONFIG_HID_SENSOR_PROX is not set
+# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
# CONFIG_SENSORS_LM3533 is not set
+# CONFIG_LTR501 is not set
+# CONFIG_MAX44000 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_STK3310 is not set
+# CONFIG_TCS3414 is not set
# CONFIG_TCS3472 is not set
# CONFIG_SENSORS_TSL2563 is not set
# CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
# CONFIG_VCNL4000 is not set
+# CONFIG_VEML6070 is not set
#
# Magnetometer sensors
#
# CONFIG_AK8975 is not set
+# CONFIG_AK09911 is not set
+# CONFIG_BMC150_MAGN_I2C is not set
# CONFIG_MAG3110 is not set
# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_MMC35240 is not set
# CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_SENSORS_HMC5843_I2C is not set
#
# Inclinometer sensors
#
# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set
#
# Triggers - standalone
# CONFIG_IIO_INTERRUPT_TRIGGER is not set
# CONFIG_IIO_SYSFS_TRIGGER is not set
+#
+# Digital potentiometers
+#
+# CONFIG_DS1803 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_TPL0102 is not set
+
#
# Pressure sensors
#
+# CONFIG_BMP280 is not set
+# CONFIG_HID_SENSOR_PRESS is not set
+# CONFIG_HP03 is not set
+# CONFIG_MPL115_I2C is not set
# CONFIG_MPL3115 is not set
+# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
# CONFIG_IIO_ST_PRESS is not set
+# CONFIG_T5403 is not set
+# CONFIG_HP206C is not set
+# CONFIG_ZPA2326 is not set
+
+#
+# Lightning sensors
+#
+
+#
+# Proximity sensors
+#
+# CONFIG_LIDAR_LITE_V2 is not set
+# CONFIG_SX9500 is not set
#
# Temperature sensors
#
+# CONFIG_MLX90614 is not set
# CONFIG_TMP006 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
# CONFIG_NTB is not set
# CONFIG_VME_BUS is not set
# CONFIG_PWM is not set
+CONFIG_ARM_GIC_MAX_NR=1
# CONFIG_IPACK_BUS is not set
CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_ATH79 is not set
+# CONFIG_RESET_BERLIN is not set
+# CONFIG_RESET_LPC18XX is not set
+# CONFIG_RESET_MESON is not set
+# CONFIG_RESET_PISTACHIO is not set
+# CONFIG_RESET_SOCFPGA is not set
+# CONFIG_RESET_STM32 is not set
+# CONFIG_RESET_SUNXI is not set
+# CONFIG_TI_SYSCON_RESET is not set
+# CONFIG_RESET_ZYNQ is not set
# CONFIG_FMC is not set
#
# PHY Subsystem
#
CONFIG_GENERIC_PHY=y
-# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_TUSB1210 is not set
# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+CONFIG_RAS=y
+# CONFIG_MCE_AMD_INJ is not set
+# CONFIG_THUNDERBOLT is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+CONFIG_LIBNVDIMM=m
+CONFIG_BLK_DEV_PMEM=m
+CONFIG_ND_BLK=m
+CONFIG_ND_CLAIM=y
+CONFIG_ND_BTT=m
+CONFIG_BTT=y
+# CONFIG_DEV_DAX is not set
+CONFIG_NVMEM=m
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
#
# Firmware Drivers
#
+# CONFIG_ARM_SCPI_PROTOCOL is not set
CONFIG_EDD=m
# CONFIG_EDD_OFF is not set
CONFIG_FIRMWARE_MEMMAP=y
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
CONFIG_ISCSI_IBFT_FIND=y
CONFIG_ISCSI_IBFT=m
+# CONFIG_FW_CFG_SYSFS is not set
# CONFIG_GOOGLE_FIRMWARE is not set
#
# EFI (Extensible Firmware Interface) Support
#
CONFIG_EFI_VARS=y
+CONFIG_EFI_ESRT=y
CONFIG_EFI_VARS_PSTORE=y
# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+# CONFIG_EFI_FAKE_MEMMAP is not set
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+CONFIG_EFI_BOOTLOADER_CONTROL=m
+# CONFIG_EFI_CAPSULE_LOADER is not set
+# CONFIG_EFI_TEST is not set
CONFIG_UEFI_CPER=y
#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
+CONFIG_EXT4_ENCRYPTION=y
+CONFIG_EXT4_FS_ENCRYPTION=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
# CONFIG_BTRFS_DEBUG is not set
CONFIG_BTRFS_ASSERT=y
# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_DAX is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
+CONFIG_EXPORTFS_BLOCK_OPS=y
CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=m
CONFIG_CUSE=m
+# CONFIG_OVERLAY_FS is not set
#
# Caches
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
# CONFIG_NTFS_FS is not set
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_CONFIGFS_FS=m
+CONFIG_EFIVAR_FS=m
CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_ECRYPT_FS is not set
# CONFIG_QNX6FS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_PSTORE=y
+CONFIG_PSTORE_ZLIB_COMPRESS=y
+# CONFIG_PSTORE_LZO_COMPRESS is not set
+# CONFIG_PSTORE_LZ4_COMPRESS is not set
# CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_PMSG is not set
# CONFIG_PSTORE_FTRACE is not set
# CONFIG_PSTORE_RAM is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_EXOFS_FS is not set
-# CONFIG_F2FS_FS is not set
-CONFIG_EFIVAR_FS=m
CONFIG_ORE=m
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_PNFS_FILE_LAYOUT=m
CONFIG_PNFS_BLOCK=m
CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
CONFIG_NFS_V4_1_MIGRATION=y
CONFIG_NFS_V4_SECURITY_LABEL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
+CONFIG_NFSD_PNFS=y
+CONFIG_NFSD_BLOCKLAYOUT=y
+CONFIG_NFSD_SCSILAYOUT=y
+CONFIG_NFSD_FLEXFILELAYOUT=y
CONFIG_NFSD_V4_SECURITY_LABEL=y
# CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=m
# CONFIG_CIFS_DEBUG is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
+# CONFIG_CIFS_SMB311 is not set
CONFIG_CIFS_FSCACHE=y
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# printk and dmesg options
#
# CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_BOOT_PRINTK_DELAY is not set
CONFIG_DYNAMIC_DEBUG=y
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_READABLE_ASM is not set
# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
CONFIG_DEBUG_FS=y
CONFIG_HEADERS_CHECK=y
# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
#
# Memory Debugging
#
+CONFIG_PAGE_EXTENSION=y
+CONFIG_PAGE_POISONING=y
+# CONFIG_PAGE_POISONING_NO_SANITY is not set
+CONFIG_PAGE_POISONING_ZERO=y
+CONFIG_DEBUG_PAGE_REF=y
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
CONFIG_SCHEDSTATS=y
+CONFIG_SCHED_STACK_END_CHECK=y
+# CONFIG_DEBUG_TIMEKEEPING is not set
CONFIG_TIMER_STATS=y
#
# Lock Debugging (spinlocks, mutexes, etc...)
#
# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_LIST=y
+# CONFIG_DEBUG_PI_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set
#
# RCU Debugging
#
+# CONFIG_PROVE_RCU is not set
# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_TORTURE_TEST is not set
+# CONFIG_RCU_PERF_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_RCU_CPU_STALL_INFO is not set
# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
-CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_NOP_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_FUNCTION_GRAPH_TRACER=y
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_SCHED_TRACER=y
+# CONFIG_HWLAT_TRACER is not set
CONFIG_FTRACE_SYSCALLS=y
CONFIG_TRACER_SNAPSHOT=y
# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
CONFIG_FTRACE_MCOUNT_RECORD=y
# CONFIG_FTRACE_STARTUP_TEST is not set
# CONFIG_MMIOTRACE is not set
+# CONFIG_HIST_TRIGGERS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_TRACE_ENUM_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
#
# Runtime Testing
# CONFIG_LKDTM is not set
# CONFIG_TEST_LIST_SORT is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
-CONFIG_RBTREE_TEST=m
+# CONFIG_RBTREE_TEST is not set
# CONFIG_INTERVAL_TREE_TEST is not set
# CONFIG_PERCPU_TEST is not set
# CONFIG_ATOMIC64_SELFTEST is not set
-CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_ASYNC_RAID6_TEST is not set
+# CONFIG_TEST_HEXDUMP is not set
# CONFIG_TEST_STRING_HELPERS is not set
# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_LKM is not set
# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
+# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
CONFIG_EARLY_PRINTK_EFI=y
+# CONFIG_X86_PTDUMP_CORE is not set
# CONFIG_X86_PTDUMP is not set
+# CONFIG_EFI_PGT_DUMP is not set
+CONFIG_DEBUG_RODATA_TEST=y
CONFIG_DEBUG_NX_TEST=m
CONFIG_DOUBLEFAULT=y
# CONFIG_DEBUG_TLBFLUSH is not set
CONFIG_DEBUG_BOOT_PARAMS=y
# CONFIG_CPA_DEBUG is not set
CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_ENTRY is not set
# CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
+# CONFIG_DEBUG_IMR_SELFTEST is not set
+# CONFIG_X86_DEBUG_FPU is not set
+# CONFIG_PUNIT_ATOM_DEBUG is not set
#
# Security options
# Grsecurity
#
CONFIG_ARCH_TRACK_EXEC_LIMIT=y
-CONFIG_PAX_USERCOPY_SLABS=y
CONFIG_GRKERNSEC=y
# CONFIG_GRKERNSEC_CONFIG_AUTO is not set
CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
CONFIG_PAX_MPROTECT=y
# CONFIG_PAX_MPROTECT_COMPAT is not set
CONFIG_PAX_ELFRELOCS=y
-CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
#
# Address Space Layout Randomization
CONFIG_PAX_USERCOPY=y
# CONFIG_PAX_USERCOPY_DEBUG is not set
# CONFIG_PAX_SIZE_OVERFLOW is not set
-# CONFIG_PAX_LATENT_ENTROPY is not set
+CONFIG_PAX_INITIFY=y
+CONFIG_HAVE_PAX_INITIFY_INIT_EXIT=y
+# CONFIG_PAX_INITIFY_VERBOSE is not set
+CONFIG_PAX_LATENT_ENTROPY=y
#
# Memory Protections
# CONFIG_GRKERNSEC_KMEM is not set
CONFIG_GRKERNSEC_VM86=y
# CONFIG_GRKERNSEC_IO is not set
+CONFIG_GRKERNSEC_BPF_HARDEN=y
# CONFIG_GRKERNSEC_PERF_HARDEN is not set
CONFIG_GRKERNSEC_RAND_THREADSTACK=y
CONFIG_GRKERNSEC_PROC_MEMMAP=y
CONFIG_GRKERNSEC_PTRACE_READEXEC=y
CONFIG_GRKERNSEC_SETXID=y
CONFIG_GRKERNSEC_HARDEN_IPC=y
+CONFIG_GRKERNSEC_HARDEN_TTY=y
# CONFIG_GRKERNSEC_TPE is not set
#
CONFIG_KEYS=y
# CONFIG_PERSISTENT_KEYRINGS is not set
# CONFIG_BIG_KEYS is not set
-# CONFIG_ENCRYPTED_KEYS is not set
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_KEY_DH_OPERATIONS is not set
CONFIG_SECURITY_DMESG_RESTRICT=y
CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
+# CONFIG_SECURITYFS is not set
CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
# CONFIG_INTEL_TXT is not set
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
+CONFIG_HARDENED_USERCOPY=y
# CONFIG_SECURITY_SELINUX is not set
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_SECURITY_LOADPIN is not set
+CONFIG_INTEGRITY=y
+# CONFIG_INTEGRITY_SIGNATURE is not set
+CONFIG_INTEGRITY_AUDIT=y
# CONFIG_IMA is not set
# CONFIG_EVM is not set
CONFIG_DEFAULT_SECURITY_DAC=y
#
# Crypto core or helper
#
-CONFIG_CRYPTO_FIPS=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=m
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_DH=m
+CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
# CONFIG_CRYPTO_USER is not set
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_MCRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ABLK_HELPER=y
#
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_ECHAINIV=m
#
# Block modes
#
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y
-CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_LRW=y
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_KEYWRAP=m
#
# Hash modes
CONFIG_CRYPTO_CRC32_PCLMUL=m
CONFIG_CRYPTO_CRCT10DIF=y
CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_SHA3=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SALSA20=m
-# CONFIG_CRYPTO_SALSA20_586 is not set
+CONFIG_CRYPTO_SALSA20_586=m
+CONFIG_CRYPTO_CHACHA20=m
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SERPENT_SSE2_586=m
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_842=m
CONFIG_CRYPTO_LZ4=m
CONFIG_CRYPTO_LZ4HC=m
# Random Number Generation
#
CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+# CONFIG_CRYPTO_DRBG_HASH is not set
+# CONFIG_CRYPTO_DRBG_CTR is not set
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_USER_API=y
CONFIG_CRYPTO_USER_API_HASH=y
CONFIG_CRYPTO_USER_API_SKCIPHER=y
-CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_AEAD=m
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_PADLOCK=m
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
CONFIG_CRYPTO_DEV_GEODE=m
-# CONFIG_CRYPTO_DEV_CCP is not set
-CONFIG_ASYMMETRIC_KEY_TYPE=m
-CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
-CONFIG_PUBLIC_KEY_ALGO_RSA=m
-CONFIG_X509_CERTIFICATE_PARSER=m
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
+CONFIG_CRYPTO_DEV_QAT=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
+CONFIG_CRYPTO_DEV_QAT_C3XXX=m
+CONFIG_CRYPTO_DEV_QAT_C62X=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_CRYPTO_DEV_CHELSIO=m
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+
+#
+# Certificates for signature checking
+#
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_IRQFD=y
CONFIG_HAVE_KVM_IRQ_ROUTING=y
CONFIG_HAVE_KVM_EVENTFD=y
-CONFIG_KVM_APIC_ARCHITECTURE=y
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_HAVE_KVM_MSI=y
CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
CONFIG_KVM_VFIO=y
+CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
+CONFIG_HAVE_KVM_IRQ_BYPASS=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_MMU_AUDIT=y
CONFIG_KVM_DEVICE_ASSIGNMENT=y
+CONFIG_VHOST_NET=m
+# CONFIG_VHOST_VSOCK is not set
+CONFIG_VHOST=m
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
# CONFIG_LGUEST is not set
CONFIG_BINARY_PRINTF=y
#
CONFIG_RAID6_PQ=m
CONFIG_BITREVERSE=y
+# CONFIG_HAVE_ARCH_BITREVERSE is not set
+CONFIG_RATIONAL=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
CONFIG_LIBCRC32C=m
CONFIG_CRC8=m
CONFIG_AUDIT_GENERIC=y
+# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_842_COMPRESS=m
+CONFIG_842_DECOMPRESS=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_LZO_COMPRESS=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
+CONFIG_INTERVAL_TREE=y
+CONFIG_RADIX_TREE_MULTIORDER=y
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_CPU_RMAP=y
CONFIG_DQL=y
+CONFIG_GLOB=y
+# CONFIG_GLOB_SELFTEST is not set
CONFIG_NLATTR=y
-CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_AVERAGE=y
CONFIG_CLZ_TAB=y
CONFIG_CORDIC=m
# CONFIG_DDR is not set
+CONFIG_IRQ_POLL=y
CONFIG_MPILIB=m
CONFIG_OID_REGISTRY=m
CONFIG_UCS2_STRING=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
+# CONFIG_SG_SPLIT is not set
+CONFIG_SG_POOL=y
+CONFIG_ARCH_HAS_SG_CHAIN=y
+CONFIG_ARCH_HAS_MMIO_FLUSH=y
+CONFIG_SBITMAP=y
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.14.73 Kernel Configuration
+# Linux/x86 4.9.12-ipfire Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=28
+CONFIG_ARCH_MMAP_RND_BITS_MAX=32
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_HAVE_INTEL_TXT=y
CONFIG_X86_64_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
+CONFIG_PGTABLE_LEVELS=4
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
+CONFIG_THREAD_INFO_IN_TASK=y
#
# General setup
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FHANDLE=y
CONFIG_AUDIT=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_GENERIC_CMOS_UPDATE=y
#
# CPU/Task time and stats accounting
#
-# CONFIG_TICK_CPU_ACCOUNTING is not set
+CONFIG_TICK_CPU_ACCOUNTING=y
# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
CONFIG_IRQ_TIME_ACCOUNTING=y
CONFIG_BSD_PROCESS_ACCT=y
# RCU Subsystem
#
CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
-# CONFIG_RCU_USER_QS is not set
-CONFIG_RCU_FANOUT=32
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FAST_NO_HZ=y
# CONFIG_TREE_RCU_TRACE is not set
-CONFIG_RCU_NOCB_CPU=y
-# CONFIG_RCU_NOCB_CPU_NONE is not set
-# CONFIG_RCU_NOCB_CPU_ZERO is not set
-CONFIG_RCU_NOCB_CPU_ALL=y
+# CONFIG_RCU_EXPEDITE_BOOT is not set
+# CONFIG_BUILD_BIN2C is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_NMI_LOG_BUF_SHIFT=13
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
CONFIG_ARCH_SUPPORTS_INT128=y
-CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
# CONFIG_MEMCG is not set
-CONFIG_CGROUP_PERF=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_CFS_BANDWIDTH is not set
CONFIG_RT_GROUP_SCHED=y
-CONFIG_BLK_CGROUP=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+# CONFIG_CGROUP_DEBUG is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_BPF=y
CONFIG_EXPERT=y
CONFIG_UID16=y
+CONFIG_MULTIUSER=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
+CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
+CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
+# CONFIG_BPF_SYSCALL is not set
CONFIG_SHMEM=y
CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
CONFIG_PCI_QUIRKS=y
+CONFIG_MEMBARRIER=y
CONFIG_EMBEDDED=y
CONFIG_HAVE_PERF_EVENTS=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
+CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLUB_CPU_PARTIAL=y
-# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_DATA_VERIFICATION is not set
# CONFIG_PROFILING is not set
CONFIG_TRACEPOINTS=y
CONFIG_HAVE_OPROFILE=y
CONFIG_OPROFILE_NMI_TIMER=y
# CONFIG_KPROBES is not set
CONFIG_JUMP_LABEL=y
+CONFIG_STATIC_KEYS_SELFTEST=y
+# CONFIG_UPROBES is not set
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_NMI=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set
+CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
CONFIG_CC_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
CONFIG_HAVE_ARCH_SOFT_DIRTY=y
CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=28
+CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
+CONFIG_HAVE_COPY_THREAD_TLS=y
+CONFIG_HAVE_STACK_VALIDATION=y
+# CONFIG_HAVE_ARCH_HASH is not set
+# CONFIG_ISA_BUS_API is not set
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_COMPAT_OLD_SIGACTION=y
+# CONFIG_CPU_NO_EFFICIENT_FFS is not set
+CONFIG_HAVE_ARCH_VMAP_STACK=y
+CONFIG_VMAP_STACK=y
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_MODULE_SIG is not set
-CONFIG_STOP_MACHINE=y
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_BSGLIB=y
# CONFIG_SYSV68_PARTITION is not set
# CONFIG_CMDLINE_PARTITION is not set
CONFIG_BLOCK_COMPAT=y
+CONFIG_BLK_MQ_PCI=y
#
# IO Schedulers
CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_RWLOCKS=y
CONFIG_FREEZER=y
#
#
CONFIG_ZONE_DMA=y
CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
+CONFIG_X86_FAST_FEATURE_TESTS=y
# CONFIG_X86_X2APIC is not set
CONFIG_X86_MPPARSE=y
+# CONFIG_GOLDFISH is not set
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_VSMP is not set
+# CONFIG_X86_GOLDFISH is not set
+# CONFIG_X86_INTEL_MID is not set
+# CONFIG_MLX_PLATFORM is not set
CONFIG_X86_INTEL_LPSS=y
+CONFIG_X86_AMD_PLATFORM_DEVICE=y
+CONFIG_IOSF_MBI=y
+# CONFIG_IOSF_MBI_DEBUG is not set
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_HYPERVISOR_GUEST=y
# CONFIG_PARAVIRT_SPINLOCKS is not set
CONFIG_XEN=y
CONFIG_XEN_DOM0=y
-CONFIG_XEN_PRIVILEGED_GUEST=y
CONFIG_XEN_PVHVM=y
-CONFIG_XEN_MAX_DOMAIN_MEMORY=500
+CONFIG_XEN_512GB=y
CONFIG_XEN_SAVE_RESTORE=y
CONFIG_XEN_DEBUG_FS=y
CONFIG_XEN_PVH=y
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_PARAVIRT_CLOCK=y
CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
# CONFIG_MK8 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
-CONFIG_X86_UP_APIC_MSI=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
CONFIG_X86_MCE_THRESHOLD=y
# CONFIG_X86_MCE_INJECT is not set
CONFIG_X86_THERMAL_VECTOR=y
+
+#
+# Performance monitoring
+#
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
+# CONFIG_VM86 is not set
+CONFIG_X86_VSYSCALL_EMULATION=y
CONFIG_I8K=m
-CONFIG_MICROCODE=m
+CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
CONFIG_MICROCODE_OLD_INTERFACE=y
-# CONFIG_MICROCODE_INTEL_EARLY is not set
-# CONFIG_MICROCODE_AMD_EARLY is not set
# CONFIG_X86_MSR is not set
CONFIG_X86_CPUID=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
-CONFIG_DIRECT_GBPAGES=y
+CONFIG_X86_DIRECT_GBPAGES=y
# CONFIG_NUMA is not set
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_MEMORY_ISOLATION=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
# CONFIG_MEMORY_HOTPLUG is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_MEMORY_BALLOON=y
CONFIG_BALLOON_COMPACTION=y
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_MMU_NOTIFIER=y
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
-CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
CONFIG_CLEANCACHE=y
# CONFIG_FRONTSWAP is not set
# CONFIG_CMA is not set
+# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
+CONFIG_ARCH_HAS_PKEYS=y
+CONFIG_X86_PMEM_LEGACY_DEVICE=y
+CONFIG_X86_PMEM_LEGACY=m
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
CONFIG_X86_RESERVE_LOW=64
CONFIG_ARCH_USES_PG_UNCACHED=y
CONFIG_ARCH_RANDOM=y
CONFIG_X86_SMAP=y
+# CONFIG_X86_INTEL_MPX is not set
+CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
CONFIG_EFI=y
CONFIG_EFI_STUB=y
+CONFIG_EFI_MIXED=y
CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
CONFIG_HZ=300
CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not set
+# CONFIG_KEXEC_FILE is not set
CONFIG_CRASH_DUMP=y
CONFIG_PHYSICAL_START=0x400000
CONFIG_RELOCATABLE=y
-# CONFIG_RANDOMIZE_BASE is not set
CONFIG_PHYSICAL_ALIGN=0x400000
CONFIG_HOTPLUG_CPU=y
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
+CONFIG_LEGACY_VSYSCALL_EMULATE=y
+# CONFIG_LEGACY_VSYSCALL_NONE is not set
# CONFIG_CMDLINE_BOOL is not set
+CONFIG_MODIFY_LDT_SYSCALL=y
# CONFIG_DEFAULT_MODIFY_LDT_SYSCALL is not set
+CONFIG_HAVE_LIVEPATCH=y
+# CONFIG_LIVEPATCH is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
#
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
CONFIG_HIBERNATE_CALLBACKS=y
+# CONFIG_HIBERNATION is not set
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
# CONFIG_PM_AUTOSLEEP is not set
# CONFIG_PM_WAKELOCKS is not set
-CONFIG_PM_RUNTIME=y
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_CLK=y
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
CONFIG_ACPI=y
+CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
+CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
+CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
+# CONFIG_ACPI_DEBUGGER is not set
CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
# CONFIG_ACPI_PROCFS_POWER is not set
+CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
CONFIG_ACPI_EC_DEBUGFS=m
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_FAN=y
CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_CPU_FREQ_PSS=y
+CONFIG_ACPI_PROCESSOR_CSTATE=y
+CONFIG_ACPI_PROCESSOR_IDLE=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_IPMI=m
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
+CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_PCI_SLOT=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_HOTPLUG_IOAPIC=y
CONFIG_ACPI_SBS=m
CONFIG_ACPI_HED=y
CONFIG_ACPI_CUSTOM_METHOD=m
# CONFIG_ACPI_BGRT is not set
+# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
+CONFIG_ACPI_NFIT=m
+# CONFIG_ACPI_NFIT_DEBUG is not set
+CONFIG_HAVE_ACPI_APEI=y
+CONFIG_HAVE_ACPI_APEI_NMI=y
CONFIG_ACPI_APEI=y
CONFIG_ACPI_APEI_GHES=y
CONFIG_ACPI_APEI_PCIEAER=y
CONFIG_ACPI_APEI_MEMORY_FAILURE=y
# CONFIG_ACPI_APEI_EINJ is not set
# CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_DPTF_POWER=m
+CONFIG_ACPI_WATCHDOG=y
CONFIG_ACPI_EXTLOG=m
+CONFIG_PMIC_OPREGION=y
+CONFIG_ACPI_CONFIGFS=m
CONFIG_SFI=y
#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
CONFIG_CPU_FREQ_GOV_COMMON=y
-CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
#
-# x86 CPU frequency scaling drivers
+# CPU frequency scaling drivers
#
CONFIG_X86_INTEL_PSTATE=y
CONFIG_X86_PCC_CPUFREQ=m
# CPU Idle
#
CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
# CONFIG_PCIEASPM_POWERSAVE is not set
# CONFIG_PCIEASPM_PERFORMANCE is not set
CONFIG_PCIE_PME=y
+# CONFIG_PCIE_DPC is not set
+# CONFIG_PCIE_PTM is not set
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
CONFIG_PCI_IOV=y
CONFIG_PCI_PRI=y
CONFIG_PCI_PASID=y
-CONFIG_PCI_IOAPIC=y
CONFIG_PCI_LABEL=y
+CONFIG_PCI_HYPERV=m
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
#
# PCI host controller drivers
#
+CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_DW=y
+CONFIG_VMD=m
+# CONFIG_ISA_BUS is not set
CONFIG_ISA_DMA_API=y
CONFIG_APULED=y
CONFIG_APU2LED=y
CONFIG_PD6729=m
CONFIG_I82092=m
CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
# CONFIG_RAPIDIO is not set
CONFIG_X86_SYSFB=y
#
CONFIG_BINFMT_ELF=y
CONFIG_COMPAT_BINFMT_ELF=y
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_ELFCORE=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_BINFMT_SCRIPT=y
# CONFIG_HAVE_AOUT is not set
CONFIG_SYSVIPC_COMPAT=y
CONFIG_KEYS_COMPAT=y
CONFIG_X86_DEV_DMA_OPS=y
-CONFIG_IOSF_MBI=m
+CONFIG_PMC_ATOM=y
CONFIG_NET=y
CONFIG_COMPAT_NETLINK_MESSAGES=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_EGRESS=y
#
# Networking options
CONFIG_IP_PIMSM_V2=y
CONFIG_SYN_COOKIES=y
CONFIG_NET_IPVTI=m
+CONFIG_NET_UDP_TUNNEL=m
+CONFIG_NET_FOU=m
+CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_INET_UDP_DIAG=m
+CONFIG_INET_DIAG_DESTROY=y
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_NV=m
CONFIG_TCP_CONG_SCALABLE=m
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_CONG_BBR=m
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_MIP6=m
+CONFIG_IPV6_ILA=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_GRE=m
+CONFIG_IPV6_FOU=m
+CONFIG_IPV6_FOU_TUNNEL=m
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_PIMSM_V2=y
# CONFIG_NETLABEL is not set
CONFIG_NETWORK_SECMARK=y
+CONFIG_NET_PTP_CLASSIFY=y
# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
#
# Core Netfilter Configuration
#
+CONFIG_NETFILTER_INGRESS=y
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_ACCT=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_COMMON=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_ZONES=y
CONFIG_NF_CT_NETLINK=m
CONFIG_NF_CT_NETLINK_TIMEOUT=m
CONFIG_NF_CT_NETLINK_HELPER=m
-CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_NF_NAT_PROTO_DCCP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_SIP=m
CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=y
CONFIG_NF_TABLES_INET=m
+CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m
+CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
-CONFIG_NFT_RBTREE=m
-CONFIG_NFT_HASH=m
+CONFIG_NFT_SET_RBTREE=m
+CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m
+CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
+CONFIG_NFT_HASH=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XTABLES=y
#
CONFIG_NETFILTER_XT_TARGET_LOG=m
CONFIG_NETFILTER_XT_TARGET_IMQ=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_NAT=m
CONFIG_NETFILTER_XT_TARGET_NETMAP=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_IP_SET_BITMAP_IPMAC=m
CONFIG_IP_SET_BITMAP_PORT=m
CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPMARK=m
CONFIG_IP_SET_HASH_IPPORT=m
CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_MAC=m
CONFIG_IP_SET_HASH_NETPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETNET=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_FO=m
+CONFIG_IP_VS_OVF=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
#
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_CONNTRACK_IPV4=y
-# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
CONFIG_NF_TABLES_IPV4=m
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_DUP_IPV4=m
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_SYNPROXY=m
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_NF_CONNTRACK_IPV6=y
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NF_DUP_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_RAW=m
CONFIG_IP6_NF_SECURITY=m
-CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IP6_NF_TARGET_NPT=m
CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
-# CONFIG_BRIDGE_EBT_ULOG is not set
CONFIG_BRIDGE_EBT_NFLOG=m
# CONFIG_IP_DCCP is not set
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+CONFIG_INET_SCTP_DIAG=m
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
CONFIG_ATM=m
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_HAVE_NET_DSA=y
CONFIG_NET_DSA=y
+CONFIG_NET_DSA_HWMON=y
+CONFIG_NET_DSA_TAG_BRCM=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_DSA_TAG_TRAILER=y
+CONFIG_NET_DSA_TAG_QCA=y
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_GVRP=y
# CONFIG_VLAN_8021Q_MVRP is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
# CONFIG_IEEE802154 is not set
-CONFIG_6LOWPAN_IPHC=m
CONFIG_NET_SCHED=y
#
CONFIG_NET_CLS_FLOW=m
CONFIG_NET_CLS_CGROUP=m
CONFIG_NET_CLS_BPF=m
+CONFIG_NET_CLS_FLOWER=m
+CONFIG_NET_CLS_MATCHALL=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_ACT_SIMP=m
CONFIG_NET_ACT_SKBEDIT=m
CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
# CONFIG_DCB is not set
CONFIG_DNS_RESOLVER=y
CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BATMAN_V=y
CONFIG_BATMAN_ADV_BLA=y
CONFIG_BATMAN_ADV_DAT=y
CONFIG_BATMAN_ADV_NC=y
+CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_BATMAN_ADV_DEBUGFS=y
# CONFIG_BATMAN_ADV_DEBUG is not set
CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=y
-CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
CONFIG_VSOCKETS=m
CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_VIRTIO_VSOCKETS_COMMON=m
CONFIG_NETLINK_DIAG=m
+CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
+CONFIG_MPLS_ROUTING=m
+CONFIG_MPLS_IPTUNNEL=m
CONFIG_HSR=m
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_L3_MASTER_DEV=y
+CONFIG_NET_NCSI=y
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
-CONFIG_CGROUP_NET_PRIO=m
+CONFIG_SOCK_CGROUP_DATA=y
+CONFIG_CGROUP_NET_PRIO=y
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
CONFIG_BT=m
+CONFIG_BT_BREDR=y
CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_CMTP=m
CONFIG_BT_HIDP=m
+CONFIG_BT_HS=y
+CONFIG_BT_LE=y
+CONFIG_BT_LEDS=y
+# CONFIG_BT_SELFTEST is not set
+CONFIG_BT_DEBUGFS=y
#
# Bluetooth device drivers
#
+CONFIG_BT_INTEL=m
+CONFIG_BT_BCM=m
+CONFIG_BT_RTL=m
+CONFIG_BT_QCA=m
CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
CONFIG_BT_HCIBTSDIO=m
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_ATH3K=y
CONFIG_BT_HCIUART_LL=y
CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIUART_INTEL=y
+CONFIG_BT_HCIUART_BCM=y
+CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_AG6XX=y
+CONFIG_BT_HCIUART_MRVL=y
CONFIG_BT_HCIBCM203X=m
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
-# CONFIG_BT_HCIDTL1 is not set
-# CONFIG_BT_HCIBT3C is not set
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
CONFIG_BT_HCIBLUECARD=m
CONFIG_BT_HCIBTUART=m
CONFIG_BT_HCIVHCI=m
CONFIG_BT_ATH3K=m
CONFIG_BT_WILINK=m
# CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+# CONFIG_STREAM_PARSER is not set
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
CONFIG_CFG80211_WEXT=y
+CONFIG_CFG80211_WEXT_EXPORT=y
CONFIG_LIB80211=m
CONFIG_LIB80211_CRYPT_WEP=m
CONFIG_LIB80211_CRYPT_CCMP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
CONFIG_MAC80211_HAS_RC=y
-# CONFIG_MAC80211_RC_PID is not set
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_MINSTREL_VHT=y
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
CONFIG_MAC80211_MESH=y
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_MESSAGE_TRACING is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
# CONFIG_WIMAX is not set
CONFIG_RFKILL=m
CONFIG_RFKILL_LEDS=y
# CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set
# CONFIG_NFC is not set
-CONFIG_HAVE_BPF_JIT=y
+CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
+CONFIG_HAVE_EBPF_JIT=y
#
# Device Drivers
#
# Generic Driver Options
#
+CONFIG_UEVENT_HELPER=y
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE=""
CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+CONFIG_WANT_DEV_COREDUMP=y
+CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
CONFIG_SYS_HYPERVISOR=y
# CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_IRQ=y
CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_FENCE_TRACE is not set
#
# Bus devices
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
# CONFIG_MTD is not set
+# CONFIG_OF is not set
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_DRBD is not set
# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_NVME=m
CONFIG_BLK_DEV_SKD=m
# CONFIG_BLK_DEV_OSD is not set
CONFIG_BLK_DEV_SX8=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_XEN_BLKDEV_FRONTEND=m
# CONFIG_BLK_DEV_HD is not set
# CONFIG_BLK_DEV_RBD is not set
CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
+CONFIG_BLK_DEV_NVME=m
+CONFIG_BLK_DEV_NVME_SCSI=y
+CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_LOOP is not set
#
# Misc devices
#
CONFIG_SENSORS_LIS3LV02D=m
# CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
CONFIG_DUMMY_IRQ=m
CONFIG_IBM_ASM=m
# CONFIG_PHANTOM is not set
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
CONFIG_ICS932S401=m
-# CONFIG_ATMEL_SSC is not set
CONFIG_ENCLOSURE_SERVICES=m
-CONFIG_CS5535_MFGPT=m
-CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
-CONFIG_CS5535_CLOCK_EVENT_SRC=m
CONFIG_HP_ILO=m
# CONFIG_APDS9802ALS is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISL29020 is not set
# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
# CONFIG_SENSORS_BH1770 is not set
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
CONFIG_DS1682=m
CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=m
-CONFIG_BMP085_I2C=m
-CONFIG_PCH_PHUB=m
CONFIG_USB_SWITCH_FSA9480=m
# CONFIG_SRAM is not set
+# CONFIG_PANEL is not set
# CONFIG_C2PORT is not set
#
CONFIG_ALTERA_STAPL=m
# CONFIG_INTEL_MEI is not set
# CONFIG_INTEL_MEI_ME is not set
+# CONFIG_INTEL_MEI_TXE is not set
CONFIG_VMWARE_VMCI=m
+#
+# Intel MIC Bus Driver
+#
+# CONFIG_INTEL_MIC_BUS is not set
+
+#
+# SCIF Bus Driver
+#
+# CONFIG_SCIF_BUS is not set
+
+#
+# VOP Bus Driver
+#
+# CONFIG_VOP_BUS is not set
+
#
# Intel MIC Host Driver
#
-CONFIG_INTEL_MIC_HOST=m
#
# Intel MIC Card Driver
#
-CONFIG_INTEL_MIC_CARD=m
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
+
+#
+# VOP Driver
+#
CONFIG_GENWQE=m
+CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
+CONFIG_ECHO=m
+# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_AFU_DRIVER_OPS is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_MQ_DEFAULT is not set
CONFIG_SCSI_PROC_FS=y
#
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=m
CONFIG_SCSI_SAS_ATTRS=m
CONFIG_SCSI_SAS_LIBSAS=m
CONFIG_SCSI_SAS_ATA=y
CONFIG_SCSI_SAS_HOST_SMP=y
CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_SRP_TGT_ATTRS=y
CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=m
CONFIG_ISCSI_BOOT_SYSFS=m
CONFIG_MEGARAID_MAILBOX=m
CONFIG_MEGARAID_LEGACY=m
CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
CONFIG_SCSI_MPT3SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_SMARTPQI=m
CONFIG_SCSI_UFSHCD=m
CONFIG_SCSI_UFSHCD_PCI=m
+CONFIG_SCSI_UFS_DWC_TC_PCI=m
CONFIG_SCSI_UFSHCD_PLATFORM=m
+CONFIG_SCSI_UFS_DWC_TC_PLATFORM=m
CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_BUSLOGIC=m
# CONFIG_SCSI_FLASHPOINT is not set
CONFIG_VMWARE_PVSCSI=m
+CONFIG_XEN_SCSI_FRONTEND=m
CONFIG_HYPERV_STORAGE=m
CONFIG_LIBFC=m
CONFIG_LIBFCOE=m
CONFIG_FCOE=m
CONFIG_FCOE_FNIC=m
+CONFIG_SCSI_SNIC=m
+CONFIG_SCSI_SNIC_DEBUG_FS=y
CONFIG_SCSI_DMX3191D=m
CONFIG_SCSI_EATA=m
CONFIG_SCSI_EATA_TAGGED_QUEUE=y
CONFIG_SCSI_LPFC=m
# CONFIG_SCSI_LPFC_DEBUG_FS is not set
CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_AM53C974=m
+CONFIG_SCSI_WD719X=m
# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_PMCRAID=m
CONFIG_SCSI_PM8001=m
-# CONFIG_SCSI_SRP is not set
CONFIG_SCSI_BFA_FC=m
CONFIG_SCSI_VIRTIO=m
CONFIG_SCSI_CHELSIO_FCOE=m
# SATA SFF controllers with BMDMA
#
CONFIG_ATA_PIIX=y
-CONFIG_SATA_HIGHBANK=m
+CONFIG_SATA_DWC=m
+# CONFIG_SATA_DWC_OLD_DMA is not set
+# CONFIG_SATA_DWC_DEBUG is not set
CONFIG_SATA_MV=m
CONFIG_SATA_NV=m
CONFIG_SATA_PROMISE=m
-CONFIG_SATA_RCAR=m
CONFIG_SATA_SIL=m
CONFIG_SATA_SIS=m
CONFIG_SATA_SVW=m
#
CONFIG_PATA_ALI=m
CONFIG_PATA_AMD=m
-CONFIG_PATA_ARASAN_CF=m
CONFIG_PATA_ARTOP=m
CONFIG_PATA_ATIIXP=m
CONFIG_PATA_ATP867X=m
CONFIG_PATA_CMD64X=m
-CONFIG_PATA_CS5520=m
-CONFIG_PATA_CS5530=m
-CONFIG_PATA_CS5536=m
CONFIG_PATA_CYPRESS=m
CONFIG_PATA_EFAR=m
CONFIG_PATA_HPT366=m
CONFIG_PATA_PDC_OLD=m
CONFIG_PATA_RADISYS=m
CONFIG_PATA_RDC=m
-CONFIG_PATA_SC1200=m
CONFIG_PATA_SCH=m
CONFIG_PATA_SERVERWORKS=m
CONFIG_PATA_SIL680=m
CONFIG_MD_RAID456=m
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
+# CONFIG_MD_CLUSTER is not set
CONFIG_BCACHE=m
# CONFIG_BCACHE_DEBUG is not set
# CONFIG_BCACHE_CLOSURES_DEBUG is not set
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_MQ_DEFAULT is not set
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=y
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
CONFIG_DM_BIO_PRISON=m
CONFIG_DM_PERSISTENT_DATA=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=y
# CONFIG_DM_THIN_PROVISIONING is not set
CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_SMQ=m
CONFIG_DM_CACHE_CLEANER=m
+# CONFIG_DM_ERA is not set
CONFIG_DM_MIRROR=y
CONFIG_DM_LOG_USERSPACE=m
CONFIG_DM_RAID=m
CONFIG_DM_UEVENT=y
# CONFIG_DM_FLAKEY is not set
CONFIG_DM_VERITY=m
+# CONFIG_DM_VERITY_FEC is not set
CONFIG_DM_SWITCH=m
+CONFIG_DM_LOG_WRITES=m
# CONFIG_TARGET_CORE is not set
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FIREWIRE_SBP2=m
# CONFIG_FIREWIRE_NET is not set
# CONFIG_FIREWIRE_NOSY is not set
-CONFIG_I2O=m
-# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_EXT_ADAPTEC_DMA64=y
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_CONFIG_OLD_IOCTL=y
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
CONFIG_MACINTOSH_DRIVERS=y
# CONFIG_MAC_EMUMOUSEBTN is not set
CONFIG_NETDEVICES=y
# CONFIG_NET_TEAM is not set
CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
+CONFIG_IPVLAN=m
CONFIG_VXLAN=m
+CONFIG_GENEVE=m
+CONFIG_GTP=m
+CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
-CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_IMQ=m
# CONFIG_IMQ_BEHAVIOR_AA is not set
# CONFIG_IMQ_BEHAVIOR_BB is not set
CONFIG_IMQ_NUM_DEVS=2
CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
CONFIG_VETH=m
CONFIG_VIRTIO_NET=m
CONFIG_NLMON=m
+CONFIG_NET_VRF=m
CONFIG_SUNGEM_PHY=m
# CONFIG_ARCNET is not set
CONFIG_ATM_DRIVERS=y
#
# CAIF transport drivers
#
-CONFIG_VHOST_NET=m
-CONFIG_VHOST_RING=m
-CONFIG_VHOST=m
#
# Distributed Switch Architecture drivers
#
-CONFIG_NET_DSA_MV88E6XXX=y
CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
+CONFIG_NET_DSA_BCM_SF2=m
+CONFIG_B53=m
+CONFIG_B53_MDIO_DRIVER=m
+CONFIG_B53_MMAP_DRIVER=m
+CONFIG_B53_SRAB_DRIVER=m
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
+CONFIG_NET_DSA_QCA8K=m
CONFIG_ETHERNET=y
CONFIG_MDIO=m
CONFIG_NET_VENDOR_3COM=y
CONFIG_TYPHOON=m
CONFIG_NET_VENDOR_ADAPTEC=y
CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_AGERE=y
+CONFIG_ET131X=m
CONFIG_NET_VENDOR_ALTEON=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_ALTERA_TSE=m
+CONFIG_NET_VENDOR_AMAZON=y
+CONFIG_ENA_ETHERNET=m
CONFIG_NET_VENDOR_AMD=y
CONFIG_AMD8111_ETH=m
CONFIG_PCNET32=m
CONFIG_ATL1E=m
CONFIG_ATL1C=m
CONFIG_ALX=m
+CONFIG_NET_VENDOR_AURORA=y
+CONFIG_AURORA_NB8800=m
CONFIG_NET_CADENCE=y
-CONFIG_ARM_AT91_ETHER=m
CONFIG_MACB=m
CONFIG_NET_VENDOR_BROADCOM=y
CONFIG_B44=m
CONFIG_B44_PCI_AUTOSELECT=y
CONFIG_B44_PCICORE_AUTOSELECT=y
CONFIG_B44_PCI=y
+CONFIG_BCMGENET=m
CONFIG_BNX2=m
CONFIG_CNIC=m
CONFIG_TIGON3=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
CONFIG_NET_VENDOR_BROCADE=y
CONFIG_BNA=m
-CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_VENDOR_CAVIUM=y
+CONFIG_THUNDER_NIC_PF=m
+CONFIG_THUNDER_NIC_VF=m
+CONFIG_THUNDER_NIC_BGX=m
+CONFIG_THUNDER_NIC_RGX=m
+CONFIG_LIQUIDIO=m
CONFIG_NET_VENDOR_CHELSIO=y
CONFIG_CHELSIO_T1=m
CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T3=m
CONFIG_CHELSIO_T4=m
CONFIG_CHELSIO_T4VF=m
+CONFIG_CHELSIO_LIB=m
CONFIG_NET_VENDOR_CISCO=y
CONFIG_ENIC=m
+CONFIG_CX_ECAT=m
CONFIG_DNET=m
CONFIG_NET_VENDOR_DEC=y
CONFIG_NET_TULIP=y
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_NET_VENDOR_EMULEX=y
CONFIG_BE2NET=m
+CONFIG_BE2NET_HWMON=y
+CONFIG_NET_VENDOR_EZCHIP=y
CONFIG_NET_VENDOR_EXAR=y
CONFIG_S2IO=m
CONFIG_VXGE=m
CONFIG_E100=m
CONFIG_E1000=m
CONFIG_E1000E=m
+CONFIG_E1000E_HWTS=y
CONFIG_IGB=m
CONFIG_IGB_HWMON=y
CONFIG_IGB_DCA=y
CONFIG_IXGBE_DCA=y
CONFIG_IXGBEVF=m
CONFIG_I40E=m
-CONFIG_I40E_VXLAN=y
CONFIG_I40EVF=m
+CONFIG_FM10K=m
CONFIG_NET_VENDOR_I825XX=y
-CONFIG_IP1000=m
CONFIG_JME=m
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKGE_GENESIS=y
CONFIG_MLX4_EN=m
CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
-# CONFIG_MLX5_CORE is not set
+CONFIG_MLX5_CORE=m
+CONFIG_MLX5_CORE_EN=y
+CONFIG_MLXSW_CORE=m
+CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_SWITCHX2=m
+CONFIG_MLXSW_SPECTRUM=m
CONFIG_NET_VENDOR_MICREL=y
CONFIG_KS8842=m
CONFIG_KS8851_MLL=m
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NATSEMI=m
CONFIG_NS83820=m
+CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NFP_NETVF=m
+# CONFIG_NFP_NET_DEBUG is not set
CONFIG_NET_VENDOR_8390=y
CONFIG_PCMCIA_AXNET=m
CONFIG_NE2K_PCI=m
CONFIG_NET_VENDOR_NVIDIA=y
CONFIG_FORCEDETH=m
CONFIG_NET_VENDOR_OKI=y
-CONFIG_PCH_GBE=m
CONFIG_ETHOC=m
# CONFIG_NET_PACKET_ENGINE is not set
CONFIG_NET_VENDOR_QLOGIC=y
CONFIG_QLA3XXX=m
CONFIG_QLCNIC=m
CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLCNIC_HWMON=y
CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QED_SRIOV=y
+CONFIG_QEDE=m
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_QCOM_EMAC=m
CONFIG_NET_VENDOR_REALTEK=y
CONFIG_ATP=m
CONFIG_8139CP=m
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_TUNE_TWISTER=y
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_R8169=m
-CONFIG_SH_ETH=m
+CONFIG_NET_VENDOR_RENESAS=y
CONFIG_NET_VENDOR_RDC=y
CONFIG_R6040=m
+CONFIG_NET_VENDOR_ROCKER=y
+CONFIG_ROCKER=m
+CONFIG_NET_VENDOR_SAMSUNG=y
+CONFIG_SXGBE_ETH=m
CONFIG_NET_VENDOR_SEEQ=y
CONFIG_NET_VENDOR_SILAN=y
CONFIG_SC92031=m
CONFIG_SFC=m
CONFIG_SFC_MCDI_MON=y
CONFIG_SFC_SRIOV=y
+CONFIG_SFC_MCDI_LOGGING=y
CONFIG_NET_VENDOR_SMSC=y
CONFIG_PCMCIA_SMC91C92=m
CONFIG_EPIC100=m
CONFIG_SMSC9420=m
CONFIG_NET_VENDOR_STMICRO=y
CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=y
-CONFIG_STMMAC_PCI=y
-# CONFIG_STMMAC_DEBUG_FS is not set
-# CONFIG_STMMAC_DA is not set
+CONFIG_STMMAC_PLATFORM=m
+CONFIG_DWMAC_GENERIC=m
+CONFIG_STMMAC_PCI=m
CONFIG_NET_VENDOR_SUN=y
CONFIG_HAPPYMEAL=m
CONFIG_SUNGEM=m
CONFIG_CASSINI=m
CONFIG_NIU=m
+CONFIG_NET_VENDOR_SYNOPSYS=y
CONFIG_NET_VENDOR_TEHUTI=y
CONFIG_TEHUTI=m
CONFIG_NET_VENDOR_TI=y
+CONFIG_TI_CPSW_ALE=m
CONFIG_TLAN=m
CONFIG_NET_VENDOR_VIA=y
CONFIG_VIA_RHINE=m
CONFIG_PCMCIA_XIRC2PS=m
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
-# CONFIG_NET_SB1000 is not set
+CONFIG_NET_SB1000=m
CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+
+#
+# MDIO bus device drivers
+#
+CONFIG_MDIO_BCM_UNIMAC=m
+CONFIG_MDIO_BITBANG=m
+CONFIG_MDIO_CAVIUM=m
+# CONFIG_MDIO_GPIO is not set
+CONFIG_MDIO_OCTEON=m
+CONFIG_MDIO_THUNDER=m
#
# MII PHY device drivers
#
-CONFIG_AT803X_PHY=m
CONFIG_AMD_PHY=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
+CONFIG_AQUANTIA_PHY=m
+CONFIG_AT803X_PHY=m
+CONFIG_BCM7XXX_PHY=m
CONFIG_BCM87XX_PHY=m
+CONFIG_BCM_NET_PHYLIB=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_DP83848_PHY=m
+CONFIG_DP83867_PHY=m
+CONFIG_FIXED_PHY=y
CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
+CONFIG_INTEL_XWAY_PHY=m
CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_MARVELL_PHY=m
CONFIG_MICREL_PHY=m
-CONFIG_FIXED_PHY=y
-CONFIG_MDIO_BITBANG=m
-# CONFIG_MDIO_GPIO is not set
+CONFIG_MICROCHIP_PHY=m
+CONFIG_MICROSEMI_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_STE10XP=m
+CONFIG_TERANETICS_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_XILINX_GMII2RGMII=m
# CONFIG_PLIP is not set
CONFIG_PPP=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_SYNC_TTY=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-
-#
-# USB Network Adapters
-#
+CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_RTL8152=m
+CONFIG_USB_LAN78XX=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_AX88179_178A=m
CONFIG_USB_NET_PLUSB=m
CONFIG_USB_NET_MCS7830=m
CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y
CONFIG_USB_IPHETH=m
CONFIG_USB_SIERRA_NET=m
CONFIG_USB_VL600=m
+CONFIG_USB_NET_CH9200=m
CONFIG_WLAN=y
-# CONFIG_PCMCIA_RAYCS is not set
-CONFIG_LIBERTAS_THINFIRM=m
-# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM_USB=m
-# CONFIG_LIBERTAS_UAP is not set
-CONFIG_AIRO=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AT76C50X_USB=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
+CONFIG_WLAN_VENDOR_ADMTEK=y
CONFIG_ADM8211=m
-CONFIG_MAC80211_HWSIM=m
-CONFIG_MWL8K=m
CONFIG_ATH_COMMON=m
-CONFIG_ATH_CARDS=m
+CONFIG_WLAN_VENDOR_ATH=y
# CONFIG_ATH_DEBUG is not set
CONFIG_ATH5K=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH9K_PCI=y
CONFIG_ATH9K_AHB=y
# CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_DYNACK is not set
# CONFIG_ATH9K_WOW is not set
-# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
CONFIG_ATH9K_RFKILL=y
+# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
+CONFIG_ATH9K_PCOEM=y
CONFIG_ATH9K_HTC=m
# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_ATH9K_HWRNG=y
CONFIG_CARL9170=m
CONFIG_CARL9170_LEDS=y
CONFIG_CARL9170_WPC=y
# CONFIG_ATH10K_TRACING is not set
CONFIG_WCN36XX=m
# CONFIG_WCN36XX_DEBUGFS is not set
+CONFIG_WLAN_VENDOR_ATMEL=y
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AT76C50X_USB=m
+CONFIG_WLAN_VENDOR_BROADCOM=y
CONFIG_B43=m
CONFIG_B43_BCMA=y
CONFIG_B43_SSB=y
+CONFIG_B43_BUSES_BCMA_AND_SSB=y
+# CONFIG_B43_BUSES_BCMA is not set
+# CONFIG_B43_BUSES_SSB is not set
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
-# CONFIG_B43_PCMCIA is not set
CONFIG_B43_SDIO=y
CONFIG_B43_BCMA_PIO=y
CONFIG_B43_PIO=y
+CONFIG_B43_PHY_G=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_LP=y
CONFIG_B43_PHY_HT=y
CONFIG_BRCMUTIL=m
CONFIG_BRCMSMAC=m
CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_PROTO_BCDC=y
+CONFIG_BRCMFMAC_PROTO_MSGBUF=y
CONFIG_BRCMFMAC_SDIO=y
-# CONFIG_BRCMFMAC_USB is not set
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMFMAC_PCIE=y
# CONFIG_BRCM_TRACING is not set
# CONFIG_BRCMDBG is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_HOSTAP_CS=m
+CONFIG_WLAN_VENDOR_CISCO=y
+CONFIG_AIRO=m
+CONFIG_AIRO_CS=m
+CONFIG_WLAN_VENDOR_INTEL=y
CONFIG_IPW2100=m
CONFIG_IPW2100_MONITOR=y
# CONFIG_IPW2100_DEBUG is not set
# CONFIG_IPW2200_DEBUG is not set
CONFIG_LIBIPW=m
# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLEGACY=m
+CONFIG_IWL4965=m
+CONFIG_IWL3945=m
+
+#
+# iwl3945 / iwl4965 Debugging Options
+#
+# CONFIG_IWLEGACY_DEBUG is not set
CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_LEDS=y
CONFIG_IWLDVM=m
CONFIG_IWLMVM=m
CONFIG_IWLWIFI_OPMODE_MODULAR=y
+# CONFIG_IWLWIFI_BCAST_FILTERING is not set
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
#
# Debugging Options
#
# CONFIG_IWLWIFI_DEBUG is not set
# CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLEGACY=m
-CONFIG_IWL4965=m
-CONFIG_IWL3945=m
-
-#
-# iwl3945 / iwl4965 Debugging Options
-#
-# CONFIG_IWLEGACY_DEBUG is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_MESH=y
+CONFIG_WLAN_VENDOR_INTERSIL=y
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_HOSTAP_CS=m
CONFIG_HERMES=m
# CONFIG_HERMES_PRISM is not set
CONFIG_HERMES_CACHE_FW_ON_INIT=y
CONFIG_P54_USB=m
CONFIG_P54_PCI=m
CONFIG_P54_LEDS=y
+# CONFIG_PRISM54 is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_USB=m
+CONFIG_MWL8K=m
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_MT7601U=m
+CONFIG_WLAN_VENDOR_RALINK=y
CONFIG_RT2X00=m
CONFIG_RT2400PCI=m
CONFIG_RT2500PCI=m
CONFIG_RT2X00_LIB_CRYPTO=y
CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
+CONFIG_WLAN_VENDOR_REALTEK=y
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
CONFIG_RTL_CARDS=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
CONFIG_RTL8192DE=m
CONFIG_RTL8723AE=m
+CONFIG_RTL8723BE=m
CONFIG_RTL8188EE=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8821AE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTLWIFI_PCI=m
CONFIG_RTLWIFI_USB=m
# CONFIG_RTLWIFI_DEBUG is not set
CONFIG_RTL8192C_COMMON=m
-CONFIG_WL_TI=y
+CONFIG_RTL8723_COMMON=m
+CONFIG_RTLBTCOEXIST=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_WLAN_VENDOR_RSI=y
+CONFIG_RSI_91X=m
+CONFIG_RSI_DEBUGFS=y
+CONFIG_RSI_SDIO=m
+CONFIG_RSI_USB=m
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
+CONFIG_WLAN_VENDOR_TI=y
CONFIG_WL1251=m
CONFIG_WL1251_SDIO=m
CONFIG_WL12XX=m
CONFIG_WLCORE=m
CONFIG_WLCORE_SDIO=m
CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_WLAN_VENDOR_ZYDAS=y
+CONFIG_USB_ZD1201=m
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-CONFIG_MWIFIEX_PCIE=m
-CONFIG_MWIFIEX_USB=m
-CONFIG_CW1200=m
-CONFIG_CW1200_WLAN_SDIO=m
+# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_PCMCIA_WL3501=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_USB_NET_RNDIS_WLAN=m
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_VMXNET3=m
+CONFIG_FUJITSU_ES=m
CONFIG_HYPERV_NET=m
CONFIG_ISDN=y
CONFIG_ISDN_I4L=m
CONFIG_HISAX_HFCUSB=m
CONFIG_HISAX_HFC4S8S=m
CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
CONFIG_CAPI_TRACE=y
CONFIG_ISDN_CAPI_CAPI20=m
CONFIG_ISDN_CAPI_MIDDLEWARE=y
CONFIG_ISDN_CAPI_CAPIDRV=m
+# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set
#
# CAPI hardware drivers
CONFIG_MISDN_IPAC=m
CONFIG_MISDN_ISAR=m
CONFIG_ISDN_HDLC=m
+CONFIG_NVM=y
+# CONFIG_NVM_DEBUG is not set
+CONFIG_NVM_GENNVM=m
+CONFIG_NVM_RRPC=m
#
# Input device support
#
CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
# CONFIG_INPUT_FF_MEMLESS is not set
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_SPARSEKMAP=m
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ADC=m
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_CYPRESS=y
CONFIG_MOUSE_PS2_ELANTECH=y
CONFIG_MOUSE_PS2_SENTELIC=y
CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_PS2_FOCALTECH=y
+# CONFIG_MOUSE_PS2_VMMOUSE is not set
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_APPLETOUCH=m
CONFIG_MOUSE_BCM5974=m
CONFIG_MOUSE_CYAPA=m
+# CONFIG_MOUSE_ELAN_I2C is not set
CONFIG_MOUSE_VSXXXAA=m
# CONFIG_MOUSE_GPIO is not set
CONFIG_MOUSE_SYNAPTICS_I2C=m
CONFIG_INPUT_MISC=y
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_E3X0_BUTTON is not set
CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_MMA8450 is not set
# CONFIG_INPUT_MPU3050 is not set
CONFIG_INPUT_APANEL=m
# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_BEEPER is not set
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_GPIO_DECODER is not set
CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_RETU_PWRBUTTON=m
+# CONFIG_INPUT_AXP20X_PEK is not set
CONFIG_INPUT_UINPUT=m
# CONFIG_INPUT_PCF8574 is not set
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+# CONFIG_INPUT_DA9063_ONKEY is not set
# CONFIG_INPUT_ADXL34X is not set
# CONFIG_INPUT_IMS_PCU is not set
# CONFIG_INPUT_CMA3000 is not set
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
+# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+# CONFIG_RMI4_CORE is not set
#
# Hardware I/O ports
# CONFIG_SERIO_PS2MULT is not set
CONFIG_SERIO_ARC_PS2=m
CONFIG_HYPERV_KEYBOARD=m
+# CONFIG_USERIO is not set
# CONFIG_GAMEPORT is not set
#
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_NONSTANDARD=y
CONFIG_ROCKETPORT=m
CONFIG_N_HDLC=m
CONFIG_N_GSM=m
# CONFIG_TRACE_SINK is not set
+CONFIG_DEVMEM=y
# CONFIG_DEVKMEM is not set
#
# Serial drivers
#
+CONFIG_SERIAL_EARLYCON=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_FINTEK=y
CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_PCI=y
# CONFIG_SERIAL_8250_CS is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
CONFIG_SERIAL_8250_RSA=y
+# CONFIG_SERIAL_8250_FSL is not set
CONFIG_SERIAL_8250_DW=m
+CONFIG_SERIAL_8250_RT288X=y
+CONFIG_SERIAL_8250_LPSS=y
+CONFIG_SERIAL_8250_MID=y
+# CONFIG_SERIAL_8250_MOXA is not set
#
# Non-8250 serial port support
#
-# CONFIG_SERIAL_MFD_HSU is not set
+# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_JSM=m
CONFIG_SERIAL_SCCNXP=m
-# CONFIG_SERIAL_TIMBERDALE is not set
+CONFIG_SERIAL_SC16IS7XX_CORE=m
+CONFIG_SERIAL_SC16IS7XX=m
+CONFIG_SERIAL_SC16IS7XX_I2C=y
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_PCH_UART is not set
CONFIG_SERIAL_ARC=m
CONFIG_SERIAL_ARC_NR_PORTS=1
CONFIG_SERIAL_RP2=m
# CONFIG_IPMI_PANIC_EVENT is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
+CONFIG_IPMI_SSIF=m
CONFIG_IPMI_WATCHDOG=m
CONFIG_IPMI_POWEROFF=m
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_TIMERIOMEM=m
CONFIG_HW_RANDOM_INTEL=m
CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_ATMEL=m
CONFIG_HW_RANDOM_VIA=m
CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_HW_RANDOM_EXYNOS=m
CONFIG_NVRAM=y
CONFIG_R3964=m
# CONFIG_APPLICOM is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
+# CONFIG_XILLYBUS is not set
+
+#
+# I2C support
+#
CONFIG_I2C=m
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_MUX_PCA9541=m
CONFIG_I2C_MUX_PCA954x=m
CONFIG_I2C_MUX_PINCTRL=m
+CONFIG_I2C_MUX_REG=m
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_SMBUS=m
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_DESIGNWARE_CORE=m
CONFIG_I2C_DESIGNWARE_PLATFORM=m
# CONFIG_I2C_DESIGNWARE_PCI is not set
-# CONFIG_I2C_EG20T is not set
+CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
+CONFIG_I2C_EMEV2=m
# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_OCORES is not set
CONFIG_I2C_PCA_PLATFORM=m
# External I2C/SMBus adapter drivers
#
CONFIG_I2C_DIOLAN_U2C=m
+# CONFIG_I2C_DLN2 is not set
CONFIG_I2C_PARPORT=m
CONFIG_I2C_PARPORT_LIGHT=m
CONFIG_I2C_ROBOTFUZZ_OSIF=m
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_STUB is not set
+CONFIG_I2C_SLAVE=y
+CONFIG_I2C_SLAVE_EEPROM=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_SPI is not set
+CONFIG_SPMI=m
CONFIG_HSI=m
CONFIG_HSI_BOARDINFO=y
+#
+# HSI controllers
+#
+
#
# HSI clients
#
#
# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
#
-CONFIG_PTP_1588_CLOCK_PCH=m
CONFIG_PINCTRL=y
#
# Pin controllers
#
-# CONFIG_PINMUX is not set
-# CONFIG_PINCONF is not set
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
# CONFIG_DEBUG_PINCTRL is not set
+CONFIG_PINCTRL_AMD=m
CONFIG_PINCTRL_BAYTRAIL=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_PINCTRL_CHERRYVIEW=m
+CONFIG_PINCTRL_INTEL=m
+CONFIG_PINCTRL_BROXTON=m
+CONFIG_PINCTRL_SUNRISEPOINT=m
CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
CONFIG_GPIO_ACPI=y
+CONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=m
#
-# Memory mapped GPIO drivers:
+# Memory mapped GPIO drivers
#
+CONFIG_GPIO_AMDPT=m
+# CONFIG_GPIO_AXP209 is not set
+CONFIG_GPIO_DWAPB=m
# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-CONFIG_GPIO_F7188X=m
-CONFIG_GPIO_SCH311X=m
-CONFIG_GPIO_TS5500=m
-CONFIG_GPIO_SCH=m
CONFIG_GPIO_ICH=m
-# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_LYNXPOINT is not set
+CONFIG_GPIO_MOCKUP=m
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_ZX is not set
+
+#
+# Port-mapped I/O GPIO drivers
+#
+CONFIG_GPIO_F7188X=m
+CONFIG_GPIO_IT87=m
+CONFIG_GPIO_SCH=m
+CONFIG_GPIO_SCH311X=m
#
-# I2C GPIO expanders:
+# I2C GPIO expanders
#
+# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-# CONFIG_GPIO_CS5535 is not set
-# CONFIG_GPIO_AMD8111 is not set
-# CONFIG_GPIO_INTEL_MID is not set
-# CONFIG_GPIO_PCH is not set
-# CONFIG_GPIO_ML_IOH is not set
-# CONFIG_GPIO_RDC321X is not set
+CONFIG_GPIO_TPIC2810=m
+# CONFIG_GPIO_TS4900 is not set
#
-# SPI GPIO expanders:
+# MFD GPIO expanders
#
+# CONFIG_GPIO_DLN2 is not set
#
-# AC97 GPIO expanders:
-#
-
-#
-# LPC GPIO expanders:
+# PCI GPIO expanders
#
+# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_RDC321X is not set
#
-# MODULbus GPIO expanders:
+# SPI or I2C GPIO expanders
#
#
-# USB GPIO expanders:
+# USB GPIO expanders
#
CONFIG_GPIO_VIPERBOARD=m
CONFIG_W1=m
CONFIG_W1_SLAVE_DS2408=m
CONFIG_W1_SLAVE_DS2408_READBACK=y
CONFIG_W1_SLAVE_DS2413=m
+CONFIG_W1_SLAVE_DS2406=m
CONFIG_W1_SLAVE_DS2423=m
CONFIG_W1_SLAVE_DS2431=m
CONFIG_W1_SLAVE_DS2433=m
CONFIG_W1_SLAVE_DS2781=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_AVS=y
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_RESTART is not set
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_BATTERY_DS2781 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_DA9150 is not set
+# CONFIG_AXP288_FUEL_GAUGE is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_CHARGER_ISP1704 is not set
# CONFIG_CHARGER_GPIO is not set
# CONFIG_CHARGER_BQ2415X is not set
# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
# CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_SMB347 is not set
-CONFIG_POWER_RESET=y
-CONFIG_POWER_AVS=y
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
+# CONFIG_AXP20X_POWER is not set
CONFIG_HWMON=y
CONFIG_HWMON_VID=m
# CONFIG_HWMON_DEBUG_CHIP is not set
CONFIG_SENSORS_K8TEMP=m
CONFIG_SENSORS_K10TEMP=m
CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_APPLESMC=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS620=m
CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_DELL_SMM=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_F71805F=m
CONFIG_SENSORS_F71882FG=m
CONFIG_SENSORS_F75375S=m
CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_G762=m
+CONFIG_SENSORS_FTSTEUTATES=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
# CONFIG_SENSORS_GPIO_FAN is not set
CONFIG_SENSORS_HIH6130=m
-CONFIG_SENSORS_HTU21=m
-CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_IBMAEM=m
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
+CONFIG_SENSORS_I5500=m
+CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_IT87=m
# CONFIG_SENSORS_JC42 is not set
+CONFIG_SENSORS_POWR1220=m
CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
+CONFIG_SENSORS_LTC4151=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4222=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LTC4260=m
+CONFIG_SENSORS_LTC4261=m
+CONFIG_SENSORS_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+CONFIG_SENSORS_MAX6639=m
+CONFIG_SENSORS_MAX6642=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MAX31790=m
+CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM73=m
CONFIG_SENSORS_LM75=m
CONFIG_SENSORS_LM90=m
CONFIG_SENSORS_LM92=m
CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_LM95234=m
CONFIG_SENSORS_LM95241=m
CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX197=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_MAX6697=m
-CONFIG_SENSORS_MCP3021=m
-CONFIG_SENSORS_NCT6775=m
-CONFIG_SENSORS_NTC_THERMISTOR=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
+CONFIG_SENSORS_NCT6683=m
+CONFIG_SENSORS_NCT6775=m
+CONFIG_SENSORS_NCT7802=m
+CONFIG_SENSORS_NCT7904=m
CONFIG_SENSORS_PCF8591=m
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_ADM1275=m
CONFIG_SENSORS_LM25066=m
# CONFIG_SENSORS_LTC2978 is not set
+CONFIG_SENSORS_LTC3815=m
CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX20751=m
CONFIG_SENSORS_MAX34440=m
CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_TPS40422=m
CONFIG_SENSORS_UCD9000=m
CONFIG_SENSORS_UCD9200=m
# CONFIG_SENSORS_ZL6100 is not set
CONFIG_SENSORS_SHT15=m
CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SHT3x=m
+CONFIG_SENSORS_SHTC1=m
CONFIG_SENSORS_SIS5595=m
-# CONFIG_SENSORS_SMM665 is not set
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_EMC1403=m
# CONFIG_SENSORS_EMC2103 is not set
CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
CONFIG_SENSORS_SCH5636=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_ADC128D818=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_AMC6821=m
CONFIG_SENSORS_INA209=m
CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_INA3221=m
+CONFIG_SENSORS_TC74=m
CONFIG_SENSORS_THMC50=m
CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP103=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_VIA_CPUTEMP=m
CONFIG_SENSORS_W83L786NG=m
CONFIG_SENSORS_W83627HF=m
CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_APPLESMC=m
#
# ACPI drivers
CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=y
CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
CONFIG_THERMAL_EMULATION=y
CONFIG_INTEL_POWERCLAMP=m
CONFIG_X86_PKG_TEMP_THERMAL=m
-CONFIG_ACPI_INT3403_THERMAL=m
+CONFIG_INTEL_SOC_DTS_IOSF_CORE=m
+CONFIG_INTEL_SOC_DTS_THERMAL=m
#
-# Texas Instruments thermal drivers
+# ACPI INT340X thermal drivers
#
+CONFIG_INT340X_THERMAL=m
+CONFIG_ACPI_THERMAL_REL=m
+CONFIG_INT3406_THERMAL=m
+CONFIG_INTEL_PCH_THERMAL=m
+CONFIG_GENERIC_ADC_THERMAL=m
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
CONFIG_WATCHDOG_NOWAYOUT=y
+CONFIG_WATCHDOG_SYSFS=y
#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=m
+# CONFIG_DA9063_WATCHDOG is not set
+# CONFIG_DA9062_WATCHDOG is not set
+CONFIG_WDAT_WDT=m
+CONFIG_XILINX_WATCHDOG=m
+CONFIG_ZIIRAVE_WATCHDOG=m
+CONFIG_CADENCE_WATCHDOG=m
CONFIG_DW_WATCHDOG=m
+CONFIG_MAX63XX_WATCHDOG=m
CONFIG_RETU_WATCHDOG=m
CONFIG_ACQUIRE_WDT=m
CONFIG_ADVANTECH_WDT=m
CONFIG_ALIM7101_WDT=m
CONFIG_F71808E_WDT=m
CONFIG_SP5100_TCO=m
-CONFIG_GEODE_WDT=m
-CONFIG_SC520_WDT=m
CONFIG_SBC_FITPC2_WATCHDOG=m
CONFIG_EUROTECH_WDT=m
CONFIG_IB700_WDT=m
CONFIG_PC87413_WDT=m
CONFIG_NV_TCO=m
CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
CONFIG_CPU5_WDT=m
CONFIG_SMSC_SCH311X_WDT=m
CONFIG_SMSC37B787_WDT=m
CONFIG_VIA_WDT=m
CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
CONFIG_W83877F_WDT=m
CONFIG_W83977F_WDT=m
CONFIG_MACHZ_WDT=m
CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_NI903X_WDT=m
CONFIG_MEN_A21_WDT=m
CONFIG_XEN_WDT=m
# USB-based Watchdog Cards
#
CONFIG_USBPCWATCHDOG=m
+
+#
+# Watchdog Pretimeout Governors
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
CONFIG_SSB_POSSIBLE=y
#
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
CONFIG_BCMA_HOST_PCI=y
CONFIG_BCMA_HOST_SOC=y
+CONFIG_BCMA_DRIVER_PCI=y
+CONFIG_BCMA_SFLASH=y
CONFIG_BCMA_DRIVER_GMAC_CMN=y
CONFIG_BCMA_DRIVER_GPIO=y
# CONFIG_BCMA_DEBUG is not set
# Multifunction device drivers
#
CONFIG_MFD_CORE=m
-CONFIG_MFD_CS5535=m
+CONFIG_MFD_BCM590XX=m
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
# CONFIG_MFD_CROS_EC is not set
+CONFIG_MFD_DA9062=m
+CONFIG_MFD_DA9063=m
+CONFIG_MFD_DA9150=m
+CONFIG_MFD_DLN2=m
+# CONFIG_MFD_EXYNOS_LPASS is not set
# CONFIG_MFD_MC13XXX_I2C is not set
# CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
CONFIG_LPC_ICH=m
CONFIG_LPC_SCH=m
+# CONFIG_MFD_INTEL_LPSS_ACPI is not set
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
# CONFIG_MFD_JANZ_CMODIO is not set
# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_RETU=m
# CONFIG_MFD_PCF50633 is not set
# CONFIG_UCB1400_CORE is not set
# CONFIG_MFD_RDC321X is not set
CONFIG_MFD_RTSX_PCI=m
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RTSX_USB is not set
# CONFIG_MFD_SI476X_CORE is not set
CONFIG_MFD_SM501=m
CONFIG_MFD_SM501_GPIO=y
+# CONFIG_MFD_SKY81452 is not set
# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_SYSCON is not set
+CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP3943 is not set
# CONFIG_TPS6105X is not set
# CONFIG_TPS65010 is not set
# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
# CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
CONFIG_MFD_WL1273_CORE=m
CONFIG_MFD_LM3533=m
-# CONFIG_MFD_TIMBERDALE is not set
# CONFIG_MFD_TMIO is not set
CONFIG_MFD_VX855=m
# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_WM8994 is not set
# CONFIG_REGULATOR is not set
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
# CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_SDR_SUPPORT is not set
CONFIG_MEDIA_RC_SUPPORT=y
CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER_DVB is not set
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_VIDEO_V4L2=m
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+# CONFIG_VIDEO_PCI_SKELETON is not set
CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_VIDEOBUF_GEN=m
CONFIG_VIDEOBUF_DMA_SG=m
CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DMA_CONTIG=m
CONFIG_VIDEOBUF_DVB=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
CONFIG_VIDEOBUF2_DMA_CONTIG=m
CONFIG_VIDEOBUF2_VMALLOC=m
+CONFIG_VIDEOBUF2_DMA_SG=m
+CONFIG_VIDEOBUF2_DVB=m
CONFIG_DVB_CORE=m
CONFIG_DVB_NET=y
CONFIG_TTPCI_EEPROM=m
CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_SHARP_DECODER=m
CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
+CONFIG_IR_HIX5HD2=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_ITE_CIR=m
CONFIG_IR_REDRAT3=m
CONFIG_IR_STREAMZAP=m
CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
CONFIG_RC_LOOPBACK=m
CONFIG_USB_GSPCA_BENQ=m
CONFIG_USB_GSPCA_CONEX=m
CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_DTCS033=m
CONFIG_USB_GSPCA_ETOMS=m
CONFIG_USB_GSPCA_FINEPIX=m
CONFIG_USB_GSPCA_JEILINJ=m
CONFIG_USB_GSPCA_SUNPLUS=m
CONFIG_USB_GSPCA_T613=m
CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TOUPTEK=m
CONFIG_USB_GSPCA_TV8532=m
CONFIG_USB_GSPCA_VC032X=m
CONFIG_USB_GSPCA_VICAM=m
CONFIG_VIDEO_PVRUSB2_DVB=y
# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_USBVISION=m
CONFIG_VIDEO_STK1160_COMMON=m
CONFIG_VIDEO_STK1160_AC97=y
CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+CONFIG_VIDEO_GO7007_LOADER=m
+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
#
# Analog/digital TV USB devices
#
CONFIG_VIDEO_AU0828=m
CONFIG_VIDEO_AU0828_V4L2=y
+# CONFIG_VIDEO_AU0828_RC is not set
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
CONFIG_VIDEO_CX231XX_ALSA=m
#
CONFIG_DVB_USB=m
# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_DIB3000MC=m
CONFIG_DVB_USB_A800=m
CONFIG_DVB_USB_DIBUSB_MB=m
CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
CONFIG_DVB_USB_CE6230=m
CONFIG_DVB_USB_EC168=m
CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_IT913X=m
CONFIG_DVB_USB_LME2510=m
CONFIG_DVB_USB_MXL111SF=m
CONFIG_DVB_USB_RTL28XXU=m
CONFIG_SMS_USB_DRV=m
CONFIG_DVB_B2C2_FLEXCOP_USB=m
# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+CONFIG_DVB_AS102=m
#
# Webcam, TV (analog/digital) USB devices
# Media capture support
#
CONFIG_VIDEO_MEYE=m
-
-#
-# Media capture/analog TV support
-#
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_IVTV_ALSA=m
-CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_TW5864=m
+CONFIG_VIDEO_TW68=m
+CONFIG_VIDEO_TW686X=m
CONFIG_VIDEO_ZORAN=m
CONFIG_VIDEO_ZORAN_DC30=m
CONFIG_VIDEO_ZORAN_ZR36060=m
CONFIG_VIDEO_ZORAN_LML33=m
CONFIG_VIDEO_ZORAN_LML33R10=m
CONFIG_VIDEO_ZORAN_AVS6EYES=m
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+CONFIG_VIDEO_FB_IVTV=m
CONFIG_VIDEO_HEXIUM_GEMINI=m
CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DT3155=m
#
# Media capture/analog/hybrid TV support
CONFIG_VIDEO_CX88_ENABLE_VP3054=y
CONFIG_VIDEO_CX88_VP3054=m
CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_BT848=m
-CONFIG_DVB_BT8XX=m
CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_RC=y
CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_GO7007=m
CONFIG_VIDEO_SAA7164=m
#
# Media digital TV PCI Adapters
#
+CONFIG_DVB_AV7110_IR=y
CONFIG_DVB_AV7110=m
CONFIG_DVB_AV7110_OSD=y
CONFIG_DVB_BUDGET_CORE=m
CONFIG_DVB_PLUTO2=m
CONFIG_DVB_DM1105=m
CONFIG_DVB_PT1=m
+CONFIG_DVB_PT3=m
CONFIG_MANTIS_CORE=m
CONFIG_DVB_MANTIS=m
CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
CONFIG_DVB_DDBRIDGE=m
+CONFIG_DVB_SMIPCIE=m
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_VIDEO_CAFE_CCIC=m
# CONFIG_VIDEO_VIA_CAMERA is not set
-CONFIG_VIDEO_TIMBERDALE=m
CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_SCALE_CROP=m
CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_VIDEO_RCAR_VIN=m
-CONFIG_VIDEO_SH_MOBILE_CSI2=m
-CONFIG_VIDEO_SH_MOBILE_CEU=m
CONFIG_V4L_MEM2MEM_DRIVERS=y
CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
CONFIG_VIDEO_SH_VEU=m
-CONFIG_VIDEO_RENESAS_VSP1=m
# CONFIG_V4L_TEST_DRIVERS is not set
+# CONFIG_DVB_PLATFORM_DRIVERS is not set
#
# Supported MMC/SDIO adapters
#
# CONFIG_SMS_SDIO_DRV is not set
-# CONFIG_MEDIA_PARPORT_SUPPORT is not set
#
# Supported FireWire (IEEE 1394) Adapters
# common driver options
#
CONFIG_VIDEO_CX2341X=m
-CONFIG_VIDEO_BTCX=m
CONFIG_VIDEO_TVEEPROM=m
CONFIG_CYPRESS_FIRMWARE=m
CONFIG_DVB_B2C2_FLEXCOP=m
CONFIG_SMS_SIANO_RC=y
#
-# Media ancillary drivers (tuners, sensors, i2c, frontends)
+# Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
#
CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
CONFIG_MEDIA_ATTACH=y
#
# Audio decoders, processors and mixers
#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
CONFIG_VIDEO_TDA9840=m
CONFIG_VIDEO_TEA6415C=m
CONFIG_VIDEO_TEA6420=m
CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS3308=m
CONFIG_VIDEO_CS5345=m
CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_UDA1342=m
CONFIG_VIDEO_WM8775=m
CONFIG_VIDEO_WM8739=m
CONFIG_VIDEO_VP27SMPX=m
+CONFIG_VIDEO_SONY_BTF_MPX=m
#
# RDS decoders
#
# Video decoders
#
-CONFIG_VIDEO_ADV7180=m
CONFIG_VIDEO_BT819=m
CONFIG_VIDEO_BT856=m
CONFIG_VIDEO_BT866=m
CONFIG_VIDEO_SAA7110=m
CONFIG_VIDEO_SAA711X=m
CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_TW2804=m
+CONFIG_VIDEO_TW9903=m
+CONFIG_VIDEO_TW9906=m
CONFIG_VIDEO_VPX3220=m
#
#
# Camera sensor devices
#
+CONFIG_VIDEO_OV7640=m
CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9M111=m
CONFIG_VIDEO_MT9V011=m
#
CONFIG_MEDIA_TUNER_TDA18212=m
CONFIG_MEDIA_TUNER_E4000=m
CONFIG_MEDIA_TUNER_FC2580=m
-CONFIG_MEDIA_TUNER_M88TS2022=m
+CONFIG_MEDIA_TUNER_M88RS6000T=m
CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_TUNER_IT913X=m
CONFIG_MEDIA_TUNER_R820T=m
+CONFIG_MEDIA_TUNER_MXL301RF=m
+CONFIG_MEDIA_TUNER_QM1D1C0042=m
#
# Multistandard (satellite) frontends
#
CONFIG_DVB_DRXK=m
CONFIG_DVB_TDA18271C2DD=m
+CONFIG_DVB_SI2165=m
+CONFIG_DVB_MN88472=m
+CONFIG_DVB_MN88473=m
#
# DVB-S (satellite) frontends
#
-CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_MT312=m
CONFIG_DVB_ZL10036=m
CONFIG_DVB_TUA6100=m
CONFIG_DVB_CX24116=m
CONFIG_DVB_CX24117=m
+CONFIG_DVB_CX24120=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_TS2020=m
CONFIG_DVB_DS3000=m
# DVB-T (terrestrial) frontends
#
CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22700=m
CONFIG_DVB_CX22702=m
CONFIG_DVB_DRXD=m
CONFIG_DVB_CXD2820R=m
CONFIG_DVB_RTL2830=m
CONFIG_DVB_RTL2832=m
+CONFIG_DVB_SI2168=m
+CONFIG_DVB_AS102_FE=m
+CONFIG_DVB_GP8PSK_FE=m
#
# DVB-C (cable) frontends
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LGDT3306A=m
CONFIG_DVB_LG2160=m
CONFIG_DVB_S5H1409=m
CONFIG_DVB_AU8522=m
CONFIG_DVB_DIB8000=m
CONFIG_DVB_MB86A20S=m
+#
+# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_TC90522=m
+
#
# Digital terrestrial only tuners/PLL
#
#
# SEC control devices for DVB-S
#
+CONFIG_DVB_DRX39XYJ=m
CONFIG_DVB_LNBP21=m
CONFIG_DVB_LNBP22=m
CONFIG_DVB_ISL6405=m
CONFIG_DVB_ISL6421=m
CONFIG_DVB_ISL6423=m
CONFIG_DVB_A8293=m
+CONFIG_DVB_SP2=m
CONFIG_DVB_LGS8GXX=m
CONFIG_DVB_ATBM8830=m
CONFIG_DVB_TDA665x=m
-CONFIG_DVB_DVBSKY_M88DS3103=m
-CONFIG_DVB_M88DC2800=m
CONFIG_DVB_IX2505V=m
-CONFIG_DVB_IT913X_FE=m
CONFIG_DVB_M88RS2000=m
CONFIG_DVB_AF9033=m
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VGA_SWITCHEROO=y
CONFIG_DRM=m
-CONFIG_DRM_USB=m
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
CONFIG_DRM_TTM=m
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
CONFIG_DRM_I2C_NXP_TDA998X=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
-# CONFIG_DRM_RADEON_UMS is not set
+# CONFIG_DRM_RADEON_USERPTR is not set
+CONFIG_DRM_AMDGPU=m
+# CONFIG_DRM_AMDGPU_SI is not set
+# CONFIG_DRM_AMDGPU_CIK is not set
+# CONFIG_DRM_AMDGPU_USERPTR is not set
+# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-CONFIG_DRM_I810=m
CONFIG_DRM_I915=m
-CONFIG_DRM_I915_KMS=y
-CONFIG_DRM_I915_FBDEV=y
CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y
-# CONFIG_DRM_I915_UMS is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_I915_USERPTR=y
+CONFIG_DRM_I915_GVT=y
+
+#
+# drm/i915 Debugging
+#
+# CONFIG_DRM_I915_WERROR is not set
+# CONFIG_DRM_I915_DEBUG is not set
+# CONFIG_DRM_VGEM is not set
CONFIG_DRM_VMWGFX=m
# CONFIG_DRM_VMWGFX_FBCON is not set
CONFIG_DRM_GMA500=m
CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_QXL=m
CONFIG_DRM_BOCHS=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_HDMI=y
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+CONFIG_DRM_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+CONFIG_DRM_ANALOGIX_ANX78XX=m
+# CONFIG_DRM_LEGACY is not set
+
+#
+# Frame buffer Devices
+#
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
CONFIG_FB_DDC=m
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_ARK=m
CONFIG_FB_PM3=m
# CONFIG_FB_CARMINE is not set
-# CONFIG_FB_TMIO is not set
# CONFIG_FB_SM501 is not set
CONFIG_FB_SMSCUFX=m
CONFIG_FB_UDL=m
-# CONFIG_FB_GOLDFISH is not set
+CONFIG_FB_IBM_GXT4500=m
# CONFIG_FB_VIRTUAL is not set
CONFIG_XEN_FBDEV_FRONTEND=m
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_AUO_K190X is not set
CONFIG_FB_HYPERV=m
CONFIG_FB_SIMPLE=y
-# CONFIG_EXYNOS_VIDEO is not set
+CONFIG_FB_SM712=m
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_PLATFORM=m
# CONFIG_BACKLIGHT_LM3533 is not set
# CONFIG_BACKLIGHT_CARILLO_RANCH is not set
CONFIG_BACKLIGHT_APPLE=m
+CONFIG_BACKLIGHT_PM8941_WLED=m
# CONFIG_BACKLIGHT_SAHARA is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
-# CONFIG_BACKLIGHT_LP855X is not set
# CONFIG_BACKLIGHT_GPIO is not set
# CONFIG_BACKLIGHT_LV5207LP is not set
# CONFIG_BACKLIGHT_BD6107 is not set
+CONFIG_VGASTATE=m
+CONFIG_HDMI=y
#
# Console display driver support
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCM_TIMER=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_HRTIMER=m
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_MAX_CARDS=32
# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_PROC_FS=y
CONFIG_SND_VERBOSE_PROCFS=y
CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DEBUG=y
# CONFIG_SND_DEBUG_VERBOSE is not set
CONFIG_SND_PCM_XRUN_DEBUG=y
CONFIG_SND_VMASTER=y
-CONFIG_SND_KCTL_JACK=y
CONFIG_SND_DMA_SGBUF=y
CONFIG_SND_RAWMIDI_SEQ=m
CONFIG_SND_OPL3_LIB_SEQ=m
CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
CONFIG_SND_SB_COMMON=m
-CONFIG_SND_SB16_DSP=m
CONFIG_SND_PCI=y
CONFIG_SND_AD1889=m
CONFIG_SND_ALS300=m
CONFIG_SND_CS4281=m
CONFIG_SND_CS46XX=m
CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_CS5530=m
-CONFIG_SND_CS5535AUDIO=m
CONFIG_SND_CTXFI=m
CONFIG_SND_DARLA20=m
CONFIG_SND_GINA20=m
CONFIG_SND_ES1968=m
CONFIG_SND_ES1968_INPUT=y
CONFIG_SND_FM801=m
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_HDA_HWDEP=y
-CONFIG_SND_HDA_RECONFIG=y
-CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=1
-CONFIG_SND_HDA_INPUT_JACK=y
-# CONFIG_SND_HDA_PATCH_LOADER is not set
-CONFIG_SND_HDA_CODEC_REALTEK=m
-CONFIG_SND_HDA_CODEC_ANALOG=m
-CONFIG_SND_HDA_CODEC_SIGMATEL=m
-CONFIG_SND_HDA_CODEC_VIA=m
-CONFIG_SND_HDA_CODEC_HDMI=m
-CONFIG_SND_HDA_I915=y
-CONFIG_SND_HDA_CODEC_CIRRUS=m
-CONFIG_SND_HDA_CODEC_CONEXANT=m
-CONFIG_SND_HDA_CODEC_CA0110=m
-CONFIG_SND_HDA_CODEC_CA0132=m
-# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-CONFIG_SND_HDA_CODEC_CMEDIA=m
-CONFIG_SND_HDA_CODEC_SI3054=m
-CONFIG_SND_HDA_GENERIC=m
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
CONFIG_SND_HDSP=m
CONFIG_SND_HDSPM=m
CONFIG_SND_ICE1712=m
CONFIG_SND_VIRTUOSO=m
CONFIG_SND_VX222=m
CONFIG_SND_YMFPCI=m
+
+#
+# HD-Audio
+#
+CONFIG_SND_HDA=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
+# CONFIG_SND_HDA_PATCH_LOADER is not set
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_GENERIC=m
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_CORE=m
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_PREALLOC_SIZE=64
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_UA101=m
CONFIG_SND_USB_US122L=m
CONFIG_SND_USB_6FIRE=m
CONFIG_SND_USB_HIFACE=m
+CONFIG_SND_BCD2000=m
+CONFIG_SND_USB_LINE6=m
+CONFIG_SND_USB_POD=m
+CONFIG_SND_USB_PODHD=m
+CONFIG_SND_USB_TONEPORT=m
+CONFIG_SND_USB_VARIAX=m
CONFIG_SND_FIREWIRE=y
CONFIG_SND_FIREWIRE_LIB=m
# CONFIG_SND_DICE is not set
-CONFIG_SND_FIREWIRE_SPEAKERS=m
+CONFIG_SND_OXFW=m
# CONFIG_SND_ISIGHT is not set
-# CONFIG_SND_SCS1X is not set
+CONFIG_SND_FIREWORKS=m
+CONFIG_SND_BEBOB=m
+CONFIG_SND_FIREWIRE_DIGI00X=m
+CONFIG_SND_FIREWIRE_TASCAM=m
CONFIG_SND_PCMCIA=y
# CONFIG_SND_VXPOCKET is not set
# CONFIG_SND_PDAUDIOCF is not set
# CONFIG_HID_ACRUX is not set
CONFIG_HID_APPLE=y
# CONFIG_HID_APPLEIR is not set
+CONFIG_HID_ASUS=m
CONFIG_HID_AUREAL=m
CONFIG_HID_BELKIN=y
+# CONFIG_HID_BETOP_FF is not set
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
+# CONFIG_HID_CORSAIR is not set
# CONFIG_HID_PRODIKEYS is not set
+# CONFIG_HID_CMEDIA is not set
+# CONFIG_HID_CP2112 is not set
CONFIG_HID_CYPRESS=y
# CONFIG_HID_DRAGONRISE is not set
# CONFIG_HID_EMS_FF is not set
# CONFIG_HID_ELECOM is not set
# CONFIG_HID_ELO is not set
CONFIG_HID_EZKEY=y
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
# CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_HUION is not set
+# CONFIG_HID_GT683R is not set
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=y
# CONFIG_HID_UCLOGIC is not set
CONFIG_HID_TWINHAN=m
CONFIG_HID_KENSINGTON=y
CONFIG_HID_LCPOWER=m
-CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LED=m
+CONFIG_HID_LENOVO=m
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=m
+CONFIG_HID_LOGITECH_HIDPP=m
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_HID_NTRIG is not set
CONFIG_HID_ORTEK=m
# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PENMOUNT is not set
CONFIG_HID_PETALYNX=m
CONFIG_HID_PICOLCD=m
CONFIG_HID_PICOLCD_FB=y
CONFIG_HID_PICOLCD_LCD=y
CONFIG_HID_PICOLCD_LEDS=y
CONFIG_HID_PICOLCD_CIR=y
+# CONFIG_HID_PLANTRONICS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=m
CONFIG_HID_SAITEK=m
CONFIG_HID_SPEEDLINK=m
# CONFIG_HID_STEELSERIES is not set
CONFIG_HID_SUNPLUS=m
+# CONFIG_HID_RMI is not set
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_HYPERV_MOUSE is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_ZEROPLUS is not set
CONFIG_HID_ZYDACRON=m
CONFIG_HID_SENSOR_HUB=m
+# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set
+# CONFIG_HID_ALPS is not set
#
# USB HID support
# I2C HID support
#
CONFIG_I2C_HID=m
+
+#
+# Intel ISH HID support
+#
+CONFIG_INTEL_ISH_HID=m
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
CONFIG_USB_OTG=y
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_OTG_FSM=m
+CONFIG_USB_LEDS_TRIGGER_USBPORT=m
CONFIG_USB_MON=m
CONFIG_USB_WUSB=m
CONFIG_USB_WUSB_CBAF=m
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
CONFIG_USB_XHCI_PLATFORM=m
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_HCD_PLATFORM=y
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
CONFIG_USB_ISP1362_HCD=m
-# CONFIG_USB_FUSBH200_HCD is not set
# CONFIG_USB_FOTG210_HCD is not set
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PCI=m
CONFIG_USB_STORAGE_KARMA=m
CONFIG_USB_STORAGE_CYPRESS_ATACB=m
CONFIG_USB_STORAGE_ENE_UB6250=m
+CONFIG_USB_UAS=y
#
# USB Imaging devices
#
CONFIG_USB_MDC800=m
CONFIG_USB_MICROTEK=m
+CONFIG_USBIP_CORE=m
+CONFIG_USBIP_VHCI_HCD=m
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
+CONFIG_USBIP_HOST=m
+# CONFIG_USBIP_DEBUG is not set
# CONFIG_USB_MUSB_HDRC is not set
CONFIG_USB_DWC3=m
CONFIG_USB_DWC3_HOST=y
#
# Platform Glue Driver Support
#
-# CONFIG_USB_DWC3_EXYNOS is not set
CONFIG_USB_DWC3_PCI=m
-CONFIG_USB_DWC3_KEYSTONE=m
-
-#
-# Debugging features
-#
-# CONFIG_USB_DWC3_DEBUG is not set
# CONFIG_USB_DWC2 is not set
CONFIG_USB_CHIPIDEA=m
# CONFIG_USB_CHIPIDEA_HOST is not set
-# CONFIG_USB_CHIPIDEA_DEBUG is not set
+# CONFIG_USB_ISP1760 is not set
#
# USB port drivers
# CONFIG_USB_SERIAL_OPTICON is not set
# CONFIG_USB_SERIAL_XSENS_MT is not set
# CONFIG_USB_SERIAL_WISHBONE is not set
-CONFIG_USB_SERIAL_ZTE=m
CONFIG_USB_SERIAL_SSU100=m
CONFIG_USB_SERIAL_QT2=m
# CONFIG_USB_SERIAL_DEBUG is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_IDMOUSE is not set
CONFIG_USB_YUREX=m
CONFIG_USB_EZUSB_FX2=m
CONFIG_USB_HSIC_USB3503=m
+# CONFIG_USB_HSIC_USB4604 is not set
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_CHAOSKEY is not set
+# CONFIG_UCSI is not set
CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
CONFIG_USB_CXACRU=m
# USB Physical Layer drivers
#
CONFIG_USB_PHY=y
-CONFIG_USB_OTG_FSM=m
# CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_SAMSUNG_USB2PHY is not set
-# CONFIG_SAMSUNG_USB3PHY is not set
# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_TAHVO_USB is not set
# CONFIG_USB_ISP1301 is not set
-# CONFIG_USB_RCAR_PHY is not set
# CONFIG_USB_GADGET is not set
+# CONFIG_USB_LED_TRIG is not set
+# CONFIG_USB_ULPI_BUS is not set
CONFIG_UWB=m
CONFIG_UWB_HWA=m
CONFIG_UWB_WHCI=m
CONFIG_UWB_I1480U=m
CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
#
# MMC/SD/SDIO Card Drivers
CONFIG_MMC_RICOH_MMC=y
CONFIG_MMC_SDHCI_ACPI=m
CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_SDHCI_PXAV3=m
-CONFIG_MMC_SDHCI_PXAV2=m
CONFIG_MMC_WBSD=m
CONFIG_MMC_TIFM_SD=m
# CONFIG_MMC_SDRICOH_CS is not set
CONFIG_MMC_VIA_SDMMC=m
CONFIG_MMC_VUB300=m
CONFIG_MMC_USHC=m
+# CONFIG_MMC_USDHI6ROL0 is not set
CONFIG_MMC_REALTEK_PCI=m
+# CONFIG_MMC_TOSHIBA_PCI is not set
+# CONFIG_MMC_MTK is not set
CONFIG_MEMSTICK=m
# CONFIG_MEMSTICK_DEBUG is not set
CONFIG_MEMSTICK_REALTEK_PCI=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
+# CONFIG_LEDS_CLASS_FLASH is not set
#
# LED drivers
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
CONFIG_LEDS_LP3944=m
+# CONFIG_LEDS_LP3952 is not set
CONFIG_LEDS_LP55XX_COMMON=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
CONFIG_LEDS_LP5562=m
CONFIG_LEDS_LP8501=m
+# CONFIG_LEDS_LP8860 is not set
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_PCA955X=m
CONFIG_LEDS_PCA963X=m
-CONFIG_LEDS_PCA9685=m
CONFIG_LEDS_BD2802=m
CONFIG_LEDS_INTEL_SS4200=m
CONFIG_LEDS_LT3593=m
-CONFIG_LEDS_DELL_NETBOOKS=m
CONFIG_LEDS_TCA6507=m
+# CONFIG_LEDS_TLC591XX is not set
CONFIG_LEDS_LM355x=m
-CONFIG_LEDS_OT200=m
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
CONFIG_LEDS_BLINKM=m
+# CONFIG_LEDS_MLXCPLD is not set
#
# LED Triggers
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_CPU=y
#
CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_LEDS_TRIGGER_NETDEV=m
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
CONFIG_EDAC=y
# CONFIG_EDAC_LEGACY_SYSFS is not set
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_DECODE_MCE=m
-CONFIG_EDAC_MCE_INJ=m
CONFIG_EDAC_MM_EDAC=m
CONFIG_EDAC_AMD64=m
# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
CONFIG_EDAC_I82975X=m
CONFIG_EDAC_I3000=m
CONFIG_EDAC_I3200=m
+# CONFIG_EDAC_IE31200 is not set
CONFIG_EDAC_X38=m
CONFIG_EDAC_I5400=m
CONFIG_EDAC_I7CORE=m
CONFIG_EDAC_I5100=m
CONFIG_EDAC_I7300=m
CONFIG_EDAC_SBRIDGE=m
+CONFIG_EDAC_SKX=m
CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
#
# I2C RTC drivers
#
+CONFIG_RTC_DRV_ABB5ZES3=m
+CONFIG_RTC_DRV_ABX80X=m
CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
+# CONFIG_RTC_DRV_DS1307_CENTURY is not set
CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
CONFIG_RTC_DRV_MAX6900=m
CONFIG_RTC_DRV_RS5C372=m
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_ISL12057=m
CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF2127=m
CONFIG_RTC_DRV_PCF8523=m
+CONFIG_RTC_DRV_PCF85063=m
CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_M41T80=m
CONFIG_RTC_DRV_M41T80_WDT=y
CONFIG_RTC_DRV_BQ32K=m
-# CONFIG_RTC_DRV_S35390A is not set
+CONFIG_RTC_DRV_S35390A=m
CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8010=m
CONFIG_RTC_DRV_RX8581=m
CONFIG_RTC_DRV_RX8025=m
CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV8803=m
#
# SPI RTC drivers
#
+CONFIG_RTC_I2C_AND_SPI=m
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
#
# Platform RTC drivers
CONFIG_RTC_DRV_DS1286=m
CONFIG_RTC_DRV_DS1511=m
CONFIG_RTC_DRV_DS1553=m
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_DS2404=m
+CONFIG_RTC_DRV_DA9063=m
CONFIG_RTC_DRV_STK17TA8=m
-# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_M48T86=m
CONFIG_RTC_DRV_M48T35=m
CONFIG_RTC_DRV_M48T59=m
CONFIG_RTC_DRV_MSM6242=m
CONFIG_RTC_DRV_BQ4802=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_DS2404=m
#
# on-CPU RTC drivers
#
-CONFIG_RTC_DRV_MOXART=m
#
# HID Sensor RTC drivers
#
# DMA Devices
#
-# CONFIG_INTEL_MID_DMAC is not set
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DW_DMAC_CORE=m
-CONFIG_DW_DMAC=m
-CONFIG_DW_DMAC_PCI=m
-CONFIG_TIMB_DMA=m
-CONFIG_PCH_DMA=m
CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_DMA_ACPI=y
+# CONFIG_INTEL_IDMA64 is not set
+CONFIG_INTEL_IOATDMA=m
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
+CONFIG_DW_DMAC_CORE=y
+CONFIG_DW_DMAC=m
+CONFIG_DW_DMAC_PCI=y
+CONFIG_HSU_DMA=y
#
# DMA Clients
CONFIG_ASYNC_TX_DMA=y
# CONFIG_DMATEST is not set
CONFIG_DMA_ENGINE_RAID=y
+
+#
+# DMABUF options
+#
+# CONFIG_SYNC_FILE is not set
CONFIG_DCA=m
# CONFIG_AUXDISPLAY is not set
CONFIG_UIO=m
CONFIG_UIO_SERCOS3=m
CONFIG_UIO_PCI_GENERIC=m
# CONFIG_UIO_NETX is not set
+# CONFIG_UIO_PRUSS is not set
# CONFIG_UIO_MF624 is not set
# CONFIG_VFIO is not set
+CONFIG_IRQ_BYPASS_MANAGER=m
CONFIG_VIRT_DRIVERS=y
CONFIG_VIRTIO=y
# Virtio drivers
#
CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_PRIVCMD=m
CONFIG_XEN_ACPI_PROCESSOR=m
-# CONFIG_XEN_MCE_LOG is not set
+CONFIG_XEN_MCE_LOG=y
CONFIG_XEN_HAVE_PVMMU=y
+CONFIG_XEN_EFI=y
+CONFIG_XEN_AUTO_XLATE=y
+CONFIG_XEN_ACPI=y
+CONFIG_XEN_SYMS=y
+CONFIG_XEN_HAVE_VPMU=y
CONFIG_STAGING=y
-CONFIG_ET131X=m
CONFIG_SLICOSS=m
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-# CONFIG_USBIP_DEBUG is not set
-# CONFIG_W35UND is not set
# CONFIG_PRISM2_USB is not set
-CONFIG_ECHO=m
# CONFIG_COMEDI is not set
-# CONFIG_PANEL is not set
-# CONFIG_R8187SE is not set
-# CONFIG_RTL8192U is not set
+CONFIG_RTL8192U=m
# CONFIG_RTLLIB is not set
-# CONFIG_R8712U is not set
-# CONFIG_R8188EU is not set
-# CONFIG_R8821AE is not set
-CONFIG_RTS5139=m
-# CONFIG_RTS5139_DEBUG is not set
+CONFIG_R8712U=m
+CONFIG_R8188EU=m
+CONFIG_88EU_AP_MODE=y
# CONFIG_RTS5208 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
# CONFIG_VT6655 is not set
# CONFIG_VT6656 is not set
-# CONFIG_DX_SEP is not set
#
# IIO staging drivers
#
# Analog to digital converters
#
-# CONFIG_AD7291 is not set
# CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
#
# Analog digital bi-direction converters
# CONFIG_TSL2583 is not set
# CONFIG_TSL2x7x is not set
-#
-# Magnetometer sensors
-#
-# CONFIG_SENSORS_HMC5843 is not set
-
#
# Active energy metering IC
#
#
# Triggers - standalone
#
-# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_WLAGS49_H2 is not set
-# CONFIG_WLAGS49_H25 is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_CRYSTALHD is not set
+# CONFIG_FB_SM750 is not set
# CONFIG_FB_XGI is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
#
# Speakup console speech
#
# CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
# CONFIG_STAGING_MEDIA is not set
#
# Android
#
-# CONFIG_ANDROID is not set
-# CONFIG_USB_WPAN_HCD is not set
-# CONFIG_WIMAX_GDM72XX is not set
CONFIG_LTE_GDM724X=m
-# CONFIG_NET_VENDOR_SILICOM is not set
-# CONFIG_CED1401 is not set
-# CONFIG_DGRP is not set
# CONFIG_FIREWIRE_SERIAL is not set
-# CONFIG_LUSTRE_FS is not set
-# CONFIG_XILLYBUS is not set
+# CONFIG_LNET is not set
# CONFIG_DGNC is not set
-# CONFIG_DGAP is not set
+# CONFIG_GS_FPGABOOT is not set
+# CONFIG_CRYPTO_SKEIN is not set
+# CONFIG_UNISYSSPAR is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_MOST is not set
+
+#
+# Old ISDN4Linux (deprecated)
+#
+# CONFIG_KS7010 is not set
+# CONFIG_GREYBUS is not set
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_ACER_WMI=m
CONFIG_ACERHDF=m
+# CONFIG_ALIENWARE_WMI is not set
CONFIG_ASUS_LAPTOP=m
-CONFIG_DELL_LAPTOP=m
-CONFIG_DELL_WMI=m
+# CONFIG_DELL_SMBIOS is not set
CONFIG_DELL_WMI_AIO=m
+# CONFIG_DELL_SMO8800 is not set
+# CONFIG_DELL_RBTN is not set
CONFIG_FUJITSU_LAPTOP=m
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
# CONFIG_FUJITSU_TABLET is not set
CONFIG_ASUS_WMI=m
CONFIG_ASUS_NB_WMI=m
CONFIG_EEEPC_WMI=m
+# CONFIG_ASUS_WIRELESS is not set
CONFIG_ACPI_WMI=m
CONFIG_MSI_WMI=m
CONFIG_TOPSTAR_LAPTOP=m
CONFIG_ACPI_TOSHIBA=m
CONFIG_TOSHIBA_BT_RFKILL=m
+# CONFIG_TOSHIBA_HAPS is not set
+# CONFIG_TOSHIBA_WMI is not set
CONFIG_ACPI_CMPC=m
+# CONFIG_INTEL_HID_EVENT is not set
+# CONFIG_INTEL_VBTN is not set
CONFIG_INTEL_IPS=m
+# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_IBM_RTL is not set
-# CONFIG_XO15_EBOOK is not set
CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
CONFIG_INTEL_OAKTRAIL=m
CONFIG_INTEL_RST=m
# CONFIG_INTEL_SMARTCONNECT is not set
CONFIG_PVPANIC=m
+# CONFIG_INTEL_PMC_IPC is not set
+# CONFIG_SURFACE_PRO3_BUTTON is not set
+# CONFIG_INTEL_PUNIT_IPC is not set
# CONFIG_CHROME_PLATFORMS is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
# Common Clock Framework
#
# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_NXP is not set
+# CONFIG_COMMON_CLK_PXA is not set
+# CONFIG_COMMON_CLK_PIC32 is not set
#
# Hardware Spinlock drivers
#
+
+#
+# Clock Source drivers
+#
CONFIG_CLKEVT_I8253=y
CONFIG_I8253_LOCK=y
CONFIG_CLKBLD_I8253=y
+# CONFIG_ATMEL_PIT is not set
+# CONFIG_SH_TIMER_CMT is not set
+# CONFIG_SH_TIMER_MTU2 is not set
+# CONFIG_SH_TIMER_TMU is not set
+# CONFIG_EM_TIMER_STI is not set
CONFIG_MAILBOX=y
+# CONFIG_PCC is not set
+# CONFIG_ALTERA_MBOX is not set
CONFIG_IOMMU_API=y
CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IOVA=y
CONFIG_AMD_IOMMU=y
-# CONFIG_AMD_IOMMU_STATS is not set
+# CONFIG_AMD_IOMMU_V2 is not set
CONFIG_DMAR_TABLE=y
CONFIG_INTEL_IOMMU=y
+# CONFIG_INTEL_IOMMU_SVM is not set
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
CONFIG_INTEL_IOMMU_FLOPPY_WA=y
CONFIG_IRQ_REMAP=y
#
# Rpmsg drivers
#
-# CONFIG_PM_DEVFREQ is not set
-# CONFIG_EXTCON is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Broadcom SoC drivers
+#
+# CONFIG_SUNXI_SRAM is not set
+# CONFIG_SOC_TI is not set
+CONFIG_PM_DEVFREQ=y
+
+#
+# DEVFREQ Governors
+#
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
+# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
+# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
+# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_GOV_PASSIVE is not set
+
+#
+# DEVFREQ Drivers
+#
+# CONFIG_PM_DEVFREQ_EVENT is not set
+CONFIG_EXTCON=m
+
+#
+# Extcon Device Drivers
+#
+# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_AXP288 is not set
+# CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_MAX3355 is not set
+# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
+# CONFIG_EXTCON_RT8973A is not set
+# CONFIG_EXTCON_SM5502 is not set
+# CONFIG_EXTCON_USB_GPIO is not set
CONFIG_MEMORY=y
CONFIG_IIO=m
CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
CONFIG_IIO_KFIFO_BUF=m
+# CONFIG_IIO_CONFIGFS is not set
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+# CONFIG_IIO_SW_DEVICE is not set
+# CONFIG_IIO_SW_TRIGGER is not set
#
# Accelerometers
#
# CONFIG_BMA180 is not set
+# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DMARD09 is not set
# CONFIG_HID_SENSOR_ACCEL_3D is not set
# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+# CONFIG_KXSD9 is not set
+# CONFIG_KXCJK1013 is not set
+# CONFIG_MC3230 is not set
+# CONFIG_MMA7455_I2C is not set
+# CONFIG_MMA7660 is not set
+# CONFIG_MMA8452 is not set
+# CONFIG_MMA9551 is not set
+# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_MXC6255 is not set
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
#
# Analog to digital converters
#
+# CONFIG_AD7291 is not set
+# CONFIG_AD799X is not set
+# CONFIG_AXP288_ADC is not set
+# CONFIG_DA9150_GPADC is not set
+# CONFIG_INA2XX_ADC is not set
+# CONFIG_LTC2485 is not set
# CONFIG_MAX1363 is not set
# CONFIG_MCP3422 is not set
# CONFIG_NAU7802 is not set
+# CONFIG_QCOM_SPMI_IADC is not set
+# CONFIG_QCOM_SPMI_VADC is not set
# CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADS1015 is not set
# CONFIG_VIPERBOARD_ADC is not set
#
# Amplifiers
#
+#
+# Chemical Sensors
+#
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_IAQCORE is not set
+# CONFIG_VZ89X is not set
+
#
# Hid Sensor IIO Common
#
CONFIG_HID_SENSOR_IIO_COMMON=m
CONFIG_HID_SENSOR_IIO_TRIGGER=m
+#
+# SSP Sensor Common
+#
+
#
# Digital to analog converters
#
# CONFIG_AD5064 is not set
# CONFIG_AD5380 is not set
# CONFIG_AD5446 is not set
+# CONFIG_AD5593R is not set
+# CONFIG_M62332 is not set
# CONFIG_MAX517 is not set
# CONFIG_MCP4725 is not set
+#
+# IIO dummy driver
+#
+
#
# Frequency Synthesizers DDS/PLL
#
#
# Digital gyroscope sensors
#
+# CONFIG_BMG160 is not set
# CONFIG_HID_SENSOR_GYRO_3D is not set
# CONFIG_IIO_ST_GYRO_3AXIS is not set
# CONFIG_ITG3200 is not set
+#
+# Health Sensors
+#
+
+#
+# Heart Rate Monitors
+#
+# CONFIG_AFE4404 is not set
+# CONFIG_MAX30100 is not set
+
#
# Humidity sensors
#
+# CONFIG_AM2315 is not set
# CONFIG_DHT11 is not set
+# CONFIG_HDC100X is not set
+# CONFIG_HTU21 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
#
# Inertial measurement units
#
-# CONFIG_INV_MPU6050_IIO is not set
+# CONFIG_BMI160_I2C is not set
+# CONFIG_KMX61 is not set
+# CONFIG_INV_MPU6050_I2C is not set
#
# Light sensors
#
+# CONFIG_ACPI_ALS is not set
# CONFIG_ADJD_S311 is not set
+# CONFIG_AL3320A is not set
# CONFIG_APDS9300 is not set
+# CONFIG_APDS9960 is not set
+# CONFIG_BH1750 is not set
+# CONFIG_BH1780 is not set
# CONFIG_CM32181 is not set
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
# CONFIG_CM36651 is not set
# CONFIG_GP2AP020A00F is not set
+# CONFIG_ISL29125 is not set
# CONFIG_HID_SENSOR_ALS is not set
+# CONFIG_HID_SENSOR_PROX is not set
+# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
# CONFIG_SENSORS_LM3533 is not set
+# CONFIG_LTR501 is not set
+# CONFIG_MAX44000 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_STK3310 is not set
+# CONFIG_TCS3414 is not set
# CONFIG_TCS3472 is not set
# CONFIG_SENSORS_TSL2563 is not set
# CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
# CONFIG_VCNL4000 is not set
+# CONFIG_VEML6070 is not set
#
# Magnetometer sensors
#
# CONFIG_AK8975 is not set
+# CONFIG_AK09911 is not set
+# CONFIG_BMC150_MAGN_I2C is not set
# CONFIG_MAG3110 is not set
# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_MMC35240 is not set
# CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_SENSORS_HMC5843_I2C is not set
#
# Inclinometer sensors
#
# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set
#
# Triggers - standalone
# CONFIG_IIO_INTERRUPT_TRIGGER is not set
# CONFIG_IIO_SYSFS_TRIGGER is not set
+#
+# Digital potentiometers
+#
+# CONFIG_DS1803 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_TPL0102 is not set
+
#
# Pressure sensors
#
+# CONFIG_BMP280 is not set
+# CONFIG_HID_SENSOR_PRESS is not set
+# CONFIG_HP03 is not set
+# CONFIG_MPL115_I2C is not set
# CONFIG_MPL3115 is not set
+# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
# CONFIG_IIO_ST_PRESS is not set
+# CONFIG_T5403 is not set
+# CONFIG_HP206C is not set
+# CONFIG_ZPA2326 is not set
+
+#
+# Lightning sensors
+#
+
+#
+# Proximity sensors
+#
+# CONFIG_LIDAR_LITE_V2 is not set
+# CONFIG_SX9500 is not set
#
# Temperature sensors
#
+# CONFIG_MLX90614 is not set
# CONFIG_TMP006 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
# CONFIG_NTB is not set
# CONFIG_VME_BUS is not set
# CONFIG_PWM is not set
+CONFIG_ARM_GIC_MAX_NR=1
# CONFIG_IPACK_BUS is not set
CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_ATH79 is not set
+# CONFIG_RESET_BERLIN is not set
+# CONFIG_RESET_LPC18XX is not set
+# CONFIG_RESET_MESON is not set
+# CONFIG_RESET_PISTACHIO is not set
+# CONFIG_RESET_SOCFPGA is not set
+# CONFIG_RESET_STM32 is not set
+# CONFIG_RESET_SUNXI is not set
+# CONFIG_TI_SYSCON_RESET is not set
+# CONFIG_RESET_ZYNQ is not set
# CONFIG_FMC is not set
#
# PHY Subsystem
#
CONFIG_GENERIC_PHY=y
-# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_BCM_KONA_USB2_PHY is not set
# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+CONFIG_RAS=y
+# CONFIG_MCE_AMD_INJ is not set
+# CONFIG_THUNDERBOLT is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+CONFIG_LIBNVDIMM=m
+CONFIG_BLK_DEV_PMEM=m
+CONFIG_ND_BLK=m
+CONFIG_ND_CLAIM=y
+CONFIG_ND_BTT=m
+CONFIG_BTT=y
+# CONFIG_DEV_DAX is not set
+CONFIG_NVMEM=m
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
#
# Firmware Drivers
#
+# CONFIG_ARM_SCPI_PROTOCOL is not set
CONFIG_EDD=m
# CONFIG_EDD_OFF is not set
CONFIG_FIRMWARE_MEMMAP=y
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
CONFIG_ISCSI_IBFT_FIND=y
CONFIG_ISCSI_IBFT=m
+# CONFIG_FW_CFG_SYSFS is not set
# CONFIG_GOOGLE_FIRMWARE is not set
#
# EFI (Extensible Firmware Interface) Support
#
CONFIG_EFI_VARS=y
+CONFIG_EFI_ESRT=y
CONFIG_EFI_VARS_PSTORE=y
# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+# CONFIG_EFI_FAKE_MEMMAP is not set
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+# CONFIG_EFI_BOOTLOADER_CONTROL is not set
+# CONFIG_EFI_CAPSULE_LOADER is not set
+# CONFIG_EFI_TEST is not set
CONFIG_UEFI_CPER=y
#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_ENCRYPTION is not set
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
# CONFIG_BTRFS_DEBUG is not set
CONFIG_BTRFS_ASSERT=y
# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_DAX is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
+# CONFIG_EXPORTFS_BLOCK_OPS is not set
CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+# CONFIG_FS_ENCRYPTION is not set
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=m
CONFIG_CUSE=m
+# CONFIG_OVERLAY_FS is not set
#
# Caches
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
# CONFIG_NTFS_FS is not set
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_TMPFS_XATTR=y
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
+CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
CONFIG_CONFIGFS_FS=m
+CONFIG_EFIVAR_FS=m
CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_ECRYPT_FS is not set
# CONFIG_QNX6FS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_PSTORE=y
+CONFIG_PSTORE_ZLIB_COMPRESS=y
+# CONFIG_PSTORE_LZO_COMPRESS is not set
+# CONFIG_PSTORE_LZ4_COMPRESS is not set
# CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_PMSG is not set
# CONFIG_PSTORE_FTRACE is not set
# CONFIG_PSTORE_RAM is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_EXOFS_FS is not set
-# CONFIG_F2FS_FS is not set
-CONFIG_EFIVAR_FS=m
CONFIG_ORE=m
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_PNFS_FILE_LAYOUT=m
CONFIG_PNFS_BLOCK=m
CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
CONFIG_NFS_V4_1_MIGRATION=y
CONFIG_NFS_V4_SECURITY_LABEL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
+# CONFIG_NFSD_BLOCKLAYOUT is not set
+# CONFIG_NFSD_SCSILAYOUT is not set
+# CONFIG_NFSD_FLEXFILELAYOUT is not set
CONFIG_NFSD_V4_SECURITY_LABEL=y
# CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=m
# CONFIG_CIFS_DEBUG is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
+# CONFIG_CIFS_SMB311 is not set
CONFIG_CIFS_FSCACHE=y
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# printk and dmesg options
#
# CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_BOOT_PRINTK_DELAY is not set
CONFIG_DYNAMIC_DEBUG=y
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_READABLE_ASM is not set
# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
CONFIG_DEBUG_FS=y
CONFIG_HEADERS_CHECK=y
# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
+# CONFIG_STACK_VALIDATION is not set
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
# CONFIG_MAGIC_SYSRQ is not set
CONFIG_DEBUG_KERNEL=y
#
# Memory Debugging
#
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_HAVE_ARCH_KMEMCHECK=y
+CONFIG_HAVE_ARCH_KASAN=y
+# CONFIG_KASAN is not set
+CONFIG_ARCH_HAS_KCOV=y
+# CONFIG_KCOV is not set
CONFIG_DEBUG_SHIRQ=y
#
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
CONFIG_SCHEDSTATS=y
+# CONFIG_SCHED_STACK_END_CHECK is not set
+# CONFIG_DEBUG_TIMEKEEPING is not set
CONFIG_TIMER_STATS=y
#
# Lock Debugging (spinlocks, mutexes, etc...)
#
# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_LIST=y
+# CONFIG_DEBUG_PI_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set
#
# RCU Debugging
#
+# CONFIG_PROVE_RCU is not set
# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_TORTURE_TEST is not set
+# CONFIG_RCU_PERF_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_RCU_CPU_STALL_INFO is not set
# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
-CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_NOP_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_FUNCTION_GRAPH_TRACER=y
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_SCHED_TRACER=y
+# CONFIG_HWLAT_TRACER is not set
CONFIG_FTRACE_SYSCALLS=y
CONFIG_TRACER_SNAPSHOT=y
# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
CONFIG_FTRACE_MCOUNT_RECORD=y
# CONFIG_FTRACE_STARTUP_TEST is not set
# CONFIG_MMIOTRACE is not set
+# CONFIG_HIST_TRIGGERS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_TRACE_ENUM_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
#
# Runtime Testing
# CONFIG_PERCPU_TEST is not set
# CONFIG_ATOMIC64_SELFTEST is not set
CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_TEST_HEXDUMP is not set
# CONFIG_TEST_STRING_HELPERS is not set
# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_LKM is not set
# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
+# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
CONFIG_EARLY_PRINTK_EFI=y
+# CONFIG_X86_PTDUMP_CORE is not set
# CONFIG_X86_PTDUMP is not set
+# CONFIG_EFI_PGT_DUMP is not set
+CONFIG_DEBUG_RODATA_TEST=y
CONFIG_DEBUG_NX_TEST=m
CONFIG_DOUBLEFAULT=y
# CONFIG_DEBUG_TLBFLUSH is not set
CONFIG_DEBUG_BOOT_PARAMS=y
# CONFIG_CPA_DEBUG is not set
CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_ENTRY is not set
# CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
+CONFIG_X86_DEBUG_FPU=y
+# CONFIG_PUNIT_ATOM_DEBUG is not set
#
# Security options
# Grsecurity
#
CONFIG_TASK_SIZE_MAX_SHIFT=47
-CONFIG_PAX_USERCOPY_SLABS=y
CONFIG_GRKERNSEC=y
# CONFIG_GRKERNSEC_CONFIG_AUTO is not set
CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
CONFIG_PAX_MPROTECT=y
# CONFIG_PAX_MPROTECT_COMPAT is not set
CONFIG_PAX_ELFRELOCS=y
-CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
#
# Address Space Layout Randomization
CONFIG_PAX_USERCOPY=y
# CONFIG_PAX_USERCOPY_DEBUG is not set
# CONFIG_PAX_SIZE_OVERFLOW is not set
+# CONFIG_PAX_INITIFY is not set
+CONFIG_HAVE_PAX_INITIFY_INIT_EXIT=y
# CONFIG_PAX_LATENT_ENTROPY is not set
+# CONFIG_PAX_RAP is not set
#
# Memory Protections
#
# CONFIG_GRKERNSEC_KMEM is not set
# CONFIG_GRKERNSEC_IO is not set
-CONFIG_GRKERNSEC_JIT_HARDEN=y
+# CONFIG_GRKERNSEC_BPF_HARDEN is not set
# CONFIG_GRKERNSEC_PERF_HARDEN is not set
CONFIG_GRKERNSEC_RAND_THREADSTACK=y
CONFIG_GRKERNSEC_PROC_MEMMAP=y
CONFIG_GRKERNSEC_PTRACE_READEXEC=y
CONFIG_GRKERNSEC_SETXID=y
CONFIG_GRKERNSEC_HARDEN_IPC=y
+# CONFIG_GRKERNSEC_HARDEN_TTY is not set
# CONFIG_GRKERNSEC_TPE is not set
#
# CONFIG_PERSISTENT_KEYRINGS is not set
# CONFIG_BIG_KEYS is not set
# CONFIG_ENCRYPTED_KEYS is not set
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
+# CONFIG_KEY_DH_OPERATIONS is not set
CONFIG_SECURITY_DMESG_RESTRICT=y
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
# CONFIG_INTEL_TXT is not set
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
+CONFIG_HARDENED_USERCOPY=y
# CONFIG_SECURITY_SELINUX is not set
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_SECURITY_LOADPIN is not set
+CONFIG_INTEGRITY=y
+# CONFIG_INTEGRITY_SIGNATURE is not set
+CONFIG_INTEGRITY_AUDIT=y
# CONFIG_IMA is not set
# CONFIG_EVM is not set
CONFIG_DEFAULT_SECURITY_DAC=y
#
# Crypto core or helper
#
-CONFIG_CRYPTO_FIPS=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=m
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_DH=m
+CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
-# CONFIG_CRYPTO_USER is not set
+CONFIG_CRYPTO_USER=m
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_MCRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ABLK_HELPER=y
#
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_ECHAINIV=m
#
# Block modes
CONFIG_CRYPTO_LRW=y
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_KEYWRAP=m
#
# Hash modes
CONFIG_CRYPTO_CRCT10DIF=y
CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m
CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_POLY1305=m
+CONFIG_CRYPTO_POLY1305_X86_64=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_SHA1_SSSE3=m
CONFIG_CRYPTO_SHA256_SSSE3=m
CONFIG_CRYPTO_SHA512_SSSE3=m
+CONFIG_CRYPTO_SHA1_MB=m
+CONFIG_CRYPTO_SHA256_MB=m
+CONFIG_CRYPTO_SHA512_MB=m
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_SHA3=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_CAST6_AVX_X86_64=m
CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_DES3_EDE_X86_64=m
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SALSA20=m
CONFIG_CRYPTO_SALSA20_X86_64=m
+CONFIG_CRYPTO_CHACHA20=m
+CONFIG_CRYPTO_CHACHA20_X86_64=m
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m
+# CONFIG_CRYPTO_842 is not set
CONFIG_CRYPTO_LZ4=m
CONFIG_CRYPTO_LZ4HC=m
# Random Number Generation
#
CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+# CONFIG_CRYPTO_DRBG_HASH is not set
+# CONFIG_CRYPTO_DRBG_CTR is not set
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_USER_API=y
CONFIG_CRYPTO_USER_API_HASH=y
CONFIG_CRYPTO_USER_API_SKCIPHER=y
-CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_AEAD=m
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_PADLOCK=m
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
-# CONFIG_CRYPTO_DEV_CCP is not set
-CONFIG_ASYMMETRIC_KEY_TYPE=m
-CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
-CONFIG_PUBLIC_KEY_ALGO_RSA=m
-CONFIG_X509_CERTIFICATE_PARSER=m
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
+CONFIG_CRYPTO_DEV_QAT=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
+CONFIG_CRYPTO_DEV_QAT_C3XXX=m
+CONFIG_CRYPTO_DEV_QAT_C62X=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_CRYPTO_DEV_CHELSIO=m
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+
+#
+# Certificates for signature checking
+#
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_IRQFD=y
CONFIG_HAVE_KVM_IRQ_ROUTING=y
CONFIG_HAVE_KVM_EVENTFD=y
-CONFIG_KVM_APIC_ARCHITECTURE=y
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_HAVE_KVM_MSI=y
CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
CONFIG_KVM_VFIO=y
+CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
+CONFIG_KVM_COMPAT=y
+CONFIG_HAVE_KVM_IRQ_BYPASS=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_MMU_AUDIT=y
CONFIG_KVM_DEVICE_ASSIGNMENT=y
+CONFIG_VHOST_NET=m
+# CONFIG_VHOST_VSOCK is not set
+CONFIG_VHOST=m
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
CONFIG_BINARY_PRINTF=y
#
#
CONFIG_RAID6_PQ=m
CONFIG_BITREVERSE=y
+# CONFIG_HAVE_ARCH_BITREVERSE is not set
+CONFIG_RATIONAL=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
CONFIG_CRC8=m
+# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
+CONFIG_INTERVAL_TREE=y
+CONFIG_RADIX_TREE_MULTIORDER=y
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_CPU_RMAP=y
CONFIG_DQL=y
+CONFIG_GLOB=y
+# CONFIG_GLOB_SELFTEST is not set
CONFIG_NLATTR=y
-CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_AVERAGE=y
CONFIG_CLZ_TAB=y
CONFIG_CORDIC=m
# CONFIG_DDR is not set
+CONFIG_IRQ_POLL=y
CONFIG_MPILIB=m
CONFIG_OID_REGISTRY=m
CONFIG_UCS2_STRING=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
+# CONFIG_SG_SPLIT is not set
+CONFIG_SG_POOL=y
+CONFIG_ARCH_HAS_SG_CHAIN=y
+CONFIG_ARCH_HAS_PMEM_API=y
+CONFIG_ARCH_HAS_MMIO_FLUSH=y
+CONFIG_SBITMAP=y
}
print <<END
- ### add l7-filter to POSTROUTING chain to see all traffic
- iptables -t mangle -A POSTROUTING -m layer7 --l7proto unset
+ ### add l7-filter to PREROUTING chain to see all traffic
+ iptables -t mangle -A PREROUTING -m layer7 --l7proto unset
### ADD QOS-OUT CHAIN TO THE MANGLE TABLE IN IPTABLES
iptables -t mangle -N QOS-OUT
iptables -t mangle --flush QOS-TOS >/dev/null 2>&1
iptables -t mangle --delete-chain QOS-TOS >/dev/null 2>&1
# remove l7-filter
- iptables -t mangle --delete POSTROUTING -m layer7 --l7proto unset
+ iptables -t mangle --delete PREROUTING -m layer7 --l7proto unset
rmmod sch_htb >/dev/null 2>&1
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/crc32-pclmul.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/glue_helper.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/salsa20-i586.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-sse2-i586.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-i586.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/events
+#lib/modules/KVER-ipfire/kernel/arch/x86/events/amd
+#lib/modules/KVER-ipfire/kernel/arch/x86/events/amd/power.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode/microcode.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/iosf_mbi.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/test_nx.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/kvm
#lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm-amd.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/platform
#lib/modules/KVER-ipfire/kernel/arch/x86/platform/iris
#lib/modules/KVER-ipfire/kernel/arch/x86/platform/iris/iris.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/platform/scx200
-#lib/modules/KVER-ipfire/kernel/arch/x86/platform/scx200/scx200.ko
#lib/modules/KVER-ipfire/kernel/crypto
+#lib/modules/KVER-ipfire/kernel/crypto/842.ko
+#lib/modules/KVER-ipfire/kernel/crypto/algif_aead.ko
+#lib/modules/KVER-ipfire/kernel/crypto/algif_rng.ko
#lib/modules/KVER-ipfire/kernel/crypto/ansi_cprng.ko
#lib/modules/KVER-ipfire/kernel/crypto/anubis.ko
#lib/modules/KVER-ipfire/kernel/crypto/arc4.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/public_key.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/rsa.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/x509_key_parser.ko
#lib/modules/KVER-ipfire/kernel/crypto/async_tx
#lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_memcpy.ko
#lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_pq.ko
#lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_raid6_recov.ko
#lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_tx.ko
#lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_xor.ko
-#lib/modules/KVER-ipfire/kernel/crypto/async_tx/raid6test.ko
#lib/modules/KVER-ipfire/kernel/crypto/authenc.ko
#lib/modules/KVER-ipfire/kernel/crypto/authencesn.ko
#lib/modules/KVER-ipfire/kernel/crypto/blowfish_common.ko
#lib/modules/KVER-ipfire/kernel/crypto/cast6_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/cast_common.ko
#lib/modules/KVER-ipfire/kernel/crypto/ccm.ko
+#lib/modules/KVER-ipfire/kernel/crypto/chacha20_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/chacha20poly1305.ko
#lib/modules/KVER-ipfire/kernel/crypto/cmac.ko
-#lib/modules/KVER-ipfire/kernel/crypto/crypto_null.ko
-#lib/modules/KVER-ipfire/kernel/crypto/cts.ko
#lib/modules/KVER-ipfire/kernel/crypto/deflate.ko
#lib/modules/KVER-ipfire/kernel/crypto/des_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/dh_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/ecdh_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/echainiv.ko
#lib/modules/KVER-ipfire/kernel/crypto/fcrypt.ko
#lib/modules/KVER-ipfire/kernel/crypto/gcm.ko
#lib/modules/KVER-ipfire/kernel/crypto/ghash-generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/keywrap.ko
#lib/modules/KVER-ipfire/kernel/crypto/khazad.ko
#lib/modules/KVER-ipfire/kernel/crypto/lz4.ko
#lib/modules/KVER-ipfire/kernel/crypto/lz4hc.ko
#lib/modules/KVER-ipfire/kernel/crypto/lzo.ko
+#lib/modules/KVER-ipfire/kernel/crypto/mcryptd.ko
#lib/modules/KVER-ipfire/kernel/crypto/md4.ko
#lib/modules/KVER-ipfire/kernel/crypto/michael_mic.ko
#lib/modules/KVER-ipfire/kernel/crypto/pcbc.ko
#lib/modules/KVER-ipfire/kernel/crypto/pcrypt.ko
+#lib/modules/KVER-ipfire/kernel/crypto/poly1305_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/rmd128.ko
#lib/modules/KVER-ipfire/kernel/crypto/rmd160.ko
#lib/modules/KVER-ipfire/kernel/crypto/rmd256.ko
#lib/modules/KVER-ipfire/kernel/crypto/rmd320.ko
+#lib/modules/KVER-ipfire/kernel/crypto/rsa_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/salsa20_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/seed.ko
#lib/modules/KVER-ipfire/kernel/crypto/serpent_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/sha1_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/sha3_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/sha512_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/tcrypt.ko
#lib/modules/KVER-ipfire/kernel/crypto/tea.ko
#lib/modules/KVER-ipfire/kernel/crypto/wp512.ko
#lib/modules/KVER-ipfire/kernel/crypto/xcbc.ko
#lib/modules/KVER-ipfire/kernel/crypto/xor.ko
-#lib/modules/KVER-ipfire/kernel/crypto/zlib.ko
#lib/modules/KVER-ipfire/kernel/drivers
#lib/modules/KVER-ipfire/kernel/drivers/acpi
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_configfs.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_extlog.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_ipmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_pad.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/custom_method.ko
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/dptf
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/dptf/dptf_power.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/ec_sys.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/sbs.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/sbshc.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/acard-ahci.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/ahci_platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/ata_generic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/libahci_platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_acpi.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_ali.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_amd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_arasan_cf.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_artop.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_atiixp.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_atp867x.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_triflex.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_via.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pdc_adma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_highbank.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_dwc_460ex.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_inic162x.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_mv.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_nv.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_promise.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_qstor.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_rcar.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil24.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sis.ko
#lib/modules/KVER-ipfire/kernel/drivers/atm/suni.ko
#lib/modules/KVER-ipfire/kernel/drivers/atm/uPD98402.ko
#lib/modules/KVER-ipfire/kernel/drivers/atm/zatm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/base
-#lib/modules/KVER-ipfire/kernel/drivers/base/regmap
-#lib/modules/KVER-ipfire/kernel/drivers/base/regmap/regmap-i2c.ko
#lib/modules/KVER-ipfire/kernel/drivers/bcma
#lib/modules/KVER-ipfire/kernel/drivers/bcma/bcma.ko
#lib/modules/KVER-ipfire/kernel/drivers/block
#lib/modules/KVER-ipfire/kernel/drivers/block/floppy.ko
#lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx
#lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx/mtip32xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/block/nvme.ko
#lib/modules/KVER-ipfire/kernel/drivers/block/rsxx
#lib/modules/KVER-ipfire/kernel/drivers/block/rsxx/rsxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/block/sx8.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bfusb.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bluecard_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bpa10x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btbcm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btintel.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btqca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btrtl.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btsdio.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btuart_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btusb.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hangcheck-timer.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/amd-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/atmel-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/exynos-rng.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/geode-rng.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/intel-rng.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/timeriomem-rng.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/via-rng.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/virtio-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/i8k.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_devintf.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_msghandler.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_poweroff.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_si.ko
+#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_ssif.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_watchdog.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/lp.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/mwave
#lib/modules/KVER-ipfire/kernel/drivers/char/nsc_gpio.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/pc8736x_gpio.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ppdev.ko
+#lib/modules/KVER-ipfire/kernel/drivers/char/scx200_gpio.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/sonypi.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/toshiba.ko
#lib/modules/KVER-ipfire/kernel/drivers/clocksource
#lib/modules/KVER-ipfire/kernel/drivers/clocksource/cs5535-clockevt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/clocksource/scx200_hrt.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/acpi-cpufreq.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/amd_freq_sensitivity.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq-nforce2.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_conservative.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_ondemand.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_powersave.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_stats.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/gx-suspmod.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/longhaul.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/longrun.ko
#lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp
#lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp-crypto.ko
#lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/chelsio
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/chelsio/chcr.ko
#lib/modules/KVER-ipfire/kernel/drivers/crypto/geode-aes.ko
-#lib/modules/KVER-ipfire/kernel/drivers/crypto/hifn_795x.ko
#lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-aes.ko
#lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-sha.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dca
-#lib/modules/KVER-ipfire/kernel/drivers/dca/dca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxx
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxx/qat_c3xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxxvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxxvf/qat_c3xxxvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62x
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62x/qat_c62x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62xvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62xvf/qat_c62xvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_common
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_common/intel_qat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xcc
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xcc/qat_dh895xcc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xccvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xccvf/qat_dh895xccvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_passive.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_performance.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_powersave.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_simpleondemand.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_userspace.ko
#lib/modules/KVER-ipfire/kernel/drivers/dma
#lib/modules/KVER-ipfire/kernel/drivers/dma/dw
#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/ioat
-#lib/modules/KVER-ipfire/kernel/drivers/dma/ioat/ioatdma.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/idma64.ko
#lib/modules/KVER-ipfire/kernel/drivers/dma/pch_dma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/timb_dma.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/qcom
+#lib/modules/KVER-ipfire/kernel/drivers/dma/qcom/hdma.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/qcom/hdma_mgmt.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac
+#lib/modules/KVER-ipfire/kernel/drivers/edac/amd64_edac_mod.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/e752x_edac.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/edac_core.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/edac_mce_amd.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/i7300_edac.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/i7core_edac.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/i82975x_edac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/edac/mce_amd_inj.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/ie31200_edac.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/x38_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/extcon
+#lib/modules/KVER-ipfire/kernel/drivers/extcon/extcon-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/firewire
#lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-ohci.ko
#lib/modules/KVER-ipfire/kernel/drivers/firmware/dcdbas.ko
#lib/modules/KVER-ipfire/kernel/drivers/firmware/dell_rbu.ko
#lib/modules/KVER-ipfire/kernel/drivers/firmware/edd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/firmware/efi
+#lib/modules/KVER-ipfire/kernel/drivers/firmware/efi/efibc.ko
#lib/modules/KVER-ipfire/kernel/drivers/firmware/iscsi_ibft.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-cs5535.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ich.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-sch.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ts5500.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-viperboard.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd/amdgpu
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast/ast.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs/bochs-drm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bridge
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bridge/analogix-anx78xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus/cirrus.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_kms_helper.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_usb.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/ch7006.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/sil164.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/tda998x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810/i810.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915/i915.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga/mga.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200/mgag200.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau/nouveau.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl/qxl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128/r128.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/radeon
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/radeon/radeon.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/savage
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/sis
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/sis/sis.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/tdfx
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/tdfx/tdfx.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm/ttm.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl/udl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via/via.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vgem
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vgem/vgem.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/virtio
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/virtio/virtio-gpu.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-alps.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-asus.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-aureal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-cmedia.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-corsair.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-cp2112.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gembird.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gfrm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gt683r.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gyration.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-keytouch.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lcpower.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lenovo-tpkbd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-led.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lenovo.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech-dj.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech-hidpp.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-ortek.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-penmount.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-petalynx.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-picolcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-plantronics.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-rmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-arvo.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-isku.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sensor-hub.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-speedlink.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-thingm.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-tivo.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-topseed.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-twinhan.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/acpi_power_meter.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ad7414.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ad7418.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adc128d818.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1021.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1025.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1026.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/asus_atk0110.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/atxp1.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/coretemp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/dell-smm-hwmon.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/dme1737.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds1621.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds620.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/f75375s.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/fam15h_power.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/fschmd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ftsteutates.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/g760a.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/g762.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl518sm.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl520sm.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/hih6130.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/htu21.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/hwmon-vid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5500_temp.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5k_amb.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmaem.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmpex.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina209.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina2xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina3221.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/it87.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/k10temp.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/k8temp.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95234.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95241.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95245.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc2945.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc2990.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4151.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4215.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4222.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4245.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4260.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4261.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max16065.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1619.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1668.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max197.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max31790.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6639.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6642.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6650.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6697.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct6683.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct6775.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct7802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct7904.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ntc_thermistor.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87360.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87427.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/adm1275.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/lm25066.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max16064.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max20751.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max34440.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max8688.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/pmbus.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/pmbus_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/tps40422.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9000.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9200.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch5627.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch56xx-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht15.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht21.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht3x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/shtc1.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sis5595.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47b397.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m1.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m192.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tc74.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/thmc50.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp102.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp103.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp401.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp421.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/via-cputemp.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-emev2.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-i801.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-isch.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-ismt.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-viapro.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-viperboard.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/scx200_acb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-dev.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-mux.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-smbus.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca9541.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca954x.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pinctrl.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-reg.ko
#lib/modules/KVER-ipfire/kernel/drivers/iio
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer/industrialio-buffer-cb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer/kfifo_buf.ko
#lib/modules/KVER-ipfire/kernel/drivers/iio/common
#lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors
#lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
#lib/modules/KVER-ipfire/kernel/drivers/iio/industrialio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/iio/kfifo_buf.ko
#lib/modules/KVER-ipfire/kernel/drivers/input
#lib/modules/KVER-ipfire/kernel/drivers/input/input-polldev.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard
+#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/adc-keys.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys_polled.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/lm8333.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/appletouch.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/bcm5974.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/cyapatp.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/psmouse.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/sermouse.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/synaptics_i2c.ko
#lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds
#lib/modules/KVER-ipfire/kernel/drivers/leds/dell-led.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/led-class-flash.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-bd2802.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-blinkm.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-clevo-mail.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lm355x.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lm3642.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp3944.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp3952.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5521.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5523.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5562.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp55xx-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp8501.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp8860.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lt3593.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-net48xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ot200.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9532.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca955x.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca963x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9685.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ss4200.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-tca6507.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-tlc591xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-wrap.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-backlight.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-camera.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-timer.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-transient.ko
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm/gennvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm/rrpc.ko
#lib/modules/KVER-ipfire/kernel/drivers/md
#lib/modules/KVER-ipfire/kernel/drivers/md/bcache
#lib/modules/KVER-ipfire/kernel/drivers/md/bcache/bcache.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-bio-prison.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-cleaner.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-smq.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-crypt.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-log-userspace.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-log-writes.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-multipath.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-queue-length.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-raid.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/common
#lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2
#lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/btcx-risc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/common/cx2341x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/common/cypress_firmware.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/common/saa7146
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/a8293.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9013.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/as102_fe.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/atbm8830.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_common.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/bcm3510.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22700.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22702.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24110.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24113.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24116.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24117.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24120.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24123.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cxd2820r.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib0070.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib7000p.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib8000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drx39xyj
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drx39xyj/drx39xyj.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxd.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxk.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ds3000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvb-pll.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/gp8psk-fe.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6405.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6421.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6423.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/it913x-fe.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/itd1000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ix2505v.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/l64781.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lg2160.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt3306a.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt330x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp21.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp22.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88dc2800.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88ds3103.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88rs2000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a16.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mn88472.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mn88473.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt312.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt352.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt200x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt6000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51132.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51211.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2830.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2832.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1409.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1411.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1420.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si2165.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si2168.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp8870.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp887x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb0899.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6100.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv090x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tc90522.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10021.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10023.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10048.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7170.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7175.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7180.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt819.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt856.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt866.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs3308.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs5345.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs53l32a.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cx25840
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ks0127.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/m52790.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9m111.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7640.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7670.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6588.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6752hs.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/imx074.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov9740.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/tw9910.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/sony-btf-mpx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda9840.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6415c.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6420.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvaudio.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw2804.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw9903.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw9906.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/uda1342.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64031a.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64083.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/vp27smpx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bt878.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bttv.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst_ca.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18-alsa.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ddbridge/ddbridge.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dt3155
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dt3155/dt3155.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pluto2/pluto2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt3
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt3/earth-pt3.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-go7007.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/mxb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/smipcie
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/smipcie/smipcie.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/solo6x10
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/solo6x10/solo6x10.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-av.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-ci.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw5864
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw5864/tw5864.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw68
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw68/tw68.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw686x
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw686x/tw686x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/videocodec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/zr36016.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/sh_veu.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/rcar_vin.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_scale_crop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/timblogiw.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1/vsp1.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ati_remote.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ene_ir.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/fintek-cir.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/igorplugusb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/iguanair.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-hix5hd2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-jvc-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-lirc-codec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-nec-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-decoder.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc6-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sharp-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sony-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-xmp-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ite-cir.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-behold-columbus.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-behold.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-delock-61959.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dtt200u.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-su3000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-technisat-ts35.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-slim-2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-twinhan1027.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-videomate-m1f.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-videomate-s350.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0012.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0013.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc2580.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/m88ts2022.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/it913x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/m88rs6000t.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/max2165.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mc44s803.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2060.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt20xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2131.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl301rf.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5005s.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/qm1d1c0042.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/qt1010.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/si2157.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18212.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18218.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18271.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-simple.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-types.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner_it913x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc4000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc5000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/as102
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/as102/dvb-as102.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828/au0828.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/b2c2
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-v4l.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007-loader.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/s2250.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_benq.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_conex.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_dtcs033.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_etoms.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_finepix.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_t613.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_touptek.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vicam.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stk1160/stk1160.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300/poseidon.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dma-sg.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dvb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-v4l2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videodev.ko
#lib/modules/KVER-ipfire/kernel/drivers/memstick
#lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptsas.ko
#lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptscsih.ko
#lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_block.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_bus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_config.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_proc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_scsi.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/axp20x-i2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/axp20x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/bcm590xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/cs5535-mfd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9062-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9063.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9150-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/dln2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/exynos-lpass.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-ctrlbank.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/lpc_ich.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/lpc_sch.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/mfd-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/retu-mfd.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/rtsx_pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/sm501.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc
#lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl
#lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl/altera-stapl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085-i2c.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/cb710
#lib/modules/KVER-ipfire/kernel/drivers/misc/cb710/cb710.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/cs5535-mfgpt.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/ds1682.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/dummy-irq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/misc/echo
+#lib/modules/KVER-ipfire/kernel/drivers/misc/echo/echo.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom
#lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/at24.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/eeprom.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/core/mmc_core.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/cb710-mmc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/mtk-sd.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-acpi.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pltfm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav3.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/tifm_sd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/toshsd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/usdhi6rol0.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/ushc.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/via-sdmmc.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/vub300.ko
#lib/modules/KVER-ipfire/kernel/drivers/net
#lib/modules/KVER-ipfire/kernel/drivers/net/bonding
#lib/modules/KVER-ipfire/kernel/drivers/net/bonding/bonding.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_mdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_mmap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_srab.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/bcm_sf2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/qca8k.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/dummy.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/wd.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec/starfire.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/agere
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/agere/et131x.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/alteon
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/alteon/acenic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/altera
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/altera/altera_tse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon/ena
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon/ena/ena.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/amd8111e.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/lance.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx/atl1.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx/atl2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/aurora
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/aurora/nb8800.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/b44.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2x
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnxt
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnxt/bnxt_en.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/cnic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/genet
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/genet/genet.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/tg3.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna/bna.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/at91_ether.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/macb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda/xgmac.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4/cxgb4.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4vf
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/libcxgb
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/libcxgb/libcxgb.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cirrus
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cirrus/cs89x0.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/dl2k.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/sundance.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dnet.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ec_bhf.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex/benet
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex/benet/be2net.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp/hp100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus/ipg.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e100.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/fm10k
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/fm10k/fm10k.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40evf
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_switchx2.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel/ks8842.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/s2io.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/vxge
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome/nfp
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome/nfp/nfp_netvf.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/nvidia
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/nvidia/forcedeth.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/packetengines
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/packetengines/hamachi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/packetengines/yellowfin.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qed
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qed/qed.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qede
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qede/qede.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qla3xxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlcnic
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlge
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlge/qlge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm/emac
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm/emac/qcom-emac.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rdc
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rdc/r6040.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/8139too.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/atp.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/r8169.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas/sh_eth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rocker
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rocker/rocker.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung/sxgbe
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung/sxgbe/samsung-sxgbe.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc/sfc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/silan
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/smsc/smsc9420.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sun
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sun/cassini.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/tehuti
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/tehuti/tehuti.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti/cpsw_ale.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti/tlan.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via/via-rhine.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/wiznet/w5300.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/fjes
+#lib/modules/KVER-ipfire/kernel/drivers/net/fjes/fjes.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/geneve.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/gtp.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/hyperv
#lib/modules/KVER-ipfire/kernel/drivers/net/hyperv/hv_netvsc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ifb.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/imq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ipvlan
+#lib/modules/KVER-ipfire/kernel/drivers/net/ipvlan/ipvlan.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/macsec.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/macvlan.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/macvtap.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/mdio.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/nlmon.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/aquantia.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm-phy-lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm7xxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm87xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/broadcom.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/cicada.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/davicom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/dp83848.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/dp83867.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/et1011c.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/icplus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/intel-xway.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/lxt.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/marvell.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-bcm-unimac.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-bitbang.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/micrel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/microchip.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mscc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/national.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/qsemi.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/realtek.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/smsc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/ste10Xp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/teranetics.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/vitesse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/xilinx_gmii2rgmii.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ppp
#lib/modules/KVER-ipfire/kernel/drivers/net/ppp/bsd_comp.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ppp/ppp_async.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_mbim.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_ncm.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_subset.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/ch9200.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/cx82310_eth.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/dm9601.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/gl620a.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/ipheth.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/kalmia.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/kaweth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/lan78xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/lg-vl600.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/mcs7830.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/net1080.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/virtio_net.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3
#lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3/vmxnet3.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/vrf.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/vxlan.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/adm8211.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/admtek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/admtek/adm8211.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43/b43.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_wlan_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/libipw.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/usb8xxx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_uap
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_uap/uap8xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/at76c50x-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43/b43.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43legacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco/airo.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco/airo_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/dvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/dvm/iwldvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/mvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_plx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/spectrum_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54usb.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mac80211_hwsim.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwl8k.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwl8k.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek/mt7601u
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800mmio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl818x_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl8xxxu
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/rtl8192ee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be/rtl8723be.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800mmio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_91x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200/cw1200_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200/cw1200_wlan_sdio.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/wl3501_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1201.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1201.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1211rw
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host/nvme-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host/nvme.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/target
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/target/nvmet.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvmem
+#lib/modules/KVER-ipfire/kernel/drivers/nvmem/nvmem_core.ko
#lib/modules/KVER-ipfire/kernel/drivers/parport
#lib/modules/KVER-ipfire/kernel/drivers/parport/parport.ko
#lib/modules/KVER-ipfire/kernel/drivers/parport/parport_ax88796.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/acer-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/acerhdf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/alienware-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/amilo-rfkill.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-laptop.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-nb-wmi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-wireless.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/classmate-laptop.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/compal-laptop.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-rbtn.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-smbios.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-smo8800.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi-aio.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/eeepc-laptop.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/hp-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/hp_accel.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/ideapad-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel-hid.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel-rst.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel-vbtn.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_ips.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_oaktrail.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_pmc_ipc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_punit_ipc.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/msi-laptop.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/msi-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/mxm-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/tc1100-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/thinkpad_acpi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/topstar-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_acpi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_bluetooth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_haps.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/power
-#lib/modules/KVER-ipfire/kernel/drivers/power/generic-adc-battery.ko
+#lib/modules/KVER-ipfire/kernel/drivers/power/supply
+#lib/modules/KVER-ipfire/kernel/drivers/power/supply/generic-adc-battery.ko
#lib/modules/KVER-ipfire/kernel/drivers/pps
#lib/modules/KVER-ipfire/kernel/drivers/pps/pps_core.ko
#lib/modules/KVER-ipfire/kernel/drivers/ptp
#lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp.ko
#lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp_pch.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ab-b5ze-s3.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-abx80x.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq32k.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq4802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-da9063.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1286.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1307.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1374.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-fm3130.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-hid-sensor-time.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12022.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12057.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl1208.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m41t80.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t35.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t59.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-max6900.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-moxart.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-msm6242.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf2127.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf85063.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8523.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8563.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8583.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rp5c01.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rs5c372.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rv3029c2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rv8803.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8010.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8025.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8581.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-stk17ta8.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/aic94xx
#lib/modules/KVER-ipfire/kernel/drivers/scsi/aic94xx/aic94xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/am53c974.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/arcmsr
#lib/modules/KVER-ipfire/kernel/drivers/scsi/arcmsr/arcmsr.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/atp870u.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/dmx3191d.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/dpt_i2o.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/dtc.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/eata.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r
#lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r/esas2r.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/esp_scsi.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe
#lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/fcoe.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/libfcoe.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/hptiop.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/hv_storvsc.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/imm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/in2000.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/initio.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ipr.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ips.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_mm.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_sas.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas
#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/mvsas
#lib/modules/KVER-ipfire/kernel/drivers/scsi/osd/libosd.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/osd/osd.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/osst.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/pas16.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia
#lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia/fdomain_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/qlogicfas.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/qlogicfas408.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_tgt.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_fc.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_iscsi.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_sas.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_srp.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ses.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/sim710.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/smartpqi
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/smartpqi/smartpqi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/snic
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/snic/snic.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/st.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/stex.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c416.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c8xx_2
#lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/t128.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/tmscsim.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/u14-34f.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210-pltfrm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-dwc.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/ultrastor.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/virtio_scsi.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/vmw_pvscsi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/wd7000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/wd719x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/spmi
+#lib/modules/KVER-ipfire/kernel/drivers/spmi/spmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/ssb
#lib/modules/KVER-ipfire/kernel/drivers/ssb/ssb.ko
#lib/modules/KVER-ipfire/kernel/drivers/staging
-#lib/modules/KVER-ipfire/kernel/drivers/staging/echo
-#lib/modules/KVER-ipfire/kernel/drivers/staging/echo/echo.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/et131x
-#lib/modules/KVER-ipfire/kernel/drivers/staging/et131x/et131x.ko
#lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x
#lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmtty.ko
#lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmulte.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139
-#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139/rts5139.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8188eu
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8188eu/r8188eu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8192u
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8192u/r8192u_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8712
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8712/r8712u.ko
#lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss
#lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss/slicoss.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-host.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/vhci-hcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/sm750fb
+#lib/modules/KVER-ipfire/kernel/drivers/staging/sm750fb/sm750fb.ko
#lib/modules/KVER-ipfire/kernel/drivers/thermal
-#lib/modules/KVER-ipfire/kernel/drivers/thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/acpi_thermal_rel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3400_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3402_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3406_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int340x_thermal_zone.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/processor_thermal_device.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_pch_thermal.ko
#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_powerclamp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_quark_dts_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_soc_dts_iosf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_soc_dts_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/thermal-generic-adc.ko
#lib/modules/KVER-ipfire/kernel/drivers/thermal/x86_pkg_temp_thermal.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty
#lib/modules/KVER-ipfire/kernel/drivers/tty/cyclades.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250/8250_dw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250/8250_moxa.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/arc_uart.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/fsl_lpuart.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm
#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea
#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_msm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_zevio.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/class
#lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-acm.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-wdm.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/class/usblp.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/class/usbtmc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common/ulpi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common/usb-otg-fsm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/core
+#lib/modules/KVER-ipfire/kernel/drivers/usb/core/ledtrig-usbport.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-keystone.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/host
#lib/modules/KVER-ipfire/kernel/drivers/usb/host/ssb-hcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci
#lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci/whci-hcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/host/xhci-plat-hcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/image
#lib/modules/KVER-ipfire/kernel/drivers/usb/image/mdc800.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/image/microtek.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/adutux.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/chaoskey.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/ehset.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/emi26.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/emi62.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/sisusbvga
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usb3503.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usb4604.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usblcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbled.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbsevseg.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/uss720.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/yurex.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/mon
#lib/modules/KVER-ipfire/kernel/drivers/usb/mon/usbmon.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/phy
-#lib/modules/KVER-ipfire/kernel/drivers/usb/phy/phy-fsm-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/phy/phy-tahvo.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/aircable.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ark3116.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/usbserial.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/visor.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/zte_ev.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-alauda.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-cypress.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr09.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr55.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-usbat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/usbip-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/usbip-host.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/vhci-hcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore
#lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-wa.ko
#lib/modules/KVER-ipfire/kernel/drivers/vhost
#lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost.ko
#lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost_net.ko
-#lib/modules/KVER-ipfire/kernel/drivers/vhost/vringh.ko
#lib/modules/KVER-ipfire/kernel/drivers/video
-#lib/modules/KVER-ipfire/kernel/drivers/video/arcfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/arkfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty/atyfb.ko
#lib/modules/KVER-ipfire/kernel/drivers/video/backlight
#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/apple_bl.ko
#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/lcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/platform_lcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/pm8941-wled.ko
#lib/modules/KVER-ipfire/kernel/drivers/video/console
#lib/modules/KVER-ipfire/kernel/drivers/video/console/mdacon.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/fb_ddc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/geode
-#lib/modules/KVER-ipfire/kernel/drivers/video/geode/gx1fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/geode/gxfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/geode/lxfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/hgafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/hyperv_fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/i740fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/kyro
-#lib/modules/KVER-ipfire/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/macmodes.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/neofb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/ocfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/output.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/pm2fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/pm3fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/riva
-#lib/modules/KVER-ipfire/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/s3fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/savage
-#lib/modules/KVER-ipfire/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/smscufx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sstfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/svgalib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/syscopyarea.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sysfillrect.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/udlfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/crvml.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/vmlfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vga16fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/arcfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/arkfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/aty
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/aty/atyfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/fb_ddc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/fb_sys_fops.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/svgalib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/syscopyarea.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/sysfillrect.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/sysimgblt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/cyber2000fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/geode
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/geode/gx1fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/geode/gxfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/geode/lxfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/gxt4500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/hgafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/hyperv_fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/i740fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/kyro
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/kyro/kyrofb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/macmodes.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_DAC1064.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_Ti3026.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_accel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_base.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_misc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/neofb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/ocfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/pm2fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/pm3fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/riva
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/riva/rivafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/s3fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/savage
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/savage/savagefb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/sm712fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/smscufx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/sstfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/tridentfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/udlfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion/crvml.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion/vmlfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vga16fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/via
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/via/viafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vt8623fb.ko
#lib/modules/KVER-ipfire/kernel/drivers/video/vgastate.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/via
-#lib/modules/KVER-ipfire/kernel/drivers/video/via/viafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vt8623fb.ko
#lib/modules/KVER-ipfire/kernel/drivers/virtio
#lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_balloon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_input.ko
#lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_mmio.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1
#lib/modules/KVER-ipfire/kernel/drivers/w1/masters
#lib/modules/KVER-ipfire/kernel/drivers/w1/masters/ds2490.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_bq27000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2406.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2408.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2413.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2423.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/advantechwdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim1535_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim7101_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/cadence_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/cpu5wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/dw_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ebc-c384_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/eurotechwdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/f71808e_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/geodewdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/it8712f_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/it87_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/machzwd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/max63xx_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/mena21_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ni903x_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/nv_tco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/of_xilinx_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/pc87413_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_usb.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc_epx_c3.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc_fitpc2_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sc1200wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sc520_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sch311x_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/scx200_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/smsc37b787_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sp5100_tco.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/via_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83627hf_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697hf_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697ug_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83877f_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83977f_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/wafer5823wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/wdat_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/wdt_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ziirave_wdt.ko
#lib/modules/KVER-ipfire/kernel/fs
#lib/modules/KVER-ipfire/kernel/fs/btrfs
#lib/modules/KVER-ipfire/kernel/fs/btrfs/btrfs.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs
#lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout
#lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/filelayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/filelayout/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/flexfilelayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/flexfilelayout/nfs_layout_flexfiles.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/nfs.ko
-#lib/modules/KVER-ipfire/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv2.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv3.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv4.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout
#lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout/objlayoutdriver.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs_common
+#lib/modules/KVER-ipfire/kernel/fs/nfs_common/grace.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs_common/nfs_acl.ko
#lib/modules/KVER-ipfire/kernel/fs/nfsd
#lib/modules/KVER-ipfire/kernel/fs/nfsd/nfsd.ko
#lib/modules/KVER-ipfire/kernel/kernel/trace
#lib/modules/KVER-ipfire/kernel/kernel/trace/ring_buffer_benchmark.ko
#lib/modules/KVER-ipfire/kernel/lib
+#lib/modules/KVER-ipfire/kernel/lib/842
+#lib/modules/KVER-ipfire/kernel/lib/842/842_compress.ko
+#lib/modules/KVER-ipfire/kernel/lib/842/842_decompress.ko
#lib/modules/KVER-ipfire/kernel/lib/asn1_decoder.ko
#lib/modules/KVER-ipfire/kernel/lib/cordic.ko
#lib/modules/KVER-ipfire/kernel/lib/crc-itu-t.ko
#lib/modules/KVER-ipfire/kernel/lib/oid_registry.ko
#lib/modules/KVER-ipfire/kernel/lib/raid6
#lib/modules/KVER-ipfire/kernel/lib/raid6/raid6_pq.ko
-#lib/modules/KVER-ipfire/kernel/lib/rbtree_test.ko
#lib/modules/KVER-ipfire/kernel/lib/ts_bm.ko
#lib/modules/KVER-ipfire/kernel/lib/ts_fsm.ko
#lib/modules/KVER-ipfire/kernel/lib/ts_kmp.ko
#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_filter.ko
#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_nat.ko
#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtables.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nf_log_bridge.ko
#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nf_tables_bridge.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nft_meta_bridge.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nft_reject_bridge.ko
#lib/modules/KVER-ipfire/kernel/net/core
-#lib/modules/KVER-ipfire/kernel/net/core/netprio_cgroup.ko
+#lib/modules/KVER-ipfire/kernel/net/core/devlink.ko
#lib/modules/KVER-ipfire/kernel/net/hsr
#lib/modules/KVER-ipfire/kernel/net/hsr/hsr.ko
-#lib/modules/KVER-ipfire/kernel/net/ieee802154
-#lib/modules/KVER-ipfire/kernel/net/ieee802154/6lowpan_iphc.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4
#lib/modules/KVER-ipfire/kernel/net/ipv4/ah4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/esp4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/fou.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/gre.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/inet_diag.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/ip_gre.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_REJECT.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_SYNPROXY.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_filter.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_mangle.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_nat.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_raw.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_security.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_dup_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_log_arp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_log_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_h323.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_masquerade_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_reject_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_arp.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_nat_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_route_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_dup_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_masq_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_redir_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_reject_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bbr.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bic.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_cdg.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_dctcp.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_diag.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_highspeed.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_htcp.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_hybla.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_illinois.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_lp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_nv.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_scalable.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_vegas.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_veno.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_yeah.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tunnel4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/udp_tunnel.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_beet.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_transport.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_tunnel.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6
#lib/modules/KVER-ipfire/kernel/net/ipv6/ah6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/fou6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ila
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ila/ila.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_gre.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_tunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_udp_tunnel.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_vti.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/ipcomp6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/mip6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_nat.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_raw.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_dup_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_log_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_masquerade_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_reject_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_tables_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_nat_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_route_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_dup_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_masq_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_redir_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_reject_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/sit.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/tunnel6.ko
#lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_ppp.ko
#lib/modules/KVER-ipfire/kernel/net/mac80211
#lib/modules/KVER-ipfire/kernel/net/mac80211/mac80211.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_gso.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_iptunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_router.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipmark.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_mac.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_net.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netnet.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_fo.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lc.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_ovf.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_rr.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_sed.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_sip.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_snmp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_dup_netdev.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_log_common.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_amanda.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_ftp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_dccp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_sctp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_redirect.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_sip.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_tftp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_synproxy_core.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables_inet.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables_netdev.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_acct.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cthelper.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cttimeout.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_compat.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_counter.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_ct.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_dup_netdev.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_exthdr.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_fwd_netdev.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_hash.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_limit.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_log.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_masq.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_meta.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_nat.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_numgen.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_queue.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_rbtree.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_quota.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_redir.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject_inet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_set_hash.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_set_rbtree.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_AUDIT.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CHECKSUM.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CLASSIFY.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_hl.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_ipcomp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_iprange.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_ipvs.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_l2tp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_layer7.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_length.ko
#lib/modules/KVER-ipfire/kernel/net/netlink/netlink_diag.ko
#lib/modules/KVER-ipfire/kernel/net/openvswitch
#lib/modules/KVER-ipfire/kernel/net/openvswitch/openvswitch.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-geneve.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-gre.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-vxlan.ko
#lib/modules/KVER-ipfire/kernel/net/rfkill
#lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill-gpio.ko
#lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill.ko
#lib/modules/KVER-ipfire/kernel/net/sched
+#lib/modules/KVER-ipfire/kernel/net/sched/act_bpf.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_connmark.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_csum.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_gact.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_ife.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_ipt.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_mark.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_skbprio.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_skbtcindex.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_mirred.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_nat.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_pedit.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_police.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_simple.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_skbedit.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_skbmod.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_tunnel_key.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_vlan.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_basic.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_bpf.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_cgroup.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_flow.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_flower.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_fw.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_matchall.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_route.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_rsvp.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_rsvp6.ko
#lib/modules/KVER-ipfire/kernel/net/sched/sch_teql.ko
#lib/modules/KVER-ipfire/kernel/net/sctp
#lib/modules/KVER-ipfire/kernel/net/sctp/sctp.ko
+#lib/modules/KVER-ipfire/kernel/net/sctp/sctp_diag.ko
#lib/modules/KVER-ipfire/kernel/net/sunrpc
#lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss
#lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
#lib/modules/KVER-ipfire/kernel/net/unix
#lib/modules/KVER-ipfire/kernel/net/unix/unix_diag.ko
#lib/modules/KVER-ipfire/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_virtio_transport.ko
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_virtio_transport_common.ko
#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko
#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vsock.ko
#lib/modules/KVER-ipfire/kernel/net/wireless
#lib/modules/KVER-ipfire/kernel/sound/drivers/vx
#lib/modules/KVER-ipfire/kernel/sound/drivers/vx/snd-vx-lib.ko
#lib/modules/KVER-ipfire/kernel/sound/firewire
-#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-dice.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/bebob
+#lib/modules/KVER-ipfire/kernel/sound/firewire/bebob/snd-bebob.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/dice
+#lib/modules/KVER-ipfire/kernel/sound/firewire/dice/snd-dice.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/digi00x
+#lib/modules/KVER-ipfire/kernel/sound/firewire/digi00x/snd-firewire-digi00x.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/fireworks
+#lib/modules/KVER-ipfire/kernel/sound/firewire/fireworks/snd-fireworks.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/oxfw
+#lib/modules/KVER-ipfire/kernel/sound/firewire/oxfw/snd-oxfw.ko
#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-lib.ko
-#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-speakers.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/tascam
+#lib/modules/KVER-ipfire/kernel/sound/firewire/tascam/snd-firewire-tascam.ko
+#lib/modules/KVER-ipfire/kernel/sound/hda
+#lib/modules/KVER-ipfire/kernel/sound/hda/snd-hda-core.ko
#lib/modules/KVER-ipfire/kernel/sound/i2c
#lib/modules/KVER-ipfire/kernel/sound/i2c/other
#lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4113.ko
#lib/modules/KVER-ipfire/kernel/sound/usb
#lib/modules/KVER-ipfire/kernel/sound/usb/6fire
#lib/modules/KVER-ipfire/kernel/sound/usb/6fire/snd-usb-6fire.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/bcd2000
+#lib/modules/KVER-ipfire/kernel/sound/usb/bcd2000/snd-bcd2000.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/caiaq
#lib/modules/KVER-ipfire/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/hiface
#lib/modules/KVER-ipfire/kernel/sound/usb/hiface/snd-usb-hiface.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-line6.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-pod.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-podhd.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-toneport.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-variax.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/misc
#lib/modules/KVER-ipfire/kernel/sound/usb/misc/snd-ua101.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/snd-usb-audio.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/usx2y
#lib/modules/KVER-ipfire/kernel/sound/usb/usx2y/snd-usb-us122l.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
+#lib/modules/KVER-ipfire/kernel/virt
+#lib/modules/KVER-ipfire/kernel/virt/lib
+#lib/modules/KVER-ipfire/kernel/virt/lib/irqbypass.ko
#lib/modules/KVER-ipfire/modules.alias
#lib/modules/KVER-ipfire/modules.alias.bin
#lib/modules/KVER-ipfire/modules.builtin
#usr/include/asm/ist.h
#usr/include/asm/kvm.h
#usr/include/asm/kvm_para.h
+#usr/include/asm/kvm_perf.h
#usr/include/asm/ldt.h
#usr/include/asm/mce.h
#usr/include/asm/mman.h
#usr/include/asm/vmx.h
#usr/include/asm/vsyscall.h
#usr/include/drm
+#usr/include/drm/amdgpu_drm.h
#usr/include/drm/drm.h
#usr/include/drm/drm_fourcc.h
#usr/include/drm/drm_mode.h
#usr/include/drm/savage_drm.h
#usr/include/drm/sis_drm.h
#usr/include/drm/tegra_drm.h
+#usr/include/drm/vc4_drm.h
#usr/include/drm/via_drm.h
+#usr/include/drm/virtgpu_drm.h
#usr/include/drm/vmwgfx_drm.h
#usr/include/linux
#usr/include/linux/a.out.h
#usr/include/linux/affs_hardblocks.h
#usr/include/linux/agpgart.h
#usr/include/linux/aio_abi.h
+#usr/include/linux/am437x-vpfe.h
+#usr/include/linux/android
+#usr/include/linux/android/binder.h
#usr/include/linux/apm_bios.h
#usr/include/linux/arcfb.h
#usr/include/linux/atalk.h
#usr/include/linux/binfmts.h
#usr/include/linux/blkpg.h
#usr/include/linux/blktrace_api.h
+#usr/include/linux/bpf.h
+#usr/include/linux/bpf_common.h
+#usr/include/linux/bpf_perf_event.h
#usr/include/linux/bpqether.h
#usr/include/linux/bsg.h
+#usr/include/linux/bt-bmc.h
#usr/include/linux/btrfs.h
#usr/include/linux/byteorder
#usr/include/linux/byteorder/big_endian.h
#usr/include/linux/cycx_cfm.h
#usr/include/linux/dcbnl.h
#usr/include/linux/dccp.h
+#usr/include/linux/devlink.h
#usr/include/linux/dlm.h
#usr/include/linux/dlm_device.h
#usr/include/linux/dlm_netlink.h
#usr/include/linux/firewire-cdev.h
#usr/include/linux/firewire-constants.h
#usr/include/linux/flat.h
+#usr/include/linux/fou.h
#usr/include/linux/fs.h
#usr/include/linux/fsl_hypervisor.h
#usr/include/linux/fuse.h
#usr/include/linux/genetlink.h
#usr/include/linux/gfs2_ondisk.h
#usr/include/linux/gigaset_dev.h
+#usr/include/linux/gpio.h
+#usr/include/linux/gsmmux.h
+#usr/include/linux/gtp.h
#usr/include/linux/hdlc
#usr/include/linux/hdlc.h
#usr/include/linux/hdlc/ioctl.h
#usr/include/linux/hidraw.h
#usr/include/linux/hpet.h
#usr/include/linux/hsi
+#usr/include/linux/hsi/cs-protocol.h
#usr/include/linux/hsi/hsi_char.h
+#usr/include/linux/hsr_netlink.h
#usr/include/linux/hw_breakpoint.h
+#usr/include/linux/hyperv.h
#usr/include/linux/hysdn_if.h
#usr/include/linux/i2c-dev.h
#usr/include/linux/i2c.h
#usr/include/linux/if_infiniband.h
#usr/include/linux/if_link.h
#usr/include/linux/if_ltalk.h
+#usr/include/linux/if_macsec.h
#usr/include/linux/if_packet.h
#usr/include/linux/if_phonet.h
#usr/include/linux/if_plip.h
#usr/include/linux/if_vlan.h
#usr/include/linux/if_x25.h
#usr/include/linux/igmp.h
+#usr/include/linux/iio
+#usr/include/linux/iio/events.h
+#usr/include/linux/iio/types.h
+#usr/include/linux/ila.h
#usr/include/linux/in.h
#usr/include/linux/in6.h
#usr/include/linux/in_route.h
#usr/include/linux/inet_diag.h
#usr/include/linux/inotify.h
+#usr/include/linux/input-event-codes.h
#usr/include/linux/input.h
#usr/include/linux/ioctl.h
#usr/include/linux/ip.h
#usr/include/linux/ixjuser.h
#usr/include/linux/jffs2.h
#usr/include/linux/joystick.h
+#usr/include/linux/kcmp.h
#usr/include/linux/kd.h
#usr/include/linux/kdev_t.h
#usr/include/linux/kernel-page-flags.h
#usr/include/linux/l2tp.h
#usr/include/linux/libc-compat.h
#usr/include/linux/limits.h
+#usr/include/linux/lirc.h
#usr/include/linux/llc.h
#usr/include/linux/loop.h
#usr/include/linux/lp.h
+#usr/include/linux/lwtunnel.h
#usr/include/linux/magic.h
#usr/include/linux/major.h
#usr/include/linux/map_to_7segment.h
#usr/include/linux/matroxfb.h
#usr/include/linux/mdio.h
+#usr/include/linux/media-bus-format.h
#usr/include/linux/media.h
#usr/include/linux/mei.h
+#usr/include/linux/membarrier.h
+#usr/include/linux/memfd.h
#usr/include/linux/mempolicy.h
#usr/include/linux/meye.h
#usr/include/linux/mic_common.h
#usr/include/linux/mmc
#usr/include/linux/mmc/ioctl.h
#usr/include/linux/mmtimer.h
+#usr/include/linux/mpls.h
+#usr/include/linux/mpls_iptunnel.h
#usr/include/linux/mqueue.h
#usr/include/linux/mroute.h
#usr/include/linux/mroute6.h
#usr/include/linux/ncp_fs.h
#usr/include/linux/ncp_mount.h
#usr/include/linux/ncp_no.h
+#usr/include/linux/ndctl.h
#usr/include/linux/neighbour.h
#usr/include/linux/net.h
#usr/include/linux/net_dropmon.h
+#usr/include/linux/net_namespace.h
#usr/include/linux/net_tstamp.h
#usr/include/linux/netconf.h
#usr/include/linux/netdevice.h
#usr/include/linux/netfilter/nf_conntrack_sctp.h
#usr/include/linux/netfilter/nf_conntrack_tcp.h
#usr/include/linux/netfilter/nf_conntrack_tuple_common.h
+#usr/include/linux/netfilter/nf_log.h
#usr/include/linux/netfilter/nf_nat.h
#usr/include/linux/netfilter/nf_tables.h
#usr/include/linux/netfilter/nf_tables_compat.h
#usr/include/linux/netfilter/xt_NFQUEUE.h
#usr/include/linux/netfilter/xt_RATEEST.h
#usr/include/linux/netfilter/xt_SECMARK.h
+#usr/include/linux/netfilter/xt_SYNPROXY.h
#usr/include/linux/netfilter/xt_TCPMSS.h
#usr/include/linux/netfilter/xt_TCPOPTSTRIP.h
#usr/include/linux/netfilter/xt_TEE.h
#usr/include/linux/netfilter/xt_iprange.h
#usr/include/linux/netfilter/xt_ipvs.h
#usr/include/linux/netfilter/xt_l2tp.h
-#usr/include/linux/netfilter/xt_layer7.h
#usr/include/linux/netfilter/xt_length.h
#usr/include/linux/netfilter/xt_limit.h
#usr/include/linux/netfilter/xt_mac.h
#usr/include/linux/netfilter_bridge/ebt_pkttype.h
#usr/include/linux/netfilter_bridge/ebt_redirect.h
#usr/include/linux/netfilter_bridge/ebt_stp.h
-#usr/include/linux/netfilter_bridge/ebt_ulog.h
#usr/include/linux/netfilter_bridge/ebt_vlan.h
#usr/include/linux/netfilter_bridge/ebtables.h
#usr/include/linux/netfilter_decnet.h
#usr/include/linux/netfilter_ipv4/ipt_LOG.h
#usr/include/linux/netfilter_ipv4/ipt_REJECT.h
#usr/include/linux/netfilter_ipv4/ipt_TTL.h
-#usr/include/linux/netfilter_ipv4/ipt_ULOG.h
#usr/include/linux/netfilter_ipv4/ipt_ah.h
#usr/include/linux/netfilter_ipv4/ipt_ecn.h
#usr/include/linux/netfilter_ipv4/ipt_ttl.h
#usr/include/linux/nfsd/stats.h
#usr/include/linux/nl80211.h
#usr/include/linux/nubus.h
-#usr/include/linux/nvme.h
+#usr/include/linux/nvme_ioctl.h
#usr/include/linux/nvram.h
#usr/include/linux/omap3isp.h
#usr/include/linux/omapfb.h
#usr/include/linux/pktcdvd.h
#usr/include/linux/pmu.h
#usr/include/linux/poll.h
+#usr/include/linux/posix_acl.h
+#usr/include/linux/posix_acl_xattr.h
#usr/include/linux/posix_types.h
#usr/include/linux/ppdev.h
#usr/include/linux/ppp-comp.h
#usr/include/linux/ppp_defs.h
#usr/include/linux/pps.h
#usr/include/linux/prctl.h
+#usr/include/linux/psci.h
#usr/include/linux/ptp_clock.h
#usr/include/linux/ptrace.h
#usr/include/linux/qnx4_fs.h
#usr/include/linux/reiserfs_xattr.h
#usr/include/linux/resource.h
#usr/include/linux/rfkill.h
+#usr/include/linux/rio_cm_cdev.h
+#usr/include/linux/rio_mport_cdev.h
#usr/include/linux/romfs_fs.h
#usr/include/linux/rose.h
#usr/include/linux/route.h
#usr/include/linux/rtnetlink.h
#usr/include/linux/scc.h
#usr/include/linux/sched.h
+#usr/include/linux/scif_ioctl.h
#usr/include/linux/screen_info.h
#usr/include/linux/sctp.h
#usr/include/linux/sdla.h
#usr/include/linux/shm.h
#usr/include/linux/signal.h
#usr/include/linux/signalfd.h
+#usr/include/linux/smiapp.h
#usr/include/linux/snmp.h
#usr/include/linux/sock_diag.h
#usr/include/linux/socket.h
#usr/include/linux/sockios.h
-#usr/include/linux/som.h
#usr/include/linux/sonet.h
#usr/include/linux/sonypi.h
#usr/include/linux/sound.h
#usr/include/linux/sunrpc/debug.h
#usr/include/linux/suspend_ioctls.h
#usr/include/linux/swab.h
+#usr/include/linux/sync_file.h
#usr/include/linux/synclink.h
#usr/include/linux/sysctl.h
#usr/include/linux/sysinfo.h
+#usr/include/linux/target_core_user.h
#usr/include/linux/taskstats.h
#usr/include/linux/tc_act
+#usr/include/linux/tc_act/tc_bpf.h
+#usr/include/linux/tc_act/tc_connmark.h
#usr/include/linux/tc_act/tc_csum.h
#usr/include/linux/tc_act/tc_defact.h
#usr/include/linux/tc_act/tc_gact.h
+#usr/include/linux/tc_act/tc_ife.h
#usr/include/linux/tc_act/tc_ipt.h
#usr/include/linux/tc_act/tc_mirred.h
#usr/include/linux/tc_act/tc_nat.h
#usr/include/linux/tc_act/tc_pedit.h
#usr/include/linux/tc_act/tc_skbedit.h
+#usr/include/linux/tc_act/tc_skbmod.h
+#usr/include/linux/tc_act/tc_tunnel_key.h
+#usr/include/linux/tc_act/tc_vlan.h
#usr/include/linux/tc_ematch
#usr/include/linux/tc_ematch/tc_em_cmp.h
#usr/include/linux/tc_ematch/tc_em_meta.h
#usr/include/linux/tcp_metrics.h
#usr/include/linux/telephony.h
#usr/include/linux/termios.h
+#usr/include/linux/thermal.h
#usr/include/linux/time.h
#usr/include/linux/times.h
#usr/include/linux/timex.h
#usr/include/linux/tiocl.h
#usr/include/linux/tipc.h
#usr/include/linux/tipc_config.h
+#usr/include/linux/tipc_netlink.h
#usr/include/linux/toshiba.h
#usr/include/linux/tty.h
#usr/include/linux/tty_flags.h
#usr/include/linux/usb/tmc.h
#usr/include/linux/usb/video.h
#usr/include/linux/usbdevice_fs.h
+#usr/include/linux/usbip.h
+#usr/include/linux/userfaultfd.h
#usr/include/linux/utime.h
#usr/include/linux/utsname.h
#usr/include/linux/uuid.h
#usr/include/linux/virtio_blk.h
#usr/include/linux/virtio_config.h
#usr/include/linux/virtio_console.h
+#usr/include/linux/virtio_gpu.h
#usr/include/linux/virtio_ids.h
+#usr/include/linux/virtio_input.h
#usr/include/linux/virtio_net.h
#usr/include/linux/virtio_pci.h
#usr/include/linux/virtio_ring.h
#usr/include/linux/virtio_rng.h
+#usr/include/linux/virtio_scsi.h
+#usr/include/linux/virtio_types.h
+#usr/include/linux/virtio_vsock.h
+#usr/include/linux/vm_sockets.h
#usr/include/linux/vt.h
+#usr/include/linux/vtpm_proxy.h
#usr/include/linux/wait.h
#usr/include/linux/wanrouter.h
#usr/include/linux/watchdog.h
#usr/include/linux/x25.h
#usr/include/linux/xattr.h
#usr/include/linux/xfrm.h
+#usr/include/linux/xilinx-v4l2-controls.h
#usr/include/linux/zorro.h
#usr/include/linux/zorro_ids.h
+#usr/include/misc
+#usr/include/misc/cxl.h
#usr/include/mtd
#usr/include/mtd/inftl-user.h
#usr/include/mtd/mtd-abi.h
#usr/include/mtd/nftl-user.h
#usr/include/mtd/ubi-user.h
#usr/include/rdma
+#usr/include/rdma/cxgb3-abi.h
+#usr/include/rdma/cxgb4-abi.h
+#usr/include/rdma/hfi
+#usr/include/rdma/hfi/hfi1_user.h
#usr/include/rdma/ib_user_cm.h
#usr/include/rdma/ib_user_mad.h
#usr/include/rdma/ib_user_sa.h
#usr/include/rdma/ib_user_verbs.h
+#usr/include/rdma/mlx4-abi.h
+#usr/include/rdma/mlx5-abi.h
+#usr/include/rdma/mthca-abi.h
+#usr/include/rdma/nes-abi.h
+#usr/include/rdma/ocrdma-abi.h
#usr/include/rdma/rdma_netlink.h
#usr/include/rdma/rdma_user_cm.h
+#usr/include/rdma/rdma_user_rxe.h
#usr/include/scsi
+#usr/include/scsi/cxlflash_ioctl.h
#usr/include/scsi/fc
#usr/include/scsi/fc/fc_els.h
#usr/include/scsi/fc/fc_fs.h
#usr/include/scsi/scsi_netlink_fc.h
#usr/include/sound
#usr/include/sound/asequencer.h
+#usr/include/sound/asoc.h
#usr/include/sound/asound.h
#usr/include/sound/asound_fm.h
#usr/include/sound/compress_offload.h
#usr/include/sound/hdspm.h
#usr/include/sound/sb16_csp.h
#usr/include/sound/sfnt_info.h
+#usr/include/sound/snd_sst_tokens.h
+#usr/include/sound/tlv.h
+#usr/include/sound/usb_stream.h
#usr/include/uapi
#usr/include/video
#usr/include/video/edid.h
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/camellia-x86_64.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/cast5-avx-x86_64.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/cast6-avx-x86_64.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/chacha20-x86_64.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/crc32-pclmul.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/crct10dif-pclmul.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/des3_ede-x86_64.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/ghash-clmulni-intel.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/poly1305-x86_64.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/salsa20-x86_64.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-avx-x86_64.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-avx2.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-sse2-x86_64.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha1-mb
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha1-mb/sha1-mb.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha1-ssse3.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha256-mb
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha256-mb/sha256-mb.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha256-ssse3.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha512-mb
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha512-mb/sha512-mb.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha512-ssse3.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-avx-x86_64.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-x86_64-3way.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-x86_64.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/events
+#lib/modules/KVER-ipfire/kernel/arch/x86/events/amd
+#lib/modules/KVER-ipfire/kernel/arch/x86/events/amd/power.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/ia32
#lib/modules/KVER-ipfire/kernel/arch/x86/ia32/ia32_aout.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode/microcode.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/iosf_mbi.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/test_nx.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/kvm
#lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm-amd.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm-intel.ko
#lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm.ko
#lib/modules/KVER-ipfire/kernel/crypto
+#lib/modules/KVER-ipfire/kernel/crypto/algif_aead.ko
+#lib/modules/KVER-ipfire/kernel/crypto/algif_rng.ko
#lib/modules/KVER-ipfire/kernel/crypto/ansi_cprng.ko
#lib/modules/KVER-ipfire/kernel/crypto/anubis.ko
#lib/modules/KVER-ipfire/kernel/crypto/arc4.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/public_key.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/rsa.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/x509_key_parser.ko
#lib/modules/KVER-ipfire/kernel/crypto/async_tx
#lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_memcpy.ko
#lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_pq.ko
#lib/modules/KVER-ipfire/kernel/crypto/cast6_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/cast_common.ko
#lib/modules/KVER-ipfire/kernel/crypto/ccm.ko
+#lib/modules/KVER-ipfire/kernel/crypto/chacha20_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/chacha20poly1305.ko
#lib/modules/KVER-ipfire/kernel/crypto/cmac.ko
-#lib/modules/KVER-ipfire/kernel/crypto/crypto_null.ko
+#lib/modules/KVER-ipfire/kernel/crypto/crypto_user.ko
#lib/modules/KVER-ipfire/kernel/crypto/cts.ko
#lib/modules/KVER-ipfire/kernel/crypto/deflate.ko
#lib/modules/KVER-ipfire/kernel/crypto/des_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/dh_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/ecdh_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/echainiv.ko
#lib/modules/KVER-ipfire/kernel/crypto/fcrypt.ko
#lib/modules/KVER-ipfire/kernel/crypto/gcm.ko
#lib/modules/KVER-ipfire/kernel/crypto/ghash-generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/keywrap.ko
#lib/modules/KVER-ipfire/kernel/crypto/khazad.ko
#lib/modules/KVER-ipfire/kernel/crypto/lz4.ko
#lib/modules/KVER-ipfire/kernel/crypto/lz4hc.ko
#lib/modules/KVER-ipfire/kernel/crypto/lzo.ko
+#lib/modules/KVER-ipfire/kernel/crypto/mcryptd.ko
#lib/modules/KVER-ipfire/kernel/crypto/md4.ko
#lib/modules/KVER-ipfire/kernel/crypto/michael_mic.ko
#lib/modules/KVER-ipfire/kernel/crypto/pcbc.ko
#lib/modules/KVER-ipfire/kernel/crypto/pcrypt.ko
+#lib/modules/KVER-ipfire/kernel/crypto/poly1305_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/rmd128.ko
#lib/modules/KVER-ipfire/kernel/crypto/rmd160.ko
#lib/modules/KVER-ipfire/kernel/crypto/rmd256.ko
#lib/modules/KVER-ipfire/kernel/crypto/rmd320.ko
+#lib/modules/KVER-ipfire/kernel/crypto/rsa_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/salsa20_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/seed.ko
#lib/modules/KVER-ipfire/kernel/crypto/serpent_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/sha1_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/sha3_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/sha512_generic.ko
#lib/modules/KVER-ipfire/kernel/crypto/tcrypt.ko
#lib/modules/KVER-ipfire/kernel/crypto/tea.ko
#lib/modules/KVER-ipfire/kernel/crypto/wp512.ko
#lib/modules/KVER-ipfire/kernel/crypto/xcbc.ko
#lib/modules/KVER-ipfire/kernel/crypto/xor.ko
-#lib/modules/KVER-ipfire/kernel/crypto/zlib.ko
#lib/modules/KVER-ipfire/kernel/drivers
#lib/modules/KVER-ipfire/kernel/drivers/acpi
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_configfs.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_extlog.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_ipmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_pad.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/custom_method.ko
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/dptf
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/dptf/dptf_power.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/ec_sys.ko
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/nfit
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/nfit/nfit.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/sbs.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/sbshc.ko
#lib/modules/KVER-ipfire/kernel/drivers/acpi/video.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/acard-ahci.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/ahci_platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/ata_generic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/libahci_platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_acpi.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_ali.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_amd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_arasan_cf.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_artop.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_atiixp.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_atp867x.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cmd640.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cmd64x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5520.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5530.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5536.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cypress.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_efar.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_hpt366.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_radisys.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_rdc.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_rz1000.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_sc1200.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_sch.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_serverworks.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_sil680.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_triflex.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_via.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/pdc_adma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_highbank.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_dwc_460ex.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_inic162x.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_mv.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_nv.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_promise.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_qstor.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_rcar.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil24.ko
#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sis.ko
#lib/modules/KVER-ipfire/kernel/drivers/block/floppy.ko
#lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx
#lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx/mtip32xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/block/nvme.ko
#lib/modules/KVER-ipfire/kernel/drivers/block/rsxx
#lib/modules/KVER-ipfire/kernel/drivers/block/rsxx/rsxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/block/skd.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bfusb.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bluecard_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bpa10x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bt3c_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btbcm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btintel.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btqca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btrtl.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btsdio.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btuart_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btusb.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btwilink.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/dtl1_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/hci_uart.ko
#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/hci_vhci.ko
#lib/modules/KVER-ipfire/kernel/drivers/char
#lib/modules/KVER-ipfire/kernel/drivers/char/hangcheck-timer.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/amd-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/atmel-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/exynos-rng.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/intel-rng.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/timeriomem-rng.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/via-rng.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/virtio-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/i8k.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_devintf.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_msghandler.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_poweroff.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_si.ko
+#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_ssif.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_watchdog.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/lp.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/mwave
#lib/modules/KVER-ipfire/kernel/drivers/char/mwave/mwave.ko
#lib/modules/KVER-ipfire/kernel/drivers/char/ppdev.ko
-#lib/modules/KVER-ipfire/kernel/drivers/clocksource
-#lib/modules/KVER-ipfire/kernel/drivers/clocksource/cs5535-clockevt.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/acpi-cpufreq.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/amd_freq_sensitivity.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_conservative.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_ondemand.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_powersave.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_stats.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/p4-clockmod.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/pcc-cpufreq.ko
#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/powernow-k8.ko
#lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp
#lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp-crypto.ko
#lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/chelsio
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/chelsio/chcr.ko
#lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-aes.ko
#lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-sha.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxx
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxx/qat_c3xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxxvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxxvf/qat_c3xxxvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62x
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62x/qat_c62x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62xvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62xvf/qat_c62xvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_common
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_common/intel_qat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xcc
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xcc/qat_dh895xcc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xccvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xccvf/qat_dh895xccvf.ko
#lib/modules/KVER-ipfire/kernel/drivers/dca
#lib/modules/KVER-ipfire/kernel/drivers/dca/dca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_simpleondemand.ko
#lib/modules/KVER-ipfire/kernel/drivers/dma
#lib/modules/KVER-ipfire/kernel/drivers/dma/dw
#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/dma/ioat
#lib/modules/KVER-ipfire/kernel/drivers/dma/ioat/ioatdma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/pch_dma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/timb_dma.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac
#lib/modules/KVER-ipfire/kernel/drivers/edac/amd64_edac_mod.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/e752x_edac.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/i7300_edac.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/i7core_edac.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/i82975x_edac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/edac/mce_amd_inj.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/sb_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/skx_edac.ko
#lib/modules/KVER-ipfire/kernel/drivers/edac/x38_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/extcon
+#lib/modules/KVER-ipfire/kernel/drivers/extcon/extcon-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/firewire
#lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-ohci.ko
#lib/modules/KVER-ipfire/kernel/drivers/firmware/edd.ko
#lib/modules/KVER-ipfire/kernel/drivers/firmware/iscsi_ibft.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-amdpt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-dwapb.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-f7188x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-generic.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ich.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-it87.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-mockup.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-sch.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-sch311x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ts5500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-tpic2810.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-viperboard.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd/amdgpu
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast/ast.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs/bochs-drm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bridge
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bridge/analogix-anx78xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus/cirrus.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_kms_helper.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_usb.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/ch7006.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/sil164.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/tda998x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810/i810.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915/i915.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga/mga.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200/mgag200.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau/nouveau.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl/qxl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128/r128.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/radeon
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/radeon/radeon.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/savage
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/sis
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/sis/sis.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/tdfx
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/tdfx/tdfx.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm/ttm.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl/udl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via/via.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/virtio
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/virtio/virtio-gpu.ko
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx
#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-asus.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-aureal.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gyration.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-keytouch.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lcpower.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lenovo-tpkbd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-led.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lenovo.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech-dj.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech-hidpp.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-ortek.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-petalynx.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-picolcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sensor-hub.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-speedlink.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-thingm.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-tivo.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-topseed.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-twinhan.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-zydacron.ko
#lib/modules/KVER-ipfire/kernel/drivers/hid/i2c-hid
#lib/modules/KVER-ipfire/kernel/drivers/hid/i2c-hid/i2c-hid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/intel-ish-hid
+#lib/modules/KVER-ipfire/kernel/drivers/hid/intel-ish-hid/intel-ish-ipc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/intel-ish-hid/intel-ishtp-hid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/intel-ish-hid/intel-ishtp.ko
#lib/modules/KVER-ipfire/kernel/drivers/hsi
#lib/modules/KVER-ipfire/kernel/drivers/hsi/clients
#lib/modules/KVER-ipfire/kernel/drivers/hsi/clients/hsi_char.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/acpi_power_meter.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ad7414.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ad7418.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adc128d818.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1021.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1025.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1026.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/asus_atk0110.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/atxp1.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/coretemp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/dell-smm-hwmon.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/dme1737.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds1621.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds620.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/f75375s.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/fam15h_power.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/fschmd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ftsteutates.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/g760a.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/g762.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl518sm.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl520sm.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/hih6130.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/htu21.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/hwmon-vid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5500_temp.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5k_amb.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmaem.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmpex.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina209.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina2xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina3221.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/it87.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/k10temp.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/k8temp.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95234.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95241.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95245.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc2945.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc2990.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4151.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4215.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4222.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4245.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4260.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4261.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max16065.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1619.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1668.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max197.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max31790.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6639.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6642.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6650.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6697.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct6683.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct6775.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct7802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct7904.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ntc_thermistor.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87360.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87427.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/adm1275.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/lm25066.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ltc3815.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max16064.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max20751.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max34440.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max8688.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/pmbus.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/pmbus_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/tps40422.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9000.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9200.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/powr1220.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch5627.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch5636.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch56xx-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht15.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht21.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht3x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/shtc1.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sis5595.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47b397.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m1.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m192.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tc74.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/thmc50.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp102.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp103.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp401.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp421.ko
#lib/modules/KVER-ipfire/kernel/drivers/hwmon/via-cputemp.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-emev2.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-i801.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-isch.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-ismt.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-dev.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-mux.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-slave-eeprom.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-smbus.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes
#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-gpio.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca9541.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca954x.ko
#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pinctrl.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-reg.ko
#lib/modules/KVER-ipfire/kernel/drivers/iio
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer/industrialio-buffer-cb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer/kfifo_buf.ko
#lib/modules/KVER-ipfire/kernel/drivers/iio/common
#lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors
#lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
#lib/modules/KVER-ipfire/kernel/drivers/iio/industrialio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/iio/kfifo_buf.ko
#lib/modules/KVER-ipfire/kernel/drivers/input
#lib/modules/KVER-ipfire/kernel/drivers/input/input-polldev.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard
+#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/adc-keys.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys_polled.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/lm8333.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/appletouch.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/bcm5974.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/cyapatp.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/psmouse.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/sermouse.ko
#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/synaptics_i2c.ko
#lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/mISDN_core.ko
#lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds
-#lib/modules/KVER-ipfire/kernel/drivers/leds/dell-led.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-bd2802.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-blinkm.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-clevo-mail.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp55xx-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp8501.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lt3593.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ot200.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9532.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca955x.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca963x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9685.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ss4200.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-tca6507.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-timer.ko
#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-transient.ko
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm/gennvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm/rrpc.ko
#lib/modules/KVER-ipfire/kernel/drivers/md
#lib/modules/KVER-ipfire/kernel/drivers/md/bcache
#lib/modules/KVER-ipfire/kernel/drivers/md/bcache/bcache.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-bio-prison.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-cleaner.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-smq.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-crypt.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-log-userspace.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-log-writes.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-multipath.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-queue-length.ko
#lib/modules/KVER-ipfire/kernel/drivers/md/dm-raid.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/common
#lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2
#lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/btcx-risc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/common/cx2341x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/common/cypress_firmware.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/common/saa7146
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/a8293.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9013.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/as102_fe.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/atbm8830.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_common.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/bcm3510.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22700.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22702.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24110.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24113.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24116.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24117.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24120.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24123.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cxd2820r.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib0070.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib7000p.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib8000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drx39xyj
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drx39xyj/drx39xyj.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxd.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxk.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ds3000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvb-pll.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/gp8psk-fe.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6405.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6421.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6423.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/it913x-fe.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/itd1000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ix2505v.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/l64781.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lg2160.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt3306a.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt330x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp21.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp22.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88dc2800.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88ds3103.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88rs2000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a16.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mn88472.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mn88473.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt312.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt352.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt200x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt6000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51132.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51211.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2830.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2832.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1409.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1411.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1420.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si2165.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si2168.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp8870.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp887x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb0899.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6100.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv090x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tc90522.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10021.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10023.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10048.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7170.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7175.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7180.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt819.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt856.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt866.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs3308.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs5345.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs53l32a.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cx25840
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ks0127.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/m52790.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9m111.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7640.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7670.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6588.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6752hs.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/imx074.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov9740.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/tw9910.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/sony-btf-mpx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda9840.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6415c.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6420.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvaudio.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw2804.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw9903.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw9906.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/uda1342.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64031a.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64083.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/vp27smpx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bt878.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bttv.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst_ca.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18-alsa.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ddbridge/ddbridge.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dt3155
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dt3155/dt3155.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pluto2/pluto2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt3
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt3/earth-pt3.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-go7007.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/mxb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/smipcie
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/smipcie/smipcie.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/solo6x10
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/solo6x10/solo6x10.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-av.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-ci.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw5864
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw5864/tw5864.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw68
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw68/tw68.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw686x
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw686x/tw686x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/videocodec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/zr36016.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/sh_veu.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/rcar_vin.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_scale_crop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/timblogiw.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1/vsp1.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ati_remote.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ene_ir.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/fintek-cir.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/igorplugusb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/iguanair.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-hix5hd2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-jvc-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-lirc-codec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-nec-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-decoder.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc6-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sharp-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sony-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-xmp-decoder.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ite-cir.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-behold-columbus.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-behold.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-delock-61959.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dtt200u.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-su3000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-technisat-ts35.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-slim-2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-twinhan1027.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-videomate-m1f.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-videomate-s350.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0012.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0013.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc2580.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/m88ts2022.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/it913x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/m88rs6000t.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/max2165.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mc44s803.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2060.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt20xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2131.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl301rf.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5005s.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/qm1d1c0042.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/qt1010.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/si2157.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18212.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18218.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18271.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-simple.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-types.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner_it913x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc4000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc5000.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/as102
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/as102/dvb-as102.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828/au0828.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/b2c2
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-v4l.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007-loader.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/s2250.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_benq.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_conex.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_dtcs033.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_etoms.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_finepix.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_t613.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_touptek.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vicam.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stk1160/stk1160.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300/poseidon.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dma-sg.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dvb.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-v4l2.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videodev.ko
#lib/modules/KVER-ipfire/kernel/drivers/memstick
#lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptsas.ko
#lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptscsih.ko
#lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_block.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_bus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_config.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_proc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_scsi.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/cs5535-mfd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/axp20x-i2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/axp20x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/bcm590xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9062-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9063.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9150-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/dln2.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-core.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-ctrlbank.ko
#lib/modules/KVER-ipfire/kernel/drivers/mfd/lpc_ich.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc
#lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl
#lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl/altera-stapl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085-i2c.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/cb710
#lib/modules/KVER-ipfire/kernel/drivers/misc/cb710/cb710.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/cs5535-mfgpt.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/ds1682.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/dummy-irq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/misc/echo
+#lib/modules/KVER-ipfire/kernel/drivers/misc/echo/echo.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom
#lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/at24.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/eeprom.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/ics932s401.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/lis3lv02d
#lib/modules/KVER-ipfire/kernel/drivers/misc/lis3lv02d/lis3lv02d.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic/card
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic/card/mic_card.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic/host
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic/host/mic_host.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/pch_phub.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/ti-st
#lib/modules/KVER-ipfire/kernel/drivers/misc/ti-st/st_drv.ko
#lib/modules/KVER-ipfire/kernel/drivers/misc/tifm_7xx1.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-acpi.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pltfm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav3.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/tifm_sd.ko
#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/ushc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net
#lib/modules/KVER-ipfire/kernel/drivers/net/bonding
#lib/modules/KVER-ipfire/kernel/drivers/net/bonding/bonding.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_mdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_mmap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_srab.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/bcm_sf2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/qca8k.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/dummy.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/pcnet_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec/starfire.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/agere
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/agere/et131x.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/alteon
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/alteon/acenic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/altera
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/altera/altera_tse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon/ena
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon/ena/ena.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/amd8111e.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/nmclan_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx/atl1.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx/atl2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/aurora
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/aurora/nb8800.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/b44.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2x
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnxt
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnxt/bnxt_en.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/cnic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/genet
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/genet/genet.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/tg3.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna/bna.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/at91_ether.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/macb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda/xgmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/liquidio
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/liquidio/liquidio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder/nicpf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder/nicvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder/thunder_bgx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder/thunder_xcv.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4/cxgb4.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4vf
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/libcxgb
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/libcxgb/libcxgb.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco/enic
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco/enic/enic.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/dl2k.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/sundance.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dnet.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ec_bhf.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex/benet
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex/benet/be2net.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp/hp100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus/ipg.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e100.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/fm10k
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/fm10k/fm10k.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40evf
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx5
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx5/core
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_switchx2.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel/ks8842.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/s2io.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/vxge
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome/nfp
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome/nfp/nfp_netvf.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/nvidia
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/nvidia/forcedeth.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qed
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qed/qed.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qede
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qede/qede.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qla3xxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlcnic
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlge
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlge/qlge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm/emac
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm/emac/qcom-emac.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rdc
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rdc/r6040.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/8139too.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/atp.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/r8169.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas/sh_eth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rocker
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rocker/rocker.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung/sxgbe
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung/sxgbe/samsung-sxgbe.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc/sfc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/silan
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/smsc/smsc9420.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sun
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sun/cassini.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/tehuti
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/tehuti/tehuti.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti/cpsw_ale.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti/tlan.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via/via-rhine.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/wiznet/w5300.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom
#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/fjes
+#lib/modules/KVER-ipfire/kernel/drivers/net/fjes/fjes.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/geneve.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/gtp.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/hyperv
#lib/modules/KVER-ipfire/kernel/drivers/net/hyperv/hv_netvsc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ifb.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/imq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ipvlan
+#lib/modules/KVER-ipfire/kernel/drivers/net/ipvlan/ipvlan.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/macsec.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/macvlan.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/macvtap.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/mdio.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/nlmon.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/aquantia.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm-phy-lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm7xxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm87xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/broadcom.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/cicada.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/davicom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/dp83848.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/dp83867.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/et1011c.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/icplus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/intel-xway.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/lxt.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/marvell.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-bcm-unimac.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-bitbang.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-cavium.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-octeon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-thunder.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/micrel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/microchip.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mscc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/national.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/qsemi.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/realtek.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/smsc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/ste10Xp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/teranetics.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/phy/vitesse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/xilinx_gmii2rgmii.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ppp
#lib/modules/KVER-ipfire/kernel/drivers/net/ppp/bsd_comp.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ppp/ppp_async.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ppp/pppoe.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ppp/pppox.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/ppp/pptp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/sb1000.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/slip
#lib/modules/KVER-ipfire/kernel/drivers/net/slip/slhc.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/sungem_phy.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_mbim.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_ncm.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_subset.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/ch9200.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/cx82310_eth.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/dm9601.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/gl620a.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/ipheth.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/kalmia.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/kaweth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/lan78xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/lg-vl600.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/mcs7830.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/usb/net1080.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/virtio_net.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3
#lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3/vmxnet3.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/vrf.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/vxlan.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/adm8211.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/admtek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/admtek/adm8211.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43/b43.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_wlan_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/libipw.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/usb8xxx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/at76c50x-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43/b43.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43legacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco/airo.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco/airo_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/dvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/dvm/iwldvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/mvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_plx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/spectrum_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54usb.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mac80211_hwsim.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwl8k.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwl8k.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek/mt7601u
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800mmio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl818x_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl8xxxu
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/rtl8192ee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be/rtl8723be.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800mmio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_91x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200/cw1200_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200/cw1200_wlan_sdio.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/wl3501_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1201.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1201.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1211rw
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/xen-netback
#lib/modules/KVER-ipfire/kernel/drivers/net/xen-netback/xen-netback.ko
#lib/modules/KVER-ipfire/kernel/drivers/net/xen-netfront.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/libnvdimm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/nd_blk.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/nd_btt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/nd_e820.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/nd_pmem.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host/nvme-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host/nvme.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/target
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/target/nvmet.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvmem
+#lib/modules/KVER-ipfire/kernel/drivers/nvmem/nvmem_core.ko
#lib/modules/KVER-ipfire/kernel/drivers/parport
#lib/modules/KVER-ipfire/kernel/drivers/parport/parport.ko
#lib/modules/KVER-ipfire/kernel/drivers/parport/parport_ax88796.ko
#lib/modules/KVER-ipfire/kernel/drivers/parport/parport_pc.ko
#lib/modules/KVER-ipfire/kernel/drivers/parport/parport_serial.ko
#lib/modules/KVER-ipfire/kernel/drivers/pci
+#lib/modules/KVER-ipfire/kernel/drivers/pci/host
+#lib/modules/KVER-ipfire/kernel/drivers/pci/host/pci-hyperv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pci/host/vmd.ko
#lib/modules/KVER-ipfire/kernel/drivers/pci/hotplug
#lib/modules/KVER-ipfire/kernel/drivers/pci/hotplug/acpiphp_ibm.ko
#lib/modules/KVER-ipfire/kernel/drivers/pci/pcie
#lib/modules/KVER-ipfire/kernel/drivers/pcmcia/pcmcia_rsrc.ko
#lib/modules/KVER-ipfire/kernel/drivers/pcmcia/pd6729.ko
#lib/modules/KVER-ipfire/kernel/drivers/pcmcia/yenta_socket.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel/pinctrl-broxton.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel/pinctrl-cherryview.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel/pinctrl-intel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel/pinctrl-sunrisepoint.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/pinctrl-amd.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/acer-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/classmate-laptop.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/compal-laptop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-laptop.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi-aio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/eeepc-laptop.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/eeepc-wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/fujitsu-laptop.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_bluetooth.ko
#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/wmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/power
-#lib/modules/KVER-ipfire/kernel/drivers/power/generic-adc-battery.ko
+#lib/modules/KVER-ipfire/kernel/drivers/power/supply
+#lib/modules/KVER-ipfire/kernel/drivers/power/supply/generic-adc-battery.ko
#lib/modules/KVER-ipfire/kernel/drivers/pps
#lib/modules/KVER-ipfire/kernel/drivers/pps/pps_core.ko
#lib/modules/KVER-ipfire/kernel/drivers/ptp
#lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp_pch.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ab-b5ze-s3.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-abx80x.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq32k.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq4802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-da9063.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1286.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1307.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1374.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-fm3130.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-hid-sensor-time.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12022.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12057.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl1208.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m41t80.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t35.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t59.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t86.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-max6900.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-moxart.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-msm6242.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf2127.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf85063.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8523.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8563.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8583.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rp5c01.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rs5c372.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rv3029c2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rv8803.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8010.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8025.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8581.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-s35390a.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-stk17ta8.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-v3020.ko
#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-x1205.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/aic94xx
#lib/modules/KVER-ipfire/kernel/drivers/scsi/aic94xx/aic94xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/am53c974.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/arcmsr
#lib/modules/KVER-ipfire/kernel/drivers/scsi/arcmsr/arcmsr.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/atp870u.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/eata.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r
#lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r/esas2r.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/esp_scsi.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe
#lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/fcoe.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/libfcoe.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_mm.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_sas.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas
#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/mvsas
#lib/modules/KVER-ipfire/kernel/drivers/scsi/qla4xxx/qla4xxx.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/qlogicfas408.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_tgt.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_fc.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_iscsi.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_sas.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_spi.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_srp.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ses.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/smartpqi
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/smartpqi/smartpqi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/snic
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/snic/snic.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/st.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/stex.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c8xx_2
#lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/tmscsim.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210-pltfrm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-dwc.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/virtio_scsi.ko
#lib/modules/KVER-ipfire/kernel/drivers/scsi/vmw_pvscsi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/wd719x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/xen-scsifront.ko
+#lib/modules/KVER-ipfire/kernel/drivers/spmi
+#lib/modules/KVER-ipfire/kernel/drivers/spmi/spmi.ko
#lib/modules/KVER-ipfire/kernel/drivers/ssb
#lib/modules/KVER-ipfire/kernel/drivers/ssb/ssb.ko
#lib/modules/KVER-ipfire/kernel/drivers/staging
-#lib/modules/KVER-ipfire/kernel/drivers/staging/echo
-#lib/modules/KVER-ipfire/kernel/drivers/staging/echo/echo.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/et131x
-#lib/modules/KVER-ipfire/kernel/drivers/staging/et131x/et131x.ko
#lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x
#lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmtty.ko
#lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmulte.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139
-#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139/rts5139.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8188eu
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8188eu/r8188eu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8192u
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8192u/r8192u_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8712
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8712/r8712u.ko
#lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss
#lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss/slicoss.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-host.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/vhci-hcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/thermal
-#lib/modules/KVER-ipfire/kernel/drivers/thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/acpi_thermal_rel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3400_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3402_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3406_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int340x_thermal_zone.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/processor_thermal_device.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_pch_thermal.ko
#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_powerclamp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_soc_dts_iosf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_soc_dts_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/thermal-generic-adc.ko
#lib/modules/KVER-ipfire/kernel/drivers/thermal/x86_pkg_temp_thermal.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty
#lib/modules/KVER-ipfire/kernel/drivers/tty/cyclades.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm/jsm.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/rp2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/sc16is7xx.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/sccnxp.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty/synclink.ko
#lib/modules/KVER-ipfire/kernel/drivers/tty/synclink_gt.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea
#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_msm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_zevio.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/class
#lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-acm.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-wdm.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/class/usblp.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/class/usbtmc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common/usb-otg-fsm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/core
+#lib/modules/KVER-ipfire/kernel/drivers/usb/core/ledtrig-usbport.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-keystone.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/host
#lib/modules/KVER-ipfire/kernel/drivers/usb/host/ssb-hcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci
#lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci/whci-hcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/host/xhci-plat-hcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/image
#lib/modules/KVER-ipfire/kernel/drivers/usb/image/mdc800.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/image/microtek.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usb3503.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usblcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbled.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbsevseg.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/uss720.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/yurex.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/mon
#lib/modules/KVER-ipfire/kernel/drivers/usb/mon/usbmon.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/phy
-#lib/modules/KVER-ipfire/kernel/drivers/usb/phy/phy-fsm-usb.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/aircable.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ark3116.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/usbserial.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/visor.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/zte_ev.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-alauda.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-cypress.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr09.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr55.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-usbat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/usbip-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/usbip-host.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/vhci-hcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore
#lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
#lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-wa.ko
#lib/modules/KVER-ipfire/kernel/drivers/vhost
#lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost.ko
#lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost_net.ko
-#lib/modules/KVER-ipfire/kernel/drivers/vhost/vringh.ko
#lib/modules/KVER-ipfire/kernel/drivers/video
-#lib/modules/KVER-ipfire/kernel/drivers/video/arcfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/arkfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty/atyfb.ko
#lib/modules/KVER-ipfire/kernel/drivers/video/backlight
#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/apple_bl.ko
#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/lcd.ko
#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/platform_lcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/fb_ddc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/hgafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/hyperv_fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/i740fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/kyro
-#lib/modules/KVER-ipfire/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/macmodes.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/neofb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/ocfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/output.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/pm2fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/pm3fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/riva
-#lib/modules/KVER-ipfire/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/s3fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/savage
-#lib/modules/KVER-ipfire/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/smscufx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sstfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/svgalib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/syscopyarea.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sysfillrect.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/udlfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/crvml.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/vmlfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vga16fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/pm8941-wled.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/arcfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/arkfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/aty
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/aty/atyfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/fb_ddc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/fb_sys_fops.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/svgalib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/syscopyarea.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/sysfillrect.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/sysimgblt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/cyber2000fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/gxt4500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/hgafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/hyperv_fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/i740fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/kyro
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/kyro/kyrofb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/macmodes.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_DAC1064.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_Ti3026.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_accel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_base.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_misc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/neofb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/ocfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/pm2fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/pm3fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/riva
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/riva/rivafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/s3fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/savage
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/savage/savagefb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/sm712fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/smscufx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/sstfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/tridentfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/udlfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion/crvml.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion/vmlfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vga16fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/via
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/via/viafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vt8623fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/xen-fbfront.ko
#lib/modules/KVER-ipfire/kernel/drivers/video/vgastate.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/via
-#lib/modules/KVER-ipfire/kernel/drivers/video/via/viafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vt8623fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/xen-fbfront.ko
#lib/modules/KVER-ipfire/kernel/drivers/virtio
#lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_balloon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_input.ko
#lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_mmio.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1
#lib/modules/KVER-ipfire/kernel/drivers/w1/masters
#lib/modules/KVER-ipfire/kernel/drivers/w1/masters/ds2490.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_bq27000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2406.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2408.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2413.ko
#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2423.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/advantechwdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim1535_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim7101_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/cadence_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/cpu5wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/dw_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/eurotechwdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/f71808e_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/geodewdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/hpwdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/i6300esb.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/iTCO_vendor_support.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/it8712f_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/it87_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/machzwd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/max63xx_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/mena21_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ni903x_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/nv_tco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/of_xilinx_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/pc87413_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_usb.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/retu_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc60xxwdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc8360.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc_epx_c3.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc_fitpc2_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sc1200wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sc520_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sch311x_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/smsc37b787_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/softdog.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sp5100_tco.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/via_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83627hf_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697hf_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697ug_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83877f_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83977f_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/wafer5823wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/wdat_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/wdt_pci.ko
#lib/modules/KVER-ipfire/kernel/drivers/watchdog/xen_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ziirave_wdt.ko
#lib/modules/KVER-ipfire/kernel/drivers/xen
#lib/modules/KVER-ipfire/kernel/drivers/xen/tmem.ko
#lib/modules/KVER-ipfire/kernel/drivers/xen/xen-acpi-processor.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs
#lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout
#lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/filelayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/filelayout/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/flexfilelayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/flexfilelayout/nfs_layout_flexfiles.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/nfs.ko
-#lib/modules/KVER-ipfire/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv2.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv3.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv4.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout
#lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout/objlayoutdriver.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs_common
+#lib/modules/KVER-ipfire/kernel/fs/nfs_common/grace.ko
#lib/modules/KVER-ipfire/kernel/fs/nfs_common/nfs_acl.ko
#lib/modules/KVER-ipfire/kernel/fs/nfsd
#lib/modules/KVER-ipfire/kernel/fs/nfsd/nfsd.ko
#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_filter.ko
#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_nat.ko
#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtables.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nf_log_bridge.ko
#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nf_tables_bridge.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nft_meta_bridge.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nft_reject_bridge.ko
#lib/modules/KVER-ipfire/kernel/net/core
-#lib/modules/KVER-ipfire/kernel/net/core/netprio_cgroup.ko
+#lib/modules/KVER-ipfire/kernel/net/core/devlink.ko
#lib/modules/KVER-ipfire/kernel/net/hsr
#lib/modules/KVER-ipfire/kernel/net/hsr/hsr.ko
-#lib/modules/KVER-ipfire/kernel/net/ieee802154
-#lib/modules/KVER-ipfire/kernel/net/ieee802154/6lowpan_iphc.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4
#lib/modules/KVER-ipfire/kernel/net/ipv4/ah4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/esp4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/fou.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/gre.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/inet_diag.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/ip_gre.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_nat.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_raw.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_security.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_dup_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_log_arp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_log_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_h323.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_masquerade_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_reject_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_arp.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_nat_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_route_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_dup_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_masq_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_redir_ipv4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_reject_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bbr.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bic.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_cdg.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_dctcp.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_diag.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_highspeed.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_htcp.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_hybla.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_illinois.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_lp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_nv.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_scalable.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_vegas.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_veno.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_yeah.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/tunnel4.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/udp_tunnel.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_beet.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_transport.ko
#lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_tunnel.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6
#lib/modules/KVER-ipfire/kernel/net/ipv6/ah6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/fou6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ila
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ila/ila.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_gre.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_tunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_udp_tunnel.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_vti.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/ipcomp6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/mip6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_nat.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_raw.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_dup_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_log_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_masquerade_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_reject_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_tables_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_nat_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_route_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_dup_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_masq_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_redir_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_reject_ipv6.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/sit.ko
#lib/modules/KVER-ipfire/kernel/net/ipv6/tunnel6.ko
#lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_ppp.ko
#lib/modules/KVER-ipfire/kernel/net/mac80211
#lib/modules/KVER-ipfire/kernel/net/mac80211/mac80211.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_gso.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_iptunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_router.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipmark.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_mac.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_net.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netnet.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_fo.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lc.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_ovf.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_rr.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_sed.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_sip.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_snmp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_dup_netdev.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_log_common.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_amanda.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_ftp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_dccp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_sctp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_redirect.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_sip.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_tftp.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_synproxy_core.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables_inet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables_netdev.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_acct.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cthelper.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cttimeout.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_compat.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_counter.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_ct.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_dup_netdev.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_exthdr.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_fwd_netdev.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_hash.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_limit.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_log.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_masq.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_meta.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_nat.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_numgen.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_queue.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_rbtree.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_quota.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_redir.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject_inet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_set_hash.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_set_rbtree.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_AUDIT.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CHECKSUM.ko
#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CLASSIFY.ko
#lib/modules/KVER-ipfire/kernel/net/netlink/netlink_diag.ko
#lib/modules/KVER-ipfire/kernel/net/openvswitch
#lib/modules/KVER-ipfire/kernel/net/openvswitch/openvswitch.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-geneve.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-gre.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-vxlan.ko
#lib/modules/KVER-ipfire/kernel/net/rfkill
#lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill-gpio.ko
#lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill.ko
#lib/modules/KVER-ipfire/kernel/net/sched
+#lib/modules/KVER-ipfire/kernel/net/sched/act_bpf.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_connmark.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_csum.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_gact.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_ife.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_ipt.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_mark.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_skbprio.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_skbtcindex.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_mirred.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_nat.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_pedit.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_police.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_simple.ko
#lib/modules/KVER-ipfire/kernel/net/sched/act_skbedit.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_skbmod.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_tunnel_key.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_vlan.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_basic.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_bpf.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_cgroup.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_flow.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_flower.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_fw.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_matchall.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_route.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_rsvp.ko
#lib/modules/KVER-ipfire/kernel/net/sched/cls_rsvp6.ko
#lib/modules/KVER-ipfire/kernel/net/sched/sch_teql.ko
#lib/modules/KVER-ipfire/kernel/net/sctp
#lib/modules/KVER-ipfire/kernel/net/sctp/sctp.ko
+#lib/modules/KVER-ipfire/kernel/net/sctp/sctp_diag.ko
#lib/modules/KVER-ipfire/kernel/net/sunrpc
#lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss
#lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
#lib/modules/KVER-ipfire/kernel/net/unix
#lib/modules/KVER-ipfire/kernel/net/unix/unix_diag.ko
#lib/modules/KVER-ipfire/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_virtio_transport.ko
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_virtio_transport_common.ko
#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko
#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vsock.ko
#lib/modules/KVER-ipfire/kernel/net/wireless
#lib/modules/KVER-ipfire/kernel/sound/drivers/vx
#lib/modules/KVER-ipfire/kernel/sound/drivers/vx/snd-vx-lib.ko
#lib/modules/KVER-ipfire/kernel/sound/firewire
+#lib/modules/KVER-ipfire/kernel/sound/firewire/bebob
+#lib/modules/KVER-ipfire/kernel/sound/firewire/bebob/snd-bebob.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/digi00x
+#lib/modules/KVER-ipfire/kernel/sound/firewire/digi00x/snd-firewire-digi00x.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/fireworks
+#lib/modules/KVER-ipfire/kernel/sound/firewire/fireworks/snd-fireworks.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/oxfw
+#lib/modules/KVER-ipfire/kernel/sound/firewire/oxfw/snd-oxfw.ko
#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-lib.ko
-#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-speakers.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/tascam
+#lib/modules/KVER-ipfire/kernel/sound/firewire/tascam/snd-firewire-tascam.ko
+#lib/modules/KVER-ipfire/kernel/sound/hda
+#lib/modules/KVER-ipfire/kernel/sound/hda/snd-hda-core.ko
#lib/modules/KVER-ipfire/kernel/sound/i2c
#lib/modules/KVER-ipfire/kernel/sound/i2c/other
#lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4113.ko
#lib/modules/KVER-ipfire/kernel/sound/isa
#lib/modules/KVER-ipfire/kernel/sound/isa/sb
#lib/modules/KVER-ipfire/kernel/sound/isa/sb/snd-sb-common.ko
-#lib/modules/KVER-ipfire/kernel/sound/isa/sb/snd-sb16-dsp.ko
#lib/modules/KVER-ipfire/kernel/sound/pci
#lib/modules/KVER-ipfire/kernel/sound/pci/ac97
#lib/modules/KVER-ipfire/kernel/sound/pci/ac97/snd-ac97-codec.ko
#lib/modules/KVER-ipfire/kernel/sound/pci/ca0106/snd-ca0106.ko
#lib/modules/KVER-ipfire/kernel/sound/pci/cs46xx
#lib/modules/KVER-ipfire/kernel/sound/pci/cs46xx/snd-cs46xx.ko
-#lib/modules/KVER-ipfire/kernel/sound/pci/cs5535audio
-#lib/modules/KVER-ipfire/kernel/sound/pci/cs5535audio/snd-cs5535audio.ko
#lib/modules/KVER-ipfire/kernel/sound/pci/ctxfi
#lib/modules/KVER-ipfire/kernel/sound/pci/ctxfi/snd-ctxfi.ko
#lib/modules/KVER-ipfire/kernel/sound/pci/echoaudio
#lib/modules/KVER-ipfire/kernel/sound/pci/snd-bt87x.ko
#lib/modules/KVER-ipfire/kernel/sound/pci/snd-cmipci.ko
#lib/modules/KVER-ipfire/kernel/sound/pci/snd-cs4281.ko
-#lib/modules/KVER-ipfire/kernel/sound/pci/snd-cs5530.ko
#lib/modules/KVER-ipfire/kernel/sound/pci/snd-ens1370.ko
#lib/modules/KVER-ipfire/kernel/sound/pci/snd-ens1371.ko
#lib/modules/KVER-ipfire/kernel/sound/pci/snd-es1938.ko
#lib/modules/KVER-ipfire/kernel/sound/usb
#lib/modules/KVER-ipfire/kernel/sound/usb/6fire
#lib/modules/KVER-ipfire/kernel/sound/usb/6fire/snd-usb-6fire.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/bcd2000
+#lib/modules/KVER-ipfire/kernel/sound/usb/bcd2000/snd-bcd2000.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/caiaq
#lib/modules/KVER-ipfire/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/hiface
#lib/modules/KVER-ipfire/kernel/sound/usb/hiface/snd-usb-hiface.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-line6.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-pod.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-podhd.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-toneport.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-variax.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/misc
#lib/modules/KVER-ipfire/kernel/sound/usb/misc/snd-ua101.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/snd-usb-audio.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/usx2y
#lib/modules/KVER-ipfire/kernel/sound/usb/usx2y/snd-usb-us122l.ko
#lib/modules/KVER-ipfire/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
+#lib/modules/KVER-ipfire/kernel/virt
+#lib/modules/KVER-ipfire/kernel/virt/lib
+#lib/modules/KVER-ipfire/kernel/virt/lib/irqbypass.ko
#lib/modules/KVER-ipfire/modules.alias
#lib/modules/KVER-ipfire/modules.alias.bin
#lib/modules/KVER-ipfire/modules.builtin
#usr/include/asm/ist.h
#usr/include/asm/kvm.h
#usr/include/asm/kvm_para.h
+#usr/include/asm/kvm_perf.h
#usr/include/asm/ldt.h
#usr/include/asm/mce.h
#usr/include/asm/mman.h
#usr/include/asm/vmx.h
#usr/include/asm/vsyscall.h
#usr/include/drm
+#usr/include/drm/amdgpu_drm.h
#usr/include/drm/drm.h
#usr/include/drm/drm_fourcc.h
#usr/include/drm/drm_mode.h
#usr/include/drm/savage_drm.h
#usr/include/drm/sis_drm.h
#usr/include/drm/tegra_drm.h
+#usr/include/drm/vc4_drm.h
#usr/include/drm/via_drm.h
+#usr/include/drm/virtgpu_drm.h
#usr/include/drm/vmwgfx_drm.h
#usr/include/linux
#usr/include/linux/a.out.h
#usr/include/linux/affs_hardblocks.h
#usr/include/linux/agpgart.h
#usr/include/linux/aio_abi.h
+#usr/include/linux/am437x-vpfe.h
+#usr/include/linux/android
+#usr/include/linux/android/binder.h
#usr/include/linux/apm_bios.h
#usr/include/linux/arcfb.h
#usr/include/linux/atalk.h
#usr/include/linux/binfmts.h
#usr/include/linux/blkpg.h
#usr/include/linux/blktrace_api.h
+#usr/include/linux/bpf.h
+#usr/include/linux/bpf_common.h
+#usr/include/linux/bpf_perf_event.h
#usr/include/linux/bpqether.h
#usr/include/linux/bsg.h
+#usr/include/linux/bt-bmc.h
#usr/include/linux/btrfs.h
#usr/include/linux/byteorder
#usr/include/linux/byteorder/big_endian.h
#usr/include/linux/cycx_cfm.h
#usr/include/linux/dcbnl.h
#usr/include/linux/dccp.h
+#usr/include/linux/devlink.h
#usr/include/linux/dlm.h
#usr/include/linux/dlm_device.h
#usr/include/linux/dlm_netlink.h
#usr/include/linux/firewire-cdev.h
#usr/include/linux/firewire-constants.h
#usr/include/linux/flat.h
+#usr/include/linux/fou.h
#usr/include/linux/fs.h
#usr/include/linux/fsl_hypervisor.h
#usr/include/linux/fuse.h
#usr/include/linux/genetlink.h
#usr/include/linux/gfs2_ondisk.h
#usr/include/linux/gigaset_dev.h
+#usr/include/linux/gpio.h
+#usr/include/linux/gsmmux.h
+#usr/include/linux/gtp.h
#usr/include/linux/hdlc
#usr/include/linux/hdlc.h
#usr/include/linux/hdlc/ioctl.h
#usr/include/linux/hidraw.h
#usr/include/linux/hpet.h
#usr/include/linux/hsi
+#usr/include/linux/hsi/cs-protocol.h
#usr/include/linux/hsi/hsi_char.h
+#usr/include/linux/hsr_netlink.h
#usr/include/linux/hw_breakpoint.h
+#usr/include/linux/hyperv.h
#usr/include/linux/hysdn_if.h
#usr/include/linux/i2c-dev.h
#usr/include/linux/i2c.h
#usr/include/linux/if_infiniband.h
#usr/include/linux/if_link.h
#usr/include/linux/if_ltalk.h
+#usr/include/linux/if_macsec.h
#usr/include/linux/if_packet.h
#usr/include/linux/if_phonet.h
#usr/include/linux/if_plip.h
#usr/include/linux/if_vlan.h
#usr/include/linux/if_x25.h
#usr/include/linux/igmp.h
+#usr/include/linux/iio
+#usr/include/linux/iio/events.h
+#usr/include/linux/iio/types.h
+#usr/include/linux/ila.h
#usr/include/linux/in.h
#usr/include/linux/in6.h
#usr/include/linux/in_route.h
#usr/include/linux/inet_diag.h
#usr/include/linux/inotify.h
+#usr/include/linux/input-event-codes.h
#usr/include/linux/input.h
#usr/include/linux/ioctl.h
#usr/include/linux/ip.h
#usr/include/linux/ixjuser.h
#usr/include/linux/jffs2.h
#usr/include/linux/joystick.h
+#usr/include/linux/kcmp.h
#usr/include/linux/kd.h
#usr/include/linux/kdev_t.h
#usr/include/linux/kernel-page-flags.h
#usr/include/linux/l2tp.h
#usr/include/linux/libc-compat.h
#usr/include/linux/limits.h
+#usr/include/linux/lirc.h
#usr/include/linux/llc.h
#usr/include/linux/loop.h
#usr/include/linux/lp.h
+#usr/include/linux/lwtunnel.h
#usr/include/linux/magic.h
#usr/include/linux/major.h
#usr/include/linux/map_to_7segment.h
#usr/include/linux/matroxfb.h
#usr/include/linux/mdio.h
+#usr/include/linux/media-bus-format.h
#usr/include/linux/media.h
#usr/include/linux/mei.h
+#usr/include/linux/membarrier.h
+#usr/include/linux/memfd.h
#usr/include/linux/mempolicy.h
#usr/include/linux/meye.h
#usr/include/linux/mic_common.h
#usr/include/linux/mmc
#usr/include/linux/mmc/ioctl.h
#usr/include/linux/mmtimer.h
+#usr/include/linux/mpls.h
+#usr/include/linux/mpls_iptunnel.h
#usr/include/linux/mqueue.h
#usr/include/linux/mroute.h
#usr/include/linux/mroute6.h
#usr/include/linux/ncp_fs.h
#usr/include/linux/ncp_mount.h
#usr/include/linux/ncp_no.h
+#usr/include/linux/ndctl.h
#usr/include/linux/neighbour.h
#usr/include/linux/net.h
#usr/include/linux/net_dropmon.h
+#usr/include/linux/net_namespace.h
#usr/include/linux/net_tstamp.h
#usr/include/linux/netconf.h
#usr/include/linux/netdevice.h
#usr/include/linux/netfilter/nf_conntrack_sctp.h
#usr/include/linux/netfilter/nf_conntrack_tcp.h
#usr/include/linux/netfilter/nf_conntrack_tuple_common.h
+#usr/include/linux/netfilter/nf_log.h
#usr/include/linux/netfilter/nf_nat.h
#usr/include/linux/netfilter/nf_tables.h
#usr/include/linux/netfilter/nf_tables_compat.h
#usr/include/linux/netfilter/xt_NFQUEUE.h
#usr/include/linux/netfilter/xt_RATEEST.h
#usr/include/linux/netfilter/xt_SECMARK.h
+#usr/include/linux/netfilter/xt_SYNPROXY.h
#usr/include/linux/netfilter/xt_TCPMSS.h
#usr/include/linux/netfilter/xt_TCPOPTSTRIP.h
#usr/include/linux/netfilter/xt_TEE.h
#usr/include/linux/netfilter/xt_iprange.h
#usr/include/linux/netfilter/xt_ipvs.h
#usr/include/linux/netfilter/xt_l2tp.h
-#usr/include/linux/netfilter/xt_layer7.h
#usr/include/linux/netfilter/xt_length.h
#usr/include/linux/netfilter/xt_limit.h
#usr/include/linux/netfilter/xt_mac.h
#usr/include/linux/netfilter_bridge/ebt_pkttype.h
#usr/include/linux/netfilter_bridge/ebt_redirect.h
#usr/include/linux/netfilter_bridge/ebt_stp.h
-#usr/include/linux/netfilter_bridge/ebt_ulog.h
#usr/include/linux/netfilter_bridge/ebt_vlan.h
#usr/include/linux/netfilter_bridge/ebtables.h
#usr/include/linux/netfilter_decnet.h
#usr/include/linux/netfilter_ipv4/ipt_LOG.h
#usr/include/linux/netfilter_ipv4/ipt_REJECT.h
#usr/include/linux/netfilter_ipv4/ipt_TTL.h
-#usr/include/linux/netfilter_ipv4/ipt_ULOG.h
#usr/include/linux/netfilter_ipv4/ipt_ah.h
#usr/include/linux/netfilter_ipv4/ipt_ecn.h
#usr/include/linux/netfilter_ipv4/ipt_ttl.h
#usr/include/linux/nfsd/stats.h
#usr/include/linux/nl80211.h
#usr/include/linux/nubus.h
-#usr/include/linux/nvme.h
+#usr/include/linux/nvme_ioctl.h
#usr/include/linux/nvram.h
#usr/include/linux/omap3isp.h
#usr/include/linux/omapfb.h
#usr/include/linux/pktcdvd.h
#usr/include/linux/pmu.h
#usr/include/linux/poll.h
+#usr/include/linux/posix_acl.h
+#usr/include/linux/posix_acl_xattr.h
#usr/include/linux/posix_types.h
#usr/include/linux/ppdev.h
#usr/include/linux/ppp-comp.h
#usr/include/linux/ppp_defs.h
#usr/include/linux/pps.h
#usr/include/linux/prctl.h
+#usr/include/linux/psci.h
#usr/include/linux/ptp_clock.h
#usr/include/linux/ptrace.h
#usr/include/linux/qnx4_fs.h
#usr/include/linux/reiserfs_xattr.h
#usr/include/linux/resource.h
#usr/include/linux/rfkill.h
+#usr/include/linux/rio_cm_cdev.h
+#usr/include/linux/rio_mport_cdev.h
#usr/include/linux/romfs_fs.h
#usr/include/linux/rose.h
#usr/include/linux/route.h
#usr/include/linux/rtnetlink.h
#usr/include/linux/scc.h
#usr/include/linux/sched.h
+#usr/include/linux/scif_ioctl.h
#usr/include/linux/screen_info.h
#usr/include/linux/sctp.h
#usr/include/linux/sdla.h
#usr/include/linux/shm.h
#usr/include/linux/signal.h
#usr/include/linux/signalfd.h
+#usr/include/linux/smiapp.h
#usr/include/linux/snmp.h
#usr/include/linux/sock_diag.h
#usr/include/linux/socket.h
#usr/include/linux/sockios.h
-#usr/include/linux/som.h
#usr/include/linux/sonet.h
#usr/include/linux/sonypi.h
#usr/include/linux/sound.h
#usr/include/linux/sunrpc/debug.h
#usr/include/linux/suspend_ioctls.h
#usr/include/linux/swab.h
+#usr/include/linux/sync_file.h
#usr/include/linux/synclink.h
#usr/include/linux/sysctl.h
#usr/include/linux/sysinfo.h
+#usr/include/linux/target_core_user.h
#usr/include/linux/taskstats.h
#usr/include/linux/tc_act
+#usr/include/linux/tc_act/tc_bpf.h
+#usr/include/linux/tc_act/tc_connmark.h
#usr/include/linux/tc_act/tc_csum.h
#usr/include/linux/tc_act/tc_defact.h
#usr/include/linux/tc_act/tc_gact.h
+#usr/include/linux/tc_act/tc_ife.h
#usr/include/linux/tc_act/tc_ipt.h
#usr/include/linux/tc_act/tc_mirred.h
#usr/include/linux/tc_act/tc_nat.h
#usr/include/linux/tc_act/tc_pedit.h
#usr/include/linux/tc_act/tc_skbedit.h
+#usr/include/linux/tc_act/tc_skbmod.h
+#usr/include/linux/tc_act/tc_tunnel_key.h
+#usr/include/linux/tc_act/tc_vlan.h
#usr/include/linux/tc_ematch
#usr/include/linux/tc_ematch/tc_em_cmp.h
#usr/include/linux/tc_ematch/tc_em_meta.h
#usr/include/linux/tcp_metrics.h
#usr/include/linux/telephony.h
#usr/include/linux/termios.h
+#usr/include/linux/thermal.h
#usr/include/linux/time.h
#usr/include/linux/times.h
#usr/include/linux/timex.h
#usr/include/linux/tiocl.h
#usr/include/linux/tipc.h
#usr/include/linux/tipc_config.h
+#usr/include/linux/tipc_netlink.h
#usr/include/linux/toshiba.h
#usr/include/linux/tty.h
#usr/include/linux/tty_flags.h
#usr/include/linux/usb/tmc.h
#usr/include/linux/usb/video.h
#usr/include/linux/usbdevice_fs.h
+#usr/include/linux/usbip.h
+#usr/include/linux/userfaultfd.h
#usr/include/linux/utime.h
#usr/include/linux/utsname.h
#usr/include/linux/uuid.h
#usr/include/linux/virtio_blk.h
#usr/include/linux/virtio_config.h
#usr/include/linux/virtio_console.h
+#usr/include/linux/virtio_gpu.h
#usr/include/linux/virtio_ids.h
+#usr/include/linux/virtio_input.h
#usr/include/linux/virtio_net.h
#usr/include/linux/virtio_pci.h
#usr/include/linux/virtio_ring.h
#usr/include/linux/virtio_rng.h
+#usr/include/linux/virtio_scsi.h
+#usr/include/linux/virtio_types.h
+#usr/include/linux/virtio_vsock.h
+#usr/include/linux/vm_sockets.h
#usr/include/linux/vt.h
+#usr/include/linux/vtpm_proxy.h
#usr/include/linux/wait.h
#usr/include/linux/wanrouter.h
#usr/include/linux/watchdog.h
#usr/include/linux/x25.h
#usr/include/linux/xattr.h
#usr/include/linux/xfrm.h
+#usr/include/linux/xilinx-v4l2-controls.h
#usr/include/linux/zorro.h
#usr/include/linux/zorro_ids.h
+#usr/include/misc
+#usr/include/misc/cxl.h
#usr/include/mtd
#usr/include/mtd/inftl-user.h
#usr/include/mtd/mtd-abi.h
#usr/include/mtd/nftl-user.h
#usr/include/mtd/ubi-user.h
#usr/include/rdma
+#usr/include/rdma/cxgb3-abi.h
+#usr/include/rdma/cxgb4-abi.h
+#usr/include/rdma/hfi
+#usr/include/rdma/hfi/hfi1_user.h
#usr/include/rdma/ib_user_cm.h
#usr/include/rdma/ib_user_mad.h
#usr/include/rdma/ib_user_sa.h
#usr/include/rdma/ib_user_verbs.h
+#usr/include/rdma/mlx4-abi.h
+#usr/include/rdma/mlx5-abi.h
+#usr/include/rdma/mthca-abi.h
+#usr/include/rdma/nes-abi.h
+#usr/include/rdma/ocrdma-abi.h
#usr/include/rdma/rdma_netlink.h
#usr/include/rdma/rdma_user_cm.h
+#usr/include/rdma/rdma_user_rxe.h
#usr/include/scsi
+#usr/include/scsi/cxlflash_ioctl.h
#usr/include/scsi/fc
#usr/include/scsi/fc/fc_els.h
#usr/include/scsi/fc/fc_fs.h
#usr/include/scsi/scsi_netlink_fc.h
#usr/include/sound
#usr/include/sound/asequencer.h
+#usr/include/sound/asoc.h
#usr/include/sound/asound.h
#usr/include/sound/asound_fm.h
#usr/include/sound/compress_offload.h
#usr/include/sound/hdspm.h
#usr/include/sound/sb16_csp.h
#usr/include/sound/sfnt_info.h
+#usr/include/sound/snd_sst_tokens.h
+#usr/include/sound/tlv.h
+#usr/include/sound/usb_stream.h
#usr/include/uapi
#usr/include/video
#usr/include/video/edid.h
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/crc32-pclmul.ko
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/glue_helper.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/salsa20-i586.ko
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/serpent-sse2-i586.ko
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/twofish-i586.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/events
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/events/amd
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/events/amd/power.ko
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu/microcode
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu/microcode/microcode.ko
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/iosf_mbi.ko
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/test_nx.ko
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm/kvm-amd.ko
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/platform/iris
#lib/modules/KVER-ipfire-pae/kernel/arch/x86/platform/iris/iris.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto
+#lib/modules/KVER-ipfire-pae/kernel/crypto/842.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/algif_aead.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/algif_rng.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/ansi_cprng.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/anubis.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/arc4.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/public_key.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/rsa.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/x509_key_parser.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx
#lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_memcpy.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_pq.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_raid6_recov.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_tx.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_xor.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/raid6test.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/authenc.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/authencesn.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/blowfish_common.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/cast6_generic.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/cast_common.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/ccm.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/chacha20_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/chacha20poly1305.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/cmac.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/crypto_null.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/cts.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/deflate.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/des_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/dh_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/ecdh_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/echainiv.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/fcrypt.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/gcm.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/ghash-generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/keywrap.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/khazad.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/lz4.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/lz4hc.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/lzo.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/mcryptd.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/md4.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/michael_mic.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/pcbc.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/pcrypt.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/poly1305_generic.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/rmd128.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/rmd160.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/rmd256.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/rmd320.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/rsa_generic.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/salsa20_generic.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/seed.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/serpent_generic.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/sha1_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/sha3_generic.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/sha512_generic.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/tcrypt.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/tea.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/wp512.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/xcbc.ko
#lib/modules/KVER-ipfire-pae/kernel/crypto/xor.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/zlib.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers
#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_configfs.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_extlog.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_ipmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_pad.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/custom_method.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/dptf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/dptf/dptf_power.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/ec_sys.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/nfit
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/nfit/nfit.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/sbs.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/sbshc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/video.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/acard-ahci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/ahci_platform.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/ata_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/libahci_platform.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_acpi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_ali.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_amd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_arasan_cf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_artop.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_atiixp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_atp867x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_triflex.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_via.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pdc_adma.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_highbank.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_dwc_460ex.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_inic162x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_mv.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_nv.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_promise.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_qstor.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_rcar.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_sil.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_sil24.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_sis.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/block/floppy.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/block/mtip32xx
#lib/modules/KVER-ipfire-pae/kernel/drivers/block/mtip32xx/mtip32xx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/block/nvme.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/block/rsxx
#lib/modules/KVER-ipfire-pae/kernel/drivers/block/rsxx/rsxx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/block/sx8.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bfusb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bluecard_cs.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bpa10x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btbcm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btintel.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btmrvl.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btmrvl_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btqca.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btrtl.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btsdio.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btuart_cs.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btusb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hangcheck-timer.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/amd-rng.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/atmel-rng.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/exynos-rng.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/geode-rng.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/intel-rng.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/timeriomem-rng.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/via-rng.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/virtio-rng.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/i8k.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_devintf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_msghandler.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_poweroff.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_si.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_ssif.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_watchdog.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/lp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/char/mwave
#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq-nforce2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_conservative.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_ondemand.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_powersave.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_stats.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/gx-suspmod.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/longhaul.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/longrun.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/ccp
#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/ccp/ccp-crypto.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/ccp/ccp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/chelsio
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/chelsio/chcr.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/geode-aes.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/padlock-aes.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/padlock-sha.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dca
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dca/dca.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c3xxx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c3xxx/qat_c3xxx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c3xxxvf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c3xxxvf/qat_c3xxxvf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c62x
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c62x/qat_c62x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c62xvf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c62xvf/qat_c62xvf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_common
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_common/intel_qat.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_dh895xcc
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_dh895xcc/qat_dh895xcc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_dh895xccvf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_dh895xccvf/qat_dh895xccvf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_passive.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_performance.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_powersave.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_simpleondemand.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_userspace.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/dma
#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw
#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw/dw_dmac.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw/dw_dmac_core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw/dw_dmac_pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/ioat
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/ioat/ioatdma.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/idma64.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/pch_dma.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/timb_dma.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/qcom
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/qcom/hdma.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/qcom/hdma_mgmt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/edac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/amd64_edac_mod.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/e752x_edac.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/edac_core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/edac_mce_amd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i7300_edac.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i7core_edac.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i82975x_edac.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/mce_amd_inj.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/ie31200_edac.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/x38_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/extcon
+#lib/modules/KVER-ipfire-pae/kernel/drivers/extcon/extcon-core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/firewire
#lib/modules/KVER-ipfire-pae/kernel/drivers/firewire/firewire-core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/firewire/firewire-ohci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/dcdbas.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/dell_rbu.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/edd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/efi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/efi/efibc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/iscsi_ibft.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-f7188x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-ich.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-sch.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-sch311x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-ts5500.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-viperboard.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/amd
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/amd/amdgpu
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ast
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ast/ast.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bochs
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bochs/bochs-drm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bridge
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bridge/analogix-anx78xx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/cirrus
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/cirrus/cirrus.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm_kms_helper.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm_usb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/gma500
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c/ch7006.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c/sil164.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c/tda998x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i810
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i810/i810.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i915
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i915/i915.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mga
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mga/mga.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mgag200
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mgag200/mgag200.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/nouveau
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/nouveau/nouveau.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/qxl
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/qxl/qxl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/r128
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/r128/r128.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/radeon
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/radeon/radeon.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/savage
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/sis
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/sis/sis.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/tdfx
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/tdfx/tdfx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ttm
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ttm/ttm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/udl
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/udl/udl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/via
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/via/via.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vgem
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vgem/vgem.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/virtio
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/virtio/virtio-gpu.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vmwgfx
#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-alps.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-asus.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-aureal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-cmedia.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-corsair.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-cp2112.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gembird.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gfrm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gt683r.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gyration.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-keytouch.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-lcpower.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-lenovo-tpkbd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-led.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-lenovo.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-logitech-dj.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-logitech-hidpp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-ortek.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-penmount.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-petalynx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-picolcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-plantronics.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-rmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-arvo.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-common.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-isku.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-sensor-hub.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-speedlink.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-thingm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-tivo.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-topseed.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-twinhan.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/acpi_power_meter.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ad7414.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ad7418.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adc128d818.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adm1021.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adm1025.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adm1026.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/asus_atk0110.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/atxp1.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/coretemp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/dell-smm-hwmon.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/dme1737.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ds1621.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ds620.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/f75375s.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/fam15h_power.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/fschmd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ftsteutates.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/g760a.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/g762.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/gl518sm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/gl520sm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/hih6130.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/htu21.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/hwmon-vid.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/i5500_temp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/i5k_amb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ibmaem.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ibmpex.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ina209.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ina2xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ina3221.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/it87.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/k10temp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/k8temp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm95234.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm95241.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm95245.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc2945.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc2990.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4151.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4215.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4222.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4245.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4260.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4261.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max16065.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max1619.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max1668.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max197.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max31790.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6639.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6642.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6650.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6697.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/nct6683.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/nct6775.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/nct7802.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/nct7904.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ntc_thermistor.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pc87360.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pc87427.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/adm1275.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/lm25066.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max16064.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max20751.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max34440.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max8688.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/pmbus.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/pmbus_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/tps40422.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/ucd9000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/ucd9200.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sch5627.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sch56xx-common.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sht15.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sht21.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sht3x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/shtc1.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sis5595.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smsc47b397.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smsc47m1.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smsc47m192.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tc74.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/thmc50.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tmp102.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tmp103.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tmp401.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tmp421.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/via-cputemp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-designware-core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-designware-platform.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-emev2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-i801.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-isch.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-ismt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-pca9541.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-pca954x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-pinctrl.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-reg.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/iio
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/buffer
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/buffer/industrialio-buffer-cb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/buffer/kfifo_buf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common
#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors
#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/industrialio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/kfifo_buf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/input-polldev.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/adc-keys.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/gpio_keys.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/gpio_keys_polled.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/lm8333.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/appletouch.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/bcm5974.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/cyapatp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/psmouse.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/sermouse.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/synaptics_i2c.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/dell-led.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/led-class-flash.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-bd2802.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-blinkm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-clevo-mail.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lm355x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lm3642.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp3944.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp3952.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5521.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5523.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5562.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp55xx-common.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp8501.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp8860.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lt3593.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-ot200.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca9532.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca955x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca963x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca9685.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-ss4200.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-tca6507.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-tlc591xx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-backlight.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-camera.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-timer.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-transient.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/lightnvm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/lightnvm/gennvm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/lightnvm/rrpc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/md
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/bcache
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/bcache/bcache.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-bio-prison.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-cleaner.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-smq.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-crypt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-log-userspace.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-log-writes.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-multipath.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-queue-length.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-raid.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/b2c2
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/btcx-risc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/cx2341x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/cypress_firmware.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/saa7146
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/a8293.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/af9013.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/as102_fe.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/atbm8830.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/au8522_common.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/bcm3510.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx22700.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx22702.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24110.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24113.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24116.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24117.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24120.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24123.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cxd2820r.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib0070.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib7000p.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib8000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drx39xyj
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drx39xyj/drx39xyj.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drxd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drxk.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ds3000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dvb-pll.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/gp8psk-fe.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6405.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6421.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6423.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/it913x-fe.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/itd1000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ix2505v.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/l64781.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lg2160.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgdt3306a.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgdt330x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lnbp21.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lnbp22.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/m88dc2800.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/m88ds3103.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/m88rs2000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mb86a16.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mn88472.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mn88473.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mt312.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mt352.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/nxt200x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/nxt6000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/or51132.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/or51211.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/rtl2830.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/rtl2832.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s5h1409.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s5h1411.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s5h1420.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/si2165.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/si2168.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/sp2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/sp8870.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/sp887x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stb0899.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stb6000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stb6100.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv090x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv6110.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tc90522.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10021.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10023.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10048.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/adv7170.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/adv7175.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/adv7180.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/bt819.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/bt856.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/bt866.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cs3308.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cs5345.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cs53l32a.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cx25840
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ks0127.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/m52790.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/mt9m111.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ov7640.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ov7670.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa6588.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa6752hs.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/imx074.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/ov9740.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/tw9910.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/sony-btf-mpx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tda9840.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tea6415c.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tea6420.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tvaudio.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tw2804.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tw9903.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tw9906.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/uda1342.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/upd64031a.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/upd64083.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/vp27smpx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/b2c2
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/bt878.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/bttv.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/dst.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/dst_ca.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx18
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx18/cx18-alsa.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx18/cx18.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ddbridge/ddbridge.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dm1105
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dt3155
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dt3155/dt3155.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv/ivtv.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pluto2/pluto2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt1
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt3
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt3/earth-pt3.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-go7007.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146/mxb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7164
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/smipcie
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/smipcie/smipcie.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/solo6x10
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/solo6x10/solo6x10.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget-av.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget-ci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw5864
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw5864/tw5864.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw68
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw68/tw68.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw686x
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw686x/tw686x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran/videocodec.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran/zr36016.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/sh_veu.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/rcar_vin.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_camera.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_scale_crop.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/timblogiw.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/vsp1
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/vsp1/vsp1.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ati_remote.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ene_ir.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/fintek-cir.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/igorplugusb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/iguanair.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-hix5hd2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-jvc-decoder.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-lirc-codec.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-nec-decoder.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-rc5-decoder.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-rc6-decoder.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-sharp-decoder.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-sony-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-xmp-decoder.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ite-cir.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-behold-columbus.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-behold.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-cec.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-delock-61959.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dtt200u.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-su3000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-technisat-ts35.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-slim-2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-twinhan1027.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-videomate-m1f.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-videomate-s350.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc0012.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc0013.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc2580.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/m88ts2022.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/it913x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/m88rs6000t.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/max2165.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mc44s803.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2060.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt20xx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2131.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mxl301rf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mxl5005s.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/qm1d1c0042.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/qt1010.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/si2157.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda18212.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda18218.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda18271.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner-simple.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner-types.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner_it913x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/xc4000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/xc5000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/as102
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/as102/dvb-as102.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/au0828
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/au0828/au0828.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/b2c2
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-v4l.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007/go7007-loader.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007/go7007-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007/go7007.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007/s2250.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gl860
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_benq.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_conex.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_dtcs033.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_etoms.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_finepix.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_t613.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_touptek.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_vicam.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stk1160/stk1160.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stkwebcam
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tlg2300
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tlg2300/poseidon.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-dma-sg.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-dvb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-v4l2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videodev.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/memstick
#lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion/mptsas.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion/mptscsih.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_block.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_bus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_config.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_proc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_scsi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/axp20x-i2c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/axp20x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/bcm590xx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/cs5535-mfd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/da9062-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/da9063.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/da9150-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/dln2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/exynos-lpass.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lm3533-core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lm3533-ctrlbank.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lpc_ich.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/altera-stapl
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/altera-stapl/altera-stapl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/bmp085-i2c.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/bmp085.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/cb710
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/cb710/cb710.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/cs5535-mfgpt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/ds1682.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/dummy-irq.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/echo
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/echo/echo.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom/at24.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom/eeprom.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/core/mmc_core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/cb710-mmc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/mtk-sd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-acpi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pltfm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pxav2.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pxav3.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/tifm_sd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/toshsd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/usdhi6rol0.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/ushc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/via-sdmmc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/vub300.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/bonding
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/bonding/bonding.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53/b53_common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53/b53_mdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53/b53_mmap.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53/b53_srab.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/bcm_sf2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/qca8k.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dummy.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/3com
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/wd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/adaptec
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/adaptec/starfire.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/agere
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/agere/et131x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/alteon
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/alteon/acenic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/altera
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/altera/altera_tse.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amazon
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amazon/ena
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amazon/ena/ena.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/amd8111e.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/lance.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/atlx
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/atlx/atl1.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/atlx/atl2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/aurora
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/aurora/nb8800.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/b44.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnx2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnx2x
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnxt
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnxt/bnxt_en.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/cnic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/genet
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/genet/genet.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/tg3.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/brocade
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/brocade/bna
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/brocade/bna/bna.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cadence
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cadence/at91_ether.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cadence/macb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/calxeda
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/calxeda/xgmac.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb4/cxgb4.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb4vf
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/libcxgb
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/libcxgb/libcxgb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cirrus
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cirrus/cs89x0.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cisco
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dlink/dl2k.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dlink/sundance.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dnet.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/ec_bhf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/emulex
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/emulex/benet
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/emulex/benet/be2net.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/hp
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/hp/hp100.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/icplus
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/icplus/ipg.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e100.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000e
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/fm10k
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/fm10k/fm10k.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40e
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40evf
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlx4
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_switchx2.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/micrel
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/micrel/ks8842.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/neterion/s2io.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/neterion/vxge
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/netronome
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/netronome/nfp
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/netronome/nfp/nfp_netvf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/nvidia
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/nvidia/forcedeth.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/oki-semi
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/oki-semi/pch_gbe
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/packetengines
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/packetengines/hamachi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/packetengines/yellowfin.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/netxen
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qed
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qed/qed.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qede
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qede/qede.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qla3xxx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qlcnic
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qlge
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qlge/qlge.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qualcomm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qualcomm/emac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qualcomm/emac/qcom-emac.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/rdc
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/rdc/r6040.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/8139too.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/atp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/r8169.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/renesas
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/renesas/sh_eth.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/rocker
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/rocker/rocker.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/samsung
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/samsung/sxgbe
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/samsung/sxgbe/samsung-sxgbe.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sfc
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sfc/sfc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/silan
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/smsc/smsc9420.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sun
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sun/cassini.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/tehuti
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/tehuti/tehuti.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/ti
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/ti/cpsw_ale.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/ti/tlan.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/via
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/via/via-rhine.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/wiznet/w5300.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/xircom
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/fjes
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/fjes/fjes.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/geneve.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/gtp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/hyperv
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/hyperv/hv_netvsc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ifb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/imq.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ipvlan
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ipvlan/ipvlan.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/macsec.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/macvlan.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/macvtap.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/mdio.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/nlmon.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/aquantia.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/bcm-phy-lib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/bcm7xxx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/bcm87xx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/broadcom.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/cicada.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/davicom.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/dp83848.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/dp83867.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/et1011c.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/icplus.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/intel-xway.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/lxt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/marvell.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/mdio-bcm-unimac.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/mdio-bitbang.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/micrel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/microchip.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/mscc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/national.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/qsemi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/realtek.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/smsc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/ste10Xp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/teranetics.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/vitesse.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/xilinx_gmii2rgmii.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ppp
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ppp/bsd_comp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ppp/ppp_async.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_mbim.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_ncm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_subset.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/ch9200.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cx82310_eth.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/dm9601.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/gl620a.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/ipheth.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/kalmia.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/kaweth.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/lan78xx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/lg-vl600.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/mcs7830.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/net1080.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/virtio_net.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/vmxnet3
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/vmxnet3/vmxnet3.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/vrf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/vxlan.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/adm8211.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/airo.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/airo_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/admtek
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/admtek/adm8211.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ar5523
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wil6210
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel_pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43/b43.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43legacy
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmfmac
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmsmac
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmutil
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cw1200
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cw1200/cw1200_core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cw1200/cw1200_wlan_sdio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/libipw.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/dvm
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/mvm
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/usb8xxx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_tf
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_uap
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_uap/uap8xxx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel/at76c50x-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel/atmel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel/atmel_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel/atmel_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/b43
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/b43/b43.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/b43legacy
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cisco
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cisco/airo.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cisco/airo_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/ipw2x00
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlegacy
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/dvm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/dvm/iwldvm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/mvm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap/hostap.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap/hostap_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap/hostap_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap/hostap_plx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/spectrum_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/p54
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/p54/p54common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/p54/p54pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/p54/p54usb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mac80211_hwsim.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwl8k.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54/p54common.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54/p54pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54/p54usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas/libertas.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas/libertas_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas_tf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwl8k.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mediatek
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mediatek/mt7601u
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2800mmio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl818x_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl8xxxu
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/rtl8192ee.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be/rtl8723be.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800mmio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8180
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8187
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192c
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192de
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192se
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl_usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rsi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rsi/rsi_91x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rsi/rsi_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rsi/rsi_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/st
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/st/cw1200
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/st/cw1200/cw1200_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/st/cw1200/cw1200_wlan_sdio.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl1251
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/wl3501_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zd1201.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zd1211rw
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zydas
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zydas/zd1201.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zydas/zd1211rw
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/xen-netback
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/xen-netback/xen-netback.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/net/xen-netfront.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/libnvdimm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/nd_blk.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/nd_btt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/nd_e820.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/nd_pmem.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/host
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/host/nvme-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/host/nvme.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/target
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/target/nvmet.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvmem
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvmem/nvmem_core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/parport
#lib/modules/KVER-ipfire-pae/kernel/drivers/parport/parport.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/parport/parport_ax88796.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/acer-wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/acerhdf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/alienware-wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/amilo-rfkill.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-laptop.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-nb-wmi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-wireless.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/classmate-laptop.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/compal-laptop.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-rbtn.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-smbios.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-smo8800.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-wmi-aio.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/eeepc-laptop.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/hp-wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/hp_accel.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/ideapad-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel-hid.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel-rst.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel-vbtn.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_ips.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_oaktrail.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_pmc_ipc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_punit_ipc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/msi-laptop.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/msi-wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/mxm-wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/tc1100-wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/thinkpad_acpi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/topstar-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba-wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba_acpi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba_bluetooth.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba_haps.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/wmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/power
-#lib/modules/KVER-ipfire-pae/kernel/drivers/power/generic-adc-battery.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/power/supply
+#lib/modules/KVER-ipfire-pae/kernel/drivers/power/supply/generic-adc-battery.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/pps
#lib/modules/KVER-ipfire-pae/kernel/drivers/pps/pps_core.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ptp
#lib/modules/KVER-ipfire-pae/kernel/drivers/ptp/ptp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ptp/ptp_pch.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ab-b5ze-s3.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-abx80x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-bq32k.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-bq4802.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-da9063.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds1286.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds1307.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds1374.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-fm3130.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-hid-sensor-time.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl12022.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl12057.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl1208.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m41t80.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m48t35.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m48t59.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-max6900.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-moxart.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-msm6242.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf2127.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf85063.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8523.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8563.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8583.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rp5c01.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rs5c372.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rv3029c2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rv8803.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rx8010.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rx8025.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rx8581.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-stk17ta8.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/aic94xx
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/aic94xx/aic94xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/am53c974.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/arcmsr
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/arcmsr/arcmsr.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/atp870u.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/dmx3191d.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/dpt_i2o.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/dtc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/eata.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/esas2r
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/esas2r/esas2r.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/esp_scsi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe/fcoe.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe/libfcoe.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/hptiop.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/hv_storvsc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/imm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/in2000.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/initio.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ipr.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ips.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/megaraid/megaraid_mm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/megaraid/megaraid_sas.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt2sas
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt3sas
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mvsas
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osd/libosd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osd/osd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osst.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pas16.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia/fdomain_cs.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/qlogicfas.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/qlogicfas408.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_tgt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_fc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_iscsi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_sas.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_srp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ses.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sim710.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/smartpqi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/smartpqi/smartpqi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/snic
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/snic/snic.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/st.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/stex.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sym53c416.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sym53c8xx_2
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/t128.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/tmscsim.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/u14-34f.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/tc-dwc-g210-pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/tc-dwc-g210-pltfrm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/tc-dwc-g210.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd-dwc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd-pci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ultrastor.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/virtio_scsi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/vmw_pvscsi.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/wd7000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/wd719x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/xen-scsifront.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/spmi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/spmi/spmi.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/ssb
#lib/modules/KVER-ipfire-pae/kernel/drivers/ssb/ssb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/staging
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/echo
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/echo/echo.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/et131x
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/et131x/et131x.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/gdm724x
#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/gdm724x/gdmtty.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/gdm724x/gdmulte.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rts5139
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rts5139/rts5139.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8188eu
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8188eu/r8188eu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8192u
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8192u/r8192u_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8712
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8712/r8712u.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/slicoss
#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/slicoss/slicoss.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/usbip-core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/usbip-host.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/vhci-hcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/sm750fb
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/sm750fb/sm750fb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal
-#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/acpi_thermal_rel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int3400_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int3402_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int3406_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int340x_thermal_zone.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/processor_thermal_device.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_pch_thermal.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_powerclamp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_quark_dts_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_soc_dts_iosf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_soc_dts_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/thermal-generic-adc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/x86_pkg_temp_thermal.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/tty
#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/cyclades.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial
#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250
#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250/8250_dw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250/8250_moxa.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/arc_uart.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/fsl_lpuart.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/jsm
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_msm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_usb2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_zevio.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/cdc-acm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/cdc-wdm.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/usblp.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/usbtmc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/common
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/common/ulpi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/common/usb-otg-fsm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/core
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/core/ledtrig-usbport.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-keystone.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-pci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/bcma-hcd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/hwa-hc.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/isp1362-hcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/ohci-pci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/sl811-hcd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/ssb-hcd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/whci
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/whci/whci-hcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/xhci-plat-hcd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image/mdc800.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image/microtek.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/adutux.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/chaoskey.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/ehset.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/emi26.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/emi62.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/sisusbvga
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usb3503.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usb4604.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usblcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usbled.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usbsevseg.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/uss720.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/yurex.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/mon
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/mon/usbmon.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/phy
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/phy/phy-fsm-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/phy/phy-tahvo.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/aircable.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ark3116.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/usbserial.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/visor.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/zte_ev.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-alauda.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-cypress.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-sddr09.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-sddr55.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-usbat.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/usbip
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/usbip/usbip-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/usbip/usbip-host.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/usbip/vhci-hcd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/wusbcore
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/wusbcore/wusb-wa.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/vhost
#lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vhost.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vhost_net.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vringh.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/video
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/arcfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/arkfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/aty/atyfb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight
#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/apple_bl.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/lcd.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/platform_lcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/pm8941-wled.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/video/console
#lib/modules/KVER-ipfire-pae/kernel/drivers/video/console/mdacon.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fb_ddc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode/gx1fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode/gxfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode/lxfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/hgafb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/hyperv_fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/i740fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/kyro
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/macmodes.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/neofb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/ocfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/output.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/pm2fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/pm3fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/riva
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/s3fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/savage
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/smscufx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/sstfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/svgalib.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/syscopyarea.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/sysfillrect.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/udlfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vermilion
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vermilion/crvml.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vermilion/vmlfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vga16fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/arcfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/arkfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/aty
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/aty/atyfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/fb_ddc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/fb_sys_fops.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/svgalib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/syscopyarea.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/sysfillrect.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/sysimgblt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/cyber2000fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/geode
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/geode/gx1fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/geode/gxfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/geode/lxfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/gxt4500.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/hgafb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/hyperv_fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/i740fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/kyro
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/kyro/kyrofb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/macmodes.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_DAC1064.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_Ti3026.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_accel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_base.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_misc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/neofb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/ocfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/pm2fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/pm3fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/riva
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/riva/rivafb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/s3fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/savage
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/savage/savagefb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/sm712fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/smscufx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/sstfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/tridentfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/udlfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vermilion
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vermilion/crvml.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vermilion/vmlfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vga16fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/via
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/via/viafb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vt8623fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/xen-fbfront.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vgastate.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/via
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/via/viafb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vt8623fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/xen-fbfront.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/virtio
#lib/modules/KVER-ipfire-pae/kernel/drivers/virtio/virtio_balloon.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/virtio/virtio_input.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/virtio/virtio_mmio.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/w1
#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters
#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters/ds2490.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves
#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_bq27000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2406.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2408.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2413.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2423.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/advantechwdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/alim1535_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/alim7101_wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/cadence_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/cpu5wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/dw_wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/ebc-c384_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/eurotechwdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/f71808e_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/geodewdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/it8712f_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/it87_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/machzwd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/max63xx_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/mena21_wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/ni903x_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/nv_tco.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/of_xilinx_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pc87413_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pcwd_pci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pcwd_usb.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sbc_epx_c3.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sbc_fitpc2_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sc1200wdt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sc520_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sch311x_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/smsc37b787_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/softdog.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sp5100_tco.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/via_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83627hf_wdt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83697hf_wdt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83697ug_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83877f_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83977f_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/wafer5823wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/wdat_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/wdt_pci.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/xen_wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/ziirave_wdt.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/xen
#lib/modules/KVER-ipfire-pae/kernel/drivers/xen/tmem.ko
#lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xen-acpi-processor.ko
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/blocklayout
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/filelayout
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/filelayout/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/flexfilelayout
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/flexfilelayout/nfs_layout_flexfiles.ko
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfs.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfsv2.ko
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfsv3.ko
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfsv4.ko
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/objlayout
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/objlayout/objlayoutdriver.ko
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs_common
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs_common/grace.ko
#lib/modules/KVER-ipfire-pae/kernel/fs/nfs_common/nfs_acl.ko
#lib/modules/KVER-ipfire-pae/kernel/fs/nfsd
#lib/modules/KVER-ipfire-pae/kernel/fs/nfsd/nfsd.ko
#lib/modules/KVER-ipfire-pae/kernel/kernel/trace
#lib/modules/KVER-ipfire-pae/kernel/kernel/trace/ring_buffer_benchmark.ko
#lib/modules/KVER-ipfire-pae/kernel/lib
+#lib/modules/KVER-ipfire-pae/kernel/lib/842
+#lib/modules/KVER-ipfire-pae/kernel/lib/842/842_compress.ko
+#lib/modules/KVER-ipfire-pae/kernel/lib/842/842_decompress.ko
#lib/modules/KVER-ipfire-pae/kernel/lib/asn1_decoder.ko
#lib/modules/KVER-ipfire-pae/kernel/lib/cordic.ko
#lib/modules/KVER-ipfire-pae/kernel/lib/crc-itu-t.ko
#lib/modules/KVER-ipfire-pae/kernel/lib/oid_registry.ko
#lib/modules/KVER-ipfire-pae/kernel/lib/raid6
#lib/modules/KVER-ipfire-pae/kernel/lib/raid6/raid6_pq.ko
-#lib/modules/KVER-ipfire-pae/kernel/lib/rbtree_test.ko
#lib/modules/KVER-ipfire-pae/kernel/lib/ts_bm.ko
#lib/modules/KVER-ipfire-pae/kernel/lib/ts_fsm.ko
#lib/modules/KVER-ipfire-pae/kernel/lib/ts_kmp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtable_filter.ko
#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtable_nat.ko
#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtables.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/nf_log_bridge.ko
#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/nf_tables_bridge.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/nft_meta_bridge.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/nft_reject_bridge.ko
#lib/modules/KVER-ipfire-pae/kernel/net/core
-#lib/modules/KVER-ipfire-pae/kernel/net/core/netprio_cgroup.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/core/devlink.ko
#lib/modules/KVER-ipfire-pae/kernel/net/hsr
#lib/modules/KVER-ipfire-pae/kernel/net/hsr/hsr.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154
-#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154/6lowpan_iphc.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ah4.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/esp4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/fou.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/gre.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/inet_diag.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ip_gre.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_REJECT.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_SYNPROXY.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_filter.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_mangle.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_nat.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_raw.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_security.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_dup_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_log_arp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_log_ipv4.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_h323.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_masquerade_ipv4.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_reject_ipv4.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_tables_arp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_tables_ipv4.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_chain_nat_ipv4.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_chain_route_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_dup_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_masq_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_redir_ipv4.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_reject_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_bbr.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_bic.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_cdg.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_dctcp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_diag.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_highspeed.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_htcp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_hybla.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_illinois.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_lp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_nv.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_scalable.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_vegas.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_veno.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_yeah.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tunnel4.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/udp_tunnel.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_mode_beet.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_mode_transport.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_mode_tunnel.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ah6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/fou6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ila
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ila/ila.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_gre.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_tunnel.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_udp_tunnel.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_vti.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ipcomp6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/mip6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_nat.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_raw.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_dup_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_log_ipv6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_nat_masquerade_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_reject_ipv6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_tables_ipv6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_chain_nat_ipv6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_chain_route_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_dup_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_masq_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_redir_ipv6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_reject_ipv6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/sit.ko
#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/tunnel6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/l2tp/l2tp_ppp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/mac80211
#lib/modules/KVER-ipfire-pae/kernel/net/mac80211/mac80211.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/mpls
+#lib/modules/KVER-ipfire-pae/kernel/net/mpls/mpls_gso.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/mpls/mpls_iptunnel.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/mpls/mpls_router.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipmark.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_mac.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_net.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netnet.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_fo.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_lc.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_ovf.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_rr.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_sed.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_sip.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_snmp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_dup_netdev.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_log_common.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_amanda.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_ftp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_dccp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_sctp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_redirect.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_sip.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_tftp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_synproxy_core.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_tables_inet.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_tables_netdev.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_acct.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_cthelper.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_cttimeout.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_compat.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_counter.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_ct.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_dup_netdev.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_exthdr.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_fwd_netdev.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_hash.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_limit.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_log.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_masq.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_meta.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_nat.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_numgen.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_queue.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_rbtree.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_quota.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_redir.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_reject.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_reject_inet.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_set_hash.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_set_rbtree.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_AUDIT.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CHECKSUM.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CLASSIFY.ko
#lib/modules/KVER-ipfire-pae/kernel/net/netlink/netlink_diag.ko
#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch
#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch/openvswitch.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch/vport-geneve.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch/vport-gre.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch/vport-vxlan.ko
#lib/modules/KVER-ipfire-pae/kernel/net/rfkill
#lib/modules/KVER-ipfire-pae/kernel/net/rfkill/rfkill-gpio.ko
#lib/modules/KVER-ipfire-pae/kernel/net/rfkill/rfkill.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_bpf.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_connmark.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_csum.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_gact.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_ife.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_ipt.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_meta_mark.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_meta_skbprio.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_meta_skbtcindex.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_mirred.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_nat.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_pedit.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_police.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_simple.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_skbedit.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_skbmod.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_tunnel_key.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_vlan.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_basic.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_bpf.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_cgroup.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_flow.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_flower.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_fw.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_matchall.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_route.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_rsvp.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_rsvp6.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_teql.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sctp
#lib/modules/KVER-ipfire-pae/kernel/net/sctp/sctp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sctp/sctp_diag.ko
#lib/modules/KVER-ipfire-pae/kernel/net/sunrpc
#lib/modules/KVER-ipfire-pae/kernel/net/sunrpc/auth_gss
#lib/modules/KVER-ipfire-pae/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
#lib/modules/KVER-ipfire-pae/kernel/net/unix
#lib/modules/KVER-ipfire-pae/kernel/net/unix/unix_diag.ko
#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vmw_vsock_virtio_transport.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vmw_vsock_virtio_transport_common.ko
#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko
#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vsock.ko
#lib/modules/KVER-ipfire-pae/kernel/net/wireless
#lib/modules/KVER-ipfire-pae/kernel/sound/drivers/vx
#lib/modules/KVER-ipfire-pae/kernel/sound/drivers/vx/snd-vx-lib.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/firewire
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/bebob
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/bebob/snd-bebob.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/dice
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/dice/snd-dice.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/digi00x
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/digi00x/snd-firewire-digi00x.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/fireworks
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/fireworks/snd-fireworks.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/oxfw
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/oxfw/snd-oxfw.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/snd-firewire-lib.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/snd-firewire-speakers.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/tascam
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/tascam/snd-firewire-tascam.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/hda
+#lib/modules/KVER-ipfire-pae/kernel/sound/hda/snd-hda-core.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/i2c
#lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other
#lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-ak4113.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/usb
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/6fire
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/6fire/snd-usb-6fire.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/bcd2000
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/bcd2000/snd-bcd2000.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/caiaq
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/hiface
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/hiface/snd-usb-hiface.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-line6.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-pod.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-podhd.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-toneport.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-variax.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/misc
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/misc/snd-ua101.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/snd-usb-audio.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/usx2y
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/usx2y/snd-usb-us122l.ko
#lib/modules/KVER-ipfire-pae/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
+#lib/modules/KVER-ipfire-pae/kernel/virt
+#lib/modules/KVER-ipfire-pae/kernel/virt/lib
+#lib/modules/KVER-ipfire-pae/kernel/virt/lib/irqbypass.ko
#lib/modules/KVER-ipfire-pae/modules.alias
#lib/modules/KVER-ipfire-pae/modules.alias.bin
#lib/modules/KVER-ipfire-pae/modules.builtin
###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2015 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2017 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
include Config
-VER = 6.7.1
+VER = 6.11.5
THISAPP = dhcpcd-$(VER)
-DL_FILE = $(THISAPP).tar.bz2
+DL_FILE = $(THISAPP).tar.xz
DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = ffb716b0e9327968e7200d519e1d4c0d
+$(DL_FILE)_MD5 = 2465624b62c1154f0e89dc69c42c849b
install : $(TARGET)
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
- @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+ @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
cd $(DIR_APP) && ./configure --prefix="" --sysconfdir=/var/ipfire/dhcpc \
--dbdir=/var/ipfire/dhcpc \
--libexecdir=/var/ipfire/dhcpc \
cd $(DIR_APP) && make $(MAKETUNING)
cd $(DIR_APP) && make install
+ rm -rf /usr/share/dhcpcd
+
ln -sf /etc/rc.d/init.d/networking/dhcpcd.exe \
$(CONFIG_ROOT)/dhcpc/dhcpcd-hooks/70-dhcpcd.exe
rm -f $(CONFIG_ROOT)/dhcpc/dhcpcd-hooks/20-resolv.conf
include Config
-VER = 3.14.79
+VER = 4.9.35
RPI_PATCHES = 3.14.79-grsec-ipfire1
A7M_PATCHES = 3.14.79-grsec-ipfire1
-GRS_PATCHES = grsecurity-3.1ipfire-3.14.79-v1.patch.xz
+GRS_PATCHES = grsecurity-3.1-4.9.35-ipfire1.patch.xz
THISAPP = linux-$(VER)
arm7-multi-patches-$(A7M_PATCHES).patch.xz = $(URL_IPFIRE)/arm7-multi-patches-$(A7M_PATCHES).patch.xz
$(GRS_PATCHES) = $(URL_IPFIRE)/$(GRS_PATCHES)
-$(DL_FILE)_MD5 = ec5b09d8ad2ebf92e6f51a727a338559
+$(DL_FILE)_MD5 = 9b72bca09f8192ff645b354a4f7960ea
rpi-patches-$(RPI_PATCHES).patch.xz_MD5 = a02a7fd54c642c1e3578a00ed22f54f8
arm7-multi-patches-$(A7M_PATCHES).patch.xz_MD5 = 6c3b11e51caa278dbeacd1e23c2b171b
-$(GRS_PATCHES)_MD5 = 7fe448b53558082395f68c5db94af1a7
+$(GRS_PATCHES)_MD5 = 3fb5171db23cf10198b874b6c60842cc
install : $(TARGET)
ln -svf linux-$(VER) $(DIR_SRC)/linux
# Linux Intermediate Queueing Device
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-imq.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9-imq.diff
# Layer7-patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14-layer7-filter.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.13-layer7.patch
+
ifneq "$(KCFG)" "-headers"
# Grsecurity-patches
cd $(DIR_APP) && xz -c -d $(DIR_DL)/$(GRS_PATCHES) | patch -Np1
cd $(DIR_APP) && rm localversion-grsec
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.7-disable-compat_vdso.patch
endif
# DVB Patches
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-dvbsky.patch
cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/v4l-dvb_fix_tua6034_pll.patch
# Wlan Patches
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-iwlwifi-noibss_only_on_radar_chan.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.55-rt2800usb-change_queue_warn_to_debug.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.25_rt2x00_fix_bss_bcn_num.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.25-rt5592_no_special_txop_init.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.39-add_libertas_uap.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/backports-4.2.6-1_ath10k_remove_logspam.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-ath_ignore_eeprom_regd.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-iwlwifi-noibss_only_on_radar_chan.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-rt2x00usb_suppress_queue_warnings.patch
+# cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.39-add_libertas_uap.patch
# mISDN Patches
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mISDN_hfc-s_add_id.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mISDN-hfcusb-reportl1down.patch
# Add LED trigger
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-ledtrig_netdev.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.16-ledtrig_netdev.patch
+
+ # Fix igb and e1000e crash
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.17-igb-e1000e_fix_lock_at_update_stats.patch
# cs5535audio spams syslog if no ac97 was present (geos router)
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.30_cs5535audio_fix_logspam_on_geos.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8_cs5535audio_fix_logspam_on_geos.patch
# Add PC Engines APU led support
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14-apu_leds.patch
-
- # Add APU2 SoC ID to k10temp
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.65-k10temp_add_16H_M30H_id.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-apu_leds.patch
# Fix uevent PHYSDEVDRIVER
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2.33_ipg-fix-driver-name.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_mcs7830-fix-driver-name.patch
-
- # r8169 L23 patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.32-r8169_disable_L23.patch
-
- # update the queued trim blacklist from kernel 4.2rc1
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.43_new_qtrim_blacklist.patch
-
- # remove eMMC EXT_CSD revision check to use newer eMMC modules
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.79_mmc_remove_EXT_CSD_revision_check.patch
-
- # Hyper-V patches
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0001-Drivers-net-hyperv-Get-rid-of-the-rndis_filter_packe.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0002-Drivers-net-hyperv-Cleanup-the-receive-path.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0003-Drivers-net-hyperv-Cleanup-the-netvsc-receive-callba.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0004-hyperv-Add-latest-NetVSP-versions-to-auto-negotiatio.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0005-Drivers-net-hyperv-Enable-scatter-gather-I-O.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0006-Drivers-net-hyperv-Cleanup-the-send-path.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0007-Drivers-net-hyperv-Enable-offloads-on-the-host.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0008-Drivers-net-hyperv-Enable-receive-side-IP-checksum-o.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0009-Drivers-net-hyperv-Enable-send-side-checksum-offload.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0010-Drivers-net-hyperv-Enable-large-send-offload.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0011-hyperv-Change-the-receive-buffer-size-for-legacy-hos.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0012-Drivers-net-hyperv-Allocate-memory-for-all-possible-.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0013-Drivers-net-hyperv-Negotiate-suitable-ndis-version-f.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0014-Drivers-net-hyperv-Address-UDP-checksum-issues.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0015-hyperv-Properly-handle-checksum-offload.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0016-hyperv-Add-support-for-virtual-Receive-Side-Scaling-.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0017-hyperv-Remove-recv_pkt_list-and-lock.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0018-hyperv-Simplify-the-send_completion-variables.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0019-hyperv-Enable-sendbuf-mechanism-on-the-send-path.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0020-Add-support-for-netvsc-build-without-CONFIG_SYSFS-fl.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0021-hyperv-Add-hash-value-into-RNDIS-Per-packet-info.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0022-hyperv-fix-apparent-cut-n-paste-error-in-send-path-t.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0023-hyperv-Fix-error-return-code-in-netvsc_init_buf.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0024-hyperv-Fix-a-bug-in-netvsc_send.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0025-Drivers-hv-vmbus-Support-per-channel-driver-state.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-hyperv_Mark_the_Hyoer-V_TSC_as_unstable.patch
-
-ifneq "$(KCFG)" "-headers"
- # fix AES-NI 192 and 256 bits / grsec is needed for this patch version
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0100-crypto-aesni-Add-support-for-192-256-bit-keys-to-AES.patch
-endif
-
- # fix CVE-2016-5195 (Dirty COW)
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0110-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch
-
- # fix empty symbol crc's
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-genksyms_fix_typeof_handling.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-2.6.32.27_mcs7830-fix-driver-name.patch
ifeq "$(KCFG)" "-kirkwood"
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/net-tools-1.60-no-hostname.patch
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-gcc34-3.patch
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-kernel_headers-3.patch
+ cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-iphdr-redef.patch
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-mii_ioctl-1.patch
cd $(DIR_APP) && yes "" | make config
cd $(DIR_APP) && sed -i -e 's|HAVE_IP_TOOLS 0|HAVE_IP_TOOLS 1|g' \
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-build_with_kernel4x.patch
cd $(DIR_APP) && make -f Makefile.init makefiles \
DEBUG="" OPT="$(CFLAGS) -fno-strict-aliasing" CCARGS="$(CCARGS)" AUXLIBS="$(AUXLIBS)"
cd $(DIR_APP) && make $(MAKETUNING)
###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2014 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2017 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/0013-everywhere-O_CLOEXEC-harder.patch
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/0014-everywhere-use-SOCK_CLOEXEC-when-creating-socket.patch
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/ppp-2.4.6-increase-max-padi-attempts.patch
+ cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/ppp-2.4.7-headers_4.9.patch
cd $(DIR_APP) && sed -i -e "s+/etc/ppp/connect-errors+/var/log/connect-errors+" pppd/pathnames.h
cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls
cd $(DIR_APP) && make $(MAKETUNING) CC="gcc" RPM_OPT_FLAGS="$(CFLAGS)"
cd $(DIR_APP) && tar axf $(DIR_DL)/udev-lfs-$(VER)-1.tar.bz2
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/udev-208_remove_systemd_log.patch
+ cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/udev-208-fix_uint8_t.patch
rm -rf /lib/udev/devices
install -dv /lib/firmware
VERSUFIX = ipfire$(KCFG)
MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/extra/
-VER = 2.6
+VER = 2.12
THISAPP = xtables-addons-$(VER)
DL_FILE = $(THISAPP).tar.xz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 087835ba7e564481b6fd398692268340
+$(DL_FILE)_MD5 = aed5ce0873709ac243f1177fc81ff452
install : $(TARGET)
case "${BUILD_ARCH}" in
x86_64)
lfsmake2 linux KCFG=""
- lfsmake2 backports KCFG=""
- lfsmake2 e1000e KCFG=""
- lfsmake2 igb KCFG=""
- lfsmake2 ixgbe KCFG=""
+# lfsmake2 backports KCFG=""
+# lfsmake2 e1000e KCFG=""
+# lfsmake2 igb KCFG=""
+# lfsmake2 ixgbe KCFG=""
lfsmake2 xtables-addons KCFG=""
lfsmake2 linux-initrd KCFG=""
;;
i586)
# x86-pae (Native and new XEN) kernel build
lfsmake2 linux KCFG="-pae"
- lfsmake2 backports KCFG="-pae"
- lfsmake2 e1000e KCFG="-pae"
- lfsmake2 igb KCFG="-pae"
- lfsmake2 ixgbe KCFG="-pae"
+# lfsmake2 backports KCFG="-pae"
+# lfsmake2 e1000e KCFG="-pae"
+# lfsmake2 igb KCFG="-pae"
+# lfsmake2 ixgbe KCFG="-pae"
lfsmake2 xtables-addons KCFG="-pae"
lfsmake2 linux-initrd KCFG="-pae"
# x86 kernel build
lfsmake2 linux KCFG=""
- lfsmake2 backports KCFG=""
- lfsmake2 e1000e KCFG=""
- lfsmake2 igb KCFG=""
- lfsmake2 ixgbe KCFG=""
+# lfsmake2 backports KCFG=""
+# lfsmake2 e1000e KCFG=""
+# lfsmake2 igb KCFG=""
+# lfsmake2 ixgbe KCFG=""
lfsmake2 xtables-addons KCFG=""
lfsmake2 linux-initrd KCFG=""
;;
+++ /dev/null
-From 5bb6f6e1d44aa91323857715dfddb63337f8307b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
-Date: Sun, 3 Jul 2016 22:24:50 +0200
-Subject: cdc_ncm: workaround for EM7455 "silent" data interface
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit c086e7096170390594c425114d98172bc9aceb8a ]
-
-Several Lenovo users have reported problems with their Sierra
-Wireless EM7455 modem. The driver has loaded successfully and
-the MBIM management channel has appeared to work, including
-establishing a connection to the mobile network. But no frames
-have been received over the data interface.
-
-The problem affects all EM7455 and MC7455, and is assumed to
-affect other modems based on the same Qualcomm chipset and
-baseband firmware.
-
-Testing narrowed the problem down to what seems to be a
-firmware timing bug during initialization. Adding a short sleep
-while probing is sufficient to make the problem disappear.
-Experiments have shown that 1-2 ms is too little to have any
-effect, while 10-20 ms is enough to reliably succeed.
-
-Reported-by: Stefan Armbruster <ml001@armbruster-it.de>
-Reported-by: Ralph Plawetzki <ralph@purejava.org>
-Reported-by: Andreas Fett <andreas.fett@secunet.com>
-Reported-by: Rasmus Lerdorf <rasmus@lerdorf.com>
-Reported-by: Samo Ratnik <samo.ratnik@gmail.com>
-Reported-and-tested-by: Aleksander Morgado <aleksander@aleksander.es>
-Signed-off-by: Bjørn Mork <bjorn@mork.no>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/usb/cdc_ncm.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
-index c663722..584504e 100644
---- a/drivers/net/usb/cdc_ncm.c
-+++ b/drivers/net/usb/cdc_ncm.c
-@@ -438,6 +438,13 @@ advance:
- if (cdc_ncm_setup(dev))
- goto error2;
-
-+ /* Some firmwares need a pause here or they will silently fail
-+ * to set up the interface properly. This value was decided
-+ * empirically on a Sierra Wireless MC7455 running 02.08.02.00
-+ * firmware.
-+ */
-+ usleep_range(10000, 20000);
-+
- /* configure data interface */
- temp = usb_set_interface(dev->udev, iface_no, data_altsetting);
- if (temp) {
---
-cgit v0.12
-
+++ /dev/null
-From d6b8a68ac7b6d2e241f8d34b769c98a1793d9124 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Wed, 20 Apr 2016 23:23:08 +0100
-Subject: atl2: Disable unimplemented scatter/gather feature
-
-[ Upstream commit f43bfaeddc79effbf3d0fcb53ca477cca66f3db8 ]
-
-atl2 includes NETIF_F_SG in hw_features even though it has no support
-for non-linear skbs. This bug was originally harmless since the
-driver does not claim to implement checksum offload and that used to
-be a requirement for SG.
-
-Now that SG and checksum offload are independent features, if you
-explicitly enable SG *and* use one of the rare protocols that can use
-SG without checkusm offload, this potentially leaks sensitive
-information (before you notice that it just isn't working). Therefore
-this obscure bug has been designated CVE-2016-2117.
-
-Reported-by: Justin Yackoski <jyackoski@crypto-nite.com>
-Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-Fixes: ec5f06156423 ("net: Kill link between CSUM and SG features.")
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/ethernet/atheros/atlx/atl2.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/atheros/atlx/atl2.c b/drivers/net/ethernet/atheros/atlx/atl2.c
-index 265ce1b..96fe542 100644
---- a/drivers/net/ethernet/atheros/atlx/atl2.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl2.c
-@@ -1413,7 +1413,7 @@ static int atl2_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
-
- err = -EIO;
-
-- netdev->hw_features = NETIF_F_SG | NETIF_F_HW_VLAN_CTAG_RX;
-+ netdev->hw_features = NETIF_F_HW_VLAN_CTAG_RX;
- netdev->features |= (NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX);
-
- /* Init PHY as early as possible due to power saving issue */
---
-cgit v0.12
-
+++ /dev/null
-From fc70a4a5cb616bf390cee03390265045de5cf06a Mon Sep 17 00:00:00 2001
-From: Feng Tang <feng.tang@intel.com>
-Date: Fri, 24 Jun 2016 15:26:05 +0800
-Subject: net: alx: Work around the DMA RX overflow issue
-
-[ Upstream commit 881d0327db37ad917a367c77aff1afa1ee41e0a9 ]
-
-Note: This is a verified backported patch for stable 4.4 kernel, and it
-could also be applied to 4.3/4.2/4.1/3.18/3.16
-
-There is a problem with alx devices, that the network link will be
-lost in 1-5 minutes after the device is up.
-
->From debugging without datasheet, we found the error always
-happen when the DMA RX address is set to 0x....fc0, which is very
-likely to be a HW/silicon problem.
-
-This patch will apply rx skb with 64 bytes longer space, and if the
-allocated skb has a 0x...fc0 address, it will use skb_resever(skb, 64)
-to advance the address, so that the RX overflow can be avoided.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70761
-Signed-off-by: Feng Tang <feng.tang@intel.com>
-Suggested-by: Eric Dumazet <edumazet@google.com>
-Tested-by: Ole Lukoie <olelukoie@mail.ru>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/ethernet/atheros/alx/main.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c
-index 3e1d7d2..7585960 100644
---- a/drivers/net/ethernet/atheros/alx/main.c
-+++ b/drivers/net/ethernet/atheros/alx/main.c
-@@ -86,9 +86,14 @@ static int alx_refill_rx_ring(struct alx_priv *alx, gfp_t gfp)
- while (!cur_buf->skb && next != rxq->read_idx) {
- struct alx_rfd *rfd = &rxq->rfd[cur];
-
-- skb = __netdev_alloc_skb(alx->dev, alx->rxbuf_size, gfp);
-+ skb = __netdev_alloc_skb(alx->dev, alx->rxbuf_size + 64, gfp);
- if (!skb)
- break;
-+
-+ /* Workround for the HW RX DMA overflow issue */
-+ if (((unsigned long)skb->data & 0xfff) == 0xfc0)
-+ skb_reserve(skb, 64);
-+
- dma = dma_map_single(&alx->hw.pdev->dev,
- skb->data, alx->rxbuf_size,
- DMA_FROM_DEVICE);
---
-cgit v0.12
-
+++ /dev/null
-diff -Naur linux-3.10.9.org/include/linux/netfilter_ipv4/ipt_ipp2p.h linux-3.10.9/include/linux/netfilter_ipv4/ipt_ipp2p.h
---- linux-3.10.9.org/include/linux/netfilter_ipv4/ipt_ipp2p.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.10.9/include/linux/netfilter_ipv4/ipt_ipp2p.h 2013-08-25 16:00:53.398088168 +0200
-@@ -0,0 +1,31 @@
-+#ifndef __IPT_IPP2P_H
-+#define __IPT_IPP2P_H
-+#define IPP2P_VERSION "0.8.2-ipfire"
-+
-+struct ipt_p2p_info {
-+ int cmd;
-+ int debug;
-+};
-+
-+#endif //__IPT_IPP2P_H
-+
-+#define SHORT_HAND_IPP2P 1 /* --ipp2p switch*/
-+//#define SHORT_HAND_DATA 4 /* --ipp2p-data switch*/
-+#define SHORT_HAND_NONE 5 /* no short hand*/
-+
-+#define IPP2P_EDK (1 << 1)
-+#define IPP2P_DATA_KAZAA (1 << 2)
-+#define IPP2P_DATA_EDK (1 << 3)
-+#define IPP2P_DATA_DC (1 << 4)
-+#define IPP2P_DC (1 << 5)
-+#define IPP2P_DATA_GNU (1 << 6)
-+#define IPP2P_GNU (1 << 7)
-+#define IPP2P_KAZAA (1 << 8)
-+#define IPP2P_BIT (1 << 9)
-+#define IPP2P_APPLE (1 << 10)
-+#define IPP2P_SOUL (1 << 11)
-+#define IPP2P_WINMX (1 << 12)
-+#define IPP2P_ARES (1 << 13)
-+#define IPP2P_MUTE (1 << 14)
-+#define IPP2P_WASTE (1 << 15)
-+#define IPP2P_XDCC (1 << 16)
-diff -Naur linux-3.10.9.org/net/ipv4/netfilter/ipt_ipp2p.c linux-3.10.9/net/ipv4/netfilter/ipt_ipp2p.c
---- linux-3.10.9.org/net/ipv4/netfilter/ipt_ipp2p.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.10.9/net/ipv4/netfilter/ipt_ipp2p.c 2013-08-25 16:00:53.398088168 +0200
-@@ -0,0 +1,970 @@
-+#if defined(MODVERSIONS)
-+#include <linux/modversions.h>
-+#endif
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/netfilter_ipv4/ip_tables.h>
-+#include <linux/netfilter_ipv4/ipt_ipp2p.h>
-+#include <net/tcp.h>
-+#include <net/udp.h>
-+
-+#define get_u8(X,O) (*(__u8 *)(X + O))
-+#define get_u16(X,O) (*(__u16 *)(X + O))
-+#define get_u32(X,O) (*(__u32 *)(X + O))
-+
-+MODULE_AUTHOR("Eicke Friedrich/Klaus Degner <ipp2p@ipp2p.org>");
-+MODULE_DESCRIPTION("An extension to iptables to identify P2P traffic.");
-+MODULE_LICENSE("GPL");
-+
-+
-+/*Search for UDP eDonkey/eMule/Kad commands*/
-+int
-+udp_search_edk (unsigned char *haystack, int packet_len)
-+{
-+ unsigned char *t = haystack;
-+ t += 8;
-+
-+ switch (t[0]) {
-+ case 0xe3:
-+ { /*edonkey*/
-+ switch (t[1])
-+ {
-+ /* client -> server status request */
-+ case 0x96:
-+ if (packet_len == 14) return ((IPP2P_EDK * 100) + 50);
-+ break;
-+ /* server -> client status request */
-+ case 0x97: if (packet_len == 42) return ((IPP2P_EDK * 100) + 51);
-+ break;
-+ /* server description request */
-+ /* e3 2a ff f0 .. | size == 6 */
-+ case 0xa2: if ( (packet_len == 14) && ( get_u16(t,2) == __constant_htons(0xfff0) ) ) return ((IPP2P_EDK * 100) + 52);
-+ break;
-+ /* server description response */
-+ /* e3 a3 ff f0 .. | size > 40 && size < 200 */
-+ //case 0xa3: return ((IPP2P_EDK * 100) + 53);
-+ // break;
-+ case 0x9a: if (packet_len==26) return ((IPP2P_EDK * 100) + 54);
-+ break;
-+
-+ case 0x92: if (packet_len==18) return ((IPP2P_EDK * 100) + 55);
-+ break;
-+ }
-+ break;
-+ }
-+ case 0xe4:
-+ {
-+ switch (t[1])
-+ {
-+ /* e4 20 .. | size == 43 */
-+ case 0x20: if ((packet_len == 43) && (t[2] != 0x00) && (t[34] != 0x00)) return ((IPP2P_EDK * 100) + 60);
-+ break;
-+ /* e4 00 .. 00 | size == 35 ? */
-+ case 0x00: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 61);
-+ break;
-+ /* e4 10 .. 00 | size == 35 ? */
-+ case 0x10: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 62);
-+ break;
-+ /* e4 18 .. 00 | size == 35 ? */
-+ case 0x18: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 63);
-+ break;
-+ /* e4 52 .. | size = 44 */
-+ case 0x52: if (packet_len == 44 ) return ((IPP2P_EDK * 100) + 64);
-+ break;
-+ /* e4 58 .. | size == 6 */
-+ case 0x58: if (packet_len == 14 ) return ((IPP2P_EDK * 100) + 65);
-+ break;
-+ /* e4 59 .. | size == 2 */
-+ case 0x59: if (packet_len == 10 )return ((IPP2P_EDK * 100) + 66);
-+ break;
-+ /* e4 28 .. | packet_len == 52,77,102,127... */
-+ case 0x28: if (((packet_len-52) % 25) == 0) return ((IPP2P_EDK * 100) + 67);
-+ break;
-+ /* e4 50 xx xx | size == 4 */
-+ case 0x50: if (packet_len == 12) return ((IPP2P_EDK * 100) + 68);
-+ break;
-+ /* e4 40 xx xx | size == 48 */
-+ case 0x40: if (packet_len == 56) return ((IPP2P_EDK * 100) + 69);
-+ break;
-+ }
-+ break;
-+ }
-+ } /* end of switch (t[0]) */
-+ return 0;
-+}/*udp_search_edk*/
-+
-+
-+/*Search for UDP Gnutella commands*/
-+int
-+udp_search_gnu (unsigned char *haystack, int packet_len)
-+{
-+ unsigned char *t = haystack;
-+ t += 8;
-+
-+ if (memcmp(t, "GND", 3) == 0) return ((IPP2P_GNU * 100) + 51);
-+ if (memcmp(t, "GNUTELLA ", 9) == 0) return ((IPP2P_GNU * 100) + 52);
-+ return 0;
-+}/*udp_search_gnu*/
-+
-+
-+/*Search for UDP KaZaA commands*/
-+int
-+udp_search_kazaa (unsigned char *haystack, int packet_len)
-+{
-+ unsigned char *t = haystack;
-+
-+ if (t[packet_len-1] == 0x00){
-+ t += (packet_len - 6);
-+ if (memcmp(t, "KaZaA", 5) == 0) return (IPP2P_KAZAA * 100 +50);
-+ }
-+
-+ return 0;
-+}/*udp_search_kazaa*/
-+
-+/*Search for UDP DirectConnect commands*/
-+int
-+udp_search_directconnect (unsigned char *haystack, int packet_len)
-+{
-+ unsigned char *t = haystack;
-+ if ((*(t + 8) == 0x24) && (*(t + packet_len - 1) == 0x7c)) {
-+ t+=8;
-+ if (memcmp(t, "SR ", 3) == 0) return ((IPP2P_DC * 100) + 60);
-+ if (memcmp(t, "Ping ", 5) == 0) return ((IPP2P_DC * 100) + 61);
-+ }
-+ return 0;
-+}/*udp_search_directconnect*/
-+
-+
-+
-+/*Search for UDP BitTorrent commands*/
-+int
-+udp_search_bit (unsigned char *haystack, int packet_len)
-+{
-+ switch(packet_len)
-+ {
-+ case 24:
-+ /* ^ 00 00 04 17 27 10 19 80 */
-+ if ((ntohl(get_u32(haystack, 8)) == 0x00000417) && (ntohl(get_u32(haystack, 12)) == 0x27101980))
-+ return (IPP2P_BIT * 100 + 50);
-+ break;
-+ case 44:
-+ if (get_u32(haystack, 16) == __constant_htonl(0x00000400) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
-+ return (IPP2P_BIT * 100 + 51);
-+ if (get_u32(haystack, 16) == __constant_htonl(0x00000400))
-+ return (IPP2P_BIT * 100 + 61);
-+ break;
-+ case 65:
-+ if (get_u32(haystack, 16) == __constant_htonl(0x00000404) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
-+ return (IPP2P_BIT * 100 + 52);
-+ if (get_u32(haystack, 16) == __constant_htonl(0x00000404))
-+ return (IPP2P_BIT * 100 + 62);
-+ break;
-+ case 67:
-+ if (get_u32(haystack, 16) == __constant_htonl(0x00000406) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
-+ return (IPP2P_BIT * 100 + 53);
-+ if (get_u32(haystack, 16) == __constant_htonl(0x00000406))
-+ return (IPP2P_BIT * 100 + 63);
-+ break;
-+ case 211:
-+ if (get_u32(haystack, 8) == __constant_htonl(0x00000405))
-+ return (IPP2P_BIT * 100 + 54);
-+ break;
-+ case 29:
-+ if ((get_u32(haystack, 8) == __constant_htonl(0x00000401)))
-+ return (IPP2P_BIT * 100 + 55);
-+ break;
-+ case 52:
-+ if (get_u32(haystack,8) == __constant_htonl(0x00000827) &&
-+ get_u32(haystack,12) == __constant_htonl(0x37502950))
-+ return (IPP2P_BIT * 100 + 80);
-+ break;
-+ default:
-+ /* this packet does not have a constant size */
-+ if (packet_len >= 40 && get_u32(haystack, 16) == __constant_htonl(0x00000402) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
-+ return (IPP2P_BIT * 100 + 56);
-+ break;
-+ }
-+
-+ /* some extra-bitcomet rules:
-+ * "d1:" [a|r] "d2:id20:"
-+ */
-+ if (packet_len > 30 && get_u8(haystack, 8) == 'd' && get_u8(haystack, 9) == '1' && get_u8(haystack, 10) == ':' )
-+ {
-+ if (get_u8(haystack, 11) == 'a' || get_u8(haystack, 11) == 'r')
-+ {
-+ if (memcmp(haystack+12,"d2:id20:",8)==0)
-+ return (IPP2P_BIT * 100 + 57);
-+ }
-+ }
-+
-+#if 0
-+ /* bitlord rules */
-+ /* packetlen must be bigger than 40 */
-+ /* first 4 bytes are zero */
-+ if (packet_len > 40 && get_u32(haystack, 8) == 0x00000000)
-+ {
-+ /* first rule: 00 00 00 00 01 00 00 xx xx xx xx 00 00 00 00*/
-+ if (get_u32(haystack, 12) == 0x00000000 &&
-+ get_u32(haystack, 16) == 0x00010000 &&
-+ get_u32(haystack, 24) == 0x00000000 )
-+ return (IPP2P_BIT * 100 + 71);
-+
-+ /* 00 01 00 00 0d 00 00 xx xx xx xx 00 00 00 00*/
-+ if (get_u32(haystack, 12) == 0x00000001 &&
-+ get_u32(haystack, 16) == 0x000d0000 &&
-+ get_u32(haystack, 24) == 0x00000000 )
-+ return (IPP2P_BIT * 100 + 71);
-+
-+
-+ }
-+#endif
-+
-+ return 0;
-+}/*udp_search_bit*/
-+
-+
-+
-+/*Search for Ares commands*/
-+//#define IPP2P_DEBUG_ARES
-+int
-+search_ares (const unsigned char *payload, const u16 plen)
-+//int search_ares (unsigned char *haystack, int packet_len, int head_len)
-+{
-+// const unsigned char *t = haystack + head_len;
-+
-+ /* all ares packets start with */
-+ if (payload[1] == 0 && (plen - payload[0]) == 3)
-+ {
-+ switch (payload[2])
-+ {
-+ case 0x5a:
-+ /* ares connect */
-+ if ( plen == 6 && payload[5] == 0x05 ) return ((IPP2P_ARES * 100) + 1);
-+ break;
-+ case 0x09:
-+ /* ares search, min 3 chars --> 14 bytes
-+ * lets define a search can be up to 30 chars --> max 34 bytes
-+ */
-+ if ( plen >= 14 && plen <= 34 ) return ((IPP2P_ARES * 100) + 1);
-+ break;
-+#ifdef IPP2P_DEBUG_ARES
-+ default:
-+ printk(KERN_DEBUG "Unknown Ares command %x recognized, len: %u \n", (unsigned int) payload[2],plen);
-+#endif /* IPP2P_DEBUG_ARES */
-+ }
-+ }
-+
-+#if 0
-+ /* found connect packet: 03 00 5a 04 03 05 */
-+ /* new version ares 1.8: 03 00 5a xx xx 05 */
-+ if ((plen) == 6){ /* possible connect command*/
-+ if ((payload[0] == 0x03) && (payload[1] == 0x00) && (payload[2] == 0x5a) && (payload[5] == 0x05))
-+ return ((IPP2P_ARES * 100) + 1);
-+ }
-+ if ((plen) == 60){ /* possible download command*/
-+ if ((payload[59] == 0x0a) && (payload[58] == 0x0a)){
-+ if (memcmp(t, "PUSH SHA1:", 10) == 0) /* found download command */
-+ return ((IPP2P_ARES * 100) + 2);
-+ }
-+ }
-+#endif
-+
-+ return 0;
-+} /*search_ares*/
-+
-+/*Search for SoulSeek commands*/
-+int
-+search_soul (const unsigned char *payload, const u16 plen)
-+{
-+//#define IPP2P_DEBUG_SOUL
-+ /* match: xx xx xx xx | xx = sizeof(payload) - 4 */
-+ if (get_u32(payload, 0) == (plen - 4)){
-+ const __u32 m=get_u32(payload, 4);
-+ /* match 00 yy yy 00, yy can be everything */
-+ if ( get_u8(payload, 4) == 0x00 && get_u8(payload, 7) == 0x00 )
-+ {
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "0: Soulseek command 0x%x recognized\n",get_u32(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+ return ((IPP2P_SOUL * 100) + 1);
-+ }
-+
-+ /* next match: 01 yy 00 00 | yy can be everything */
-+ if ( get_u8(payload, 4) == 0x01 && get_u16(payload, 6) == 0x0000 )
-+ {
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "1: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+ return ((IPP2P_SOUL * 100) + 2);
-+ }
-+
-+ /* other soulseek commandos are: 1-5,7,9,13-18,22,23,26,28,35-37,40-46,50,51,60,62-69,91,92,1001 */
-+ /* try to do this in an intelligent way */
-+ /* get all small commandos */
-+ switch(m)
-+ {
-+ case 7:
-+ case 9:
-+ case 22:
-+ case 23:
-+ case 26:
-+ case 28:
-+ case 50:
-+ case 51:
-+ case 60:
-+ case 91:
-+ case 92:
-+ case 1001:
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "2: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+ return ((IPP2P_SOUL * 100) + 3);
-+ }
-+
-+ if (m > 0 && m < 6 )
-+ {
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "3: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+ return ((IPP2P_SOUL * 100) + 4);
-+ }
-+ if (m > 12 && m < 19 )
-+ {
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "4: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+ return ((IPP2P_SOUL * 100) + 5);
-+ }
-+
-+ if (m > 34 && m < 38 )
-+ {
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "5: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+ return ((IPP2P_SOUL * 100) + 6);
-+ }
-+
-+ if (m > 39 && m < 47 )
-+ {
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "6: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+ return ((IPP2P_SOUL * 100) + 7);
-+ }
-+
-+ if (m > 61 && m < 70 )
-+ {
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "7: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+ return ((IPP2P_SOUL * 100) + 8);
-+ }
-+
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "unknown SOULSEEK command: 0x%x, first 16 bit: 0x%x, first 8 bit: 0x%x ,soulseek ???\n",get_u32(payload, 4),get_u16(payload, 4) >> 16,get_u8(payload, 4) >> 24);
-+#endif /* IPP2P_DEBUG_SOUL */
-+ }
-+
-+ /* match 14 00 00 00 01 yy 00 00 00 STRING(YY) 01 00 00 00 00 46|50 00 00 00 00 */
-+ /* without size at the beginning !!! */
-+ if ( get_u32(payload, 0) == 0x14 && get_u8(payload, 4) == 0x01 )
-+ {
-+ __u32 y=get_u32(payload, 5);
-+ /* we need 19 chars + string */
-+ if ( (y + 19) <= (plen) )
-+ {
-+ const unsigned char *w=payload+9+y;
-+ if (get_u32(w, 0) == 0x01 && ( get_u16(w, 4) == 0x4600 || get_u16(w, 4) == 0x5000) && get_u32(w, 6) == 0x00);
-+#ifdef IPP2P_DEBUG_SOUL
-+ printk(KERN_DEBUG "Soulssek special client command recognized\n");
-+#endif /* IPP2P_DEBUG_SOUL */
-+ return ((IPP2P_SOUL * 100) + 9);
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+/*Search for WinMX commands*/
-+int
-+search_winmx (const unsigned char *payload, const u16 plen)
-+{
-+//#define IPP2P_DEBUG_WINMX
-+ if (((plen) == 4) && (memcmp(payload, "SEND", 4) == 0)) return ((IPP2P_WINMX * 100) + 1);
-+ if (((plen) == 3) && (memcmp(payload, "GET", 3) == 0)) return ((IPP2P_WINMX * 100) + 2);
-+ //if (packet_len < (head_len + 10)) return 0;
-+ if (plen < 10) return 0;
-+
-+ if ((memcmp(payload, "SEND", 4) == 0) || (memcmp(payload, "GET", 3) == 0)){
-+ u16 c=4;
-+ const u16 end=plen-2;
-+ u8 count=0;
-+ while (c < end)
-+ {
-+ if (payload[c]== 0x20 && payload[c+1] == 0x22)
-+ {
-+ c++;
-+ count++;
-+ if (count>=2) return ((IPP2P_WINMX * 100) + 3);
-+ }
-+ c++;
-+ }
-+ }
-+
-+ if ( plen == 149 && payload[0] == '8' )
-+ {
-+#ifdef IPP2P_DEBUG_WINMX
-+ printk(KERN_INFO "maybe WinMX\n");
-+#endif
-+ if (get_u32(payload,17) == 0 && get_u32(payload,21) == 0 && get_u32(payload,25) == 0 &&
-+// get_u32(payload,33) == __constant_htonl(0x71182b1a) && get_u32(payload,37) == __constant_htonl(0x05050000) &&
-+// get_u32(payload,133) == __constant_htonl(0x31097edf) && get_u32(payload,145) == __constant_htonl(0xdcb8f792))
-+ get_u16(payload,39) == 0 && get_u16(payload,135) == __constant_htons(0x7edf) && get_u16(payload,147) == __constant_htons(0xf792))
-+
-+ {
-+#ifdef IPP2P_DEBUG_WINMX
-+ printk(KERN_INFO "got WinMX\n");
-+#endif
-+ return ((IPP2P_WINMX * 100) + 4);
-+ }
-+ }
-+ return 0;
-+} /*search_winmx*/
-+
-+
-+/*Search for appleJuice commands*/
-+int
-+search_apple (const unsigned char *payload, const u16 plen)
-+{
-+ if ( (plen > 7) && (payload[6] == 0x0d) && (payload[7] == 0x0a) && (memcmp(payload, "ajprot", 6) == 0)) return (IPP2P_APPLE * 100);
-+
-+ return 0;
-+}
-+
-+
-+/*Search for BitTorrent commands*/
-+int
-+search_bittorrent (const unsigned char *payload, const u16 plen)
-+{
-+ if (plen > 20)
-+ {
-+ /* test for match 0x13+"BitTorrent protocol" */
-+ if (payload[0] == 0x13)
-+ {
-+ if (memcmp(payload+1, "BitTorrent protocol", 19) == 0) return (IPP2P_BIT * 100);
-+ }
-+
-+ /* get tracker commandos, all starts with GET /
-+ * then it can follow: scrape| announce
-+ * and then ?hash_info=
-+ */
-+ if (memcmp(payload,"GET /",5) == 0)
-+ {
-+ /* message scrape */
-+ if ( memcmp(payload+5,"scrape?info_hash=",17)==0 ) return (IPP2P_BIT * 100 + 1);
-+ /* message announce */
-+ if ( memcmp(payload+5,"announce?info_hash=",19)==0 ) return (IPP2P_BIT * 100 + 2);
-+ }
-+ }
-+ else
-+ {
-+ /* bitcomet encryptes the first packet, so we have to detect another
-+ * one later in the flow */
-+ /* first try failed, too many missdetections */
-+ //if ( size == 5 && get_u32(t,0) == __constant_htonl(1) && t[4] < 3) return (IPP2P_BIT * 100 + 3);
-+
-+ /* second try: block request packets */
-+ if ( plen == 17 && get_u32(payload,0) == __constant_htonl(0x0d) && payload[4] == 0x06 && get_u32(payload,13) == __constant_htonl(0x4000) ) return (IPP2P_BIT * 100 + 3);
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/*check for Kazaa get command*/
-+int
-+search_kazaa (const unsigned char *payload, const u16 plen)
-+
-+{
-+ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a) && memcmp(payload, "GET /.hash=", 11) == 0)
-+ return (IPP2P_DATA_KAZAA * 100);
-+
-+ return 0;
-+}
-+
-+
-+/*check for gnutella get command*/
-+int
-+search_gnu (const unsigned char *payload, const u16 plen)
-+{
-+ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
-+ {
-+ if (memcmp(payload, "GET /get/", 9) == 0) return ((IPP2P_DATA_GNU * 100) + 1);
-+ if (memcmp(payload, "GET /uri-res/", 13) == 0) return ((IPP2P_DATA_GNU * 100) + 2);
-+ }
-+ return 0;
-+}
-+
-+
-+/*check for gnutella get commands and other typical data*/
-+int
-+search_all_gnu (const unsigned char *payload, const u16 plen)
-+{
-+
-+ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
-+ {
-+
-+ if (memcmp(payload, "GNUTELLA CONNECT/", 17) == 0) return ((IPP2P_GNU * 100) + 1);
-+ if (memcmp(payload, "GNUTELLA/", 9) == 0) return ((IPP2P_GNU * 100) + 2);
-+
-+
-+ if ((memcmp(payload, "GET /get/", 9) == 0) || (memcmp(payload, "GET /uri-res/", 13) == 0))
-+ {
-+ u16 c=8;
-+ const u16 end=plen-22;
-+ while (c < end) {
-+ if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Gnutella-", 11) == 0) || (memcmp(&payload[c+2], "X-Queue:", 8) == 0)))
-+ return ((IPP2P_GNU * 100) + 3);
-+ c++;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+/*check for KaZaA download commands and other typical data*/
-+int
-+search_all_kazaa (const unsigned char *payload, const u16 plen)
-+{
-+ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
-+ {
-+
-+ if (memcmp(payload, "GIVE ", 5) == 0) return ((IPP2P_KAZAA * 100) + 1);
-+
-+ if (memcmp(payload, "GET /", 5) == 0) {
-+ u16 c = 8;
-+ const u16 end=plen-22;
-+ while (c < end) {
-+ if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Kazaa-Username: ", 18) == 0) || (memcmp(&payload[c+2], "User-Agent: PeerEnabler/", 24) == 0)))
-+ return ((IPP2P_KAZAA * 100) + 2);
-+ c++;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+/*fast check for edonkey file segment transfer command*/
-+int
-+search_edk (const unsigned char *payload, const u16 plen)
-+{
-+ if (payload[0] != 0xe3)
-+ return 0;
-+ else {
-+ if (payload[5] == 0x47)
-+ return (IPP2P_DATA_EDK * 100);
-+ else
-+ return 0;
-+ }
-+}
-+
-+
-+
-+/*intensive but slower search for some edonkey packets including size-check*/
-+int
-+search_all_edk (const unsigned char *payload, const u16 plen)
-+{
-+ if (payload[0] != 0xe3)
-+ return 0;
-+ else {
-+ //t += head_len;
-+ const u16 cmd = get_u16(payload, 1);
-+ if (cmd == (plen - 5)) {
-+ switch (payload[5]) {
-+ case 0x01: return ((IPP2P_EDK * 100) + 1); /*Client: hello or Server:hello*/
-+ case 0x4c: return ((IPP2P_EDK * 100) + 9); /*Client: Hello-Answer*/
-+ }
-+ }
-+ return 0;
-+ }
-+}
-+
-+
-+/*fast check for Direct Connect send command*/
-+int
-+search_dc (const unsigned char *payload, const u16 plen)
-+{
-+
-+ if (payload[0] != 0x24 )
-+ return 0;
-+ else {
-+ if (memcmp(&payload[1], "Send|", 5) == 0)
-+ return (IPP2P_DATA_DC * 100);
-+ else
-+ return 0;
-+ }
-+
-+}
-+
-+
-+/*intensive but slower check for all direct connect packets*/
-+int
-+search_all_dc (const unsigned char *payload, const u16 plen)
-+{
-+// unsigned char *t = haystack;
-+
-+ if (payload[0] == 0x24 && payload[plen-1] == 0x7c)
-+ {
-+ const unsigned char *t=&payload[1];
-+ /* Client-Hub-Protocol */
-+ if (memcmp(t, "Lock ", 5) == 0) return ((IPP2P_DC * 100) + 1);
-+ /* Client-Client-Protocol, some are already recognized by client-hub (like lock) */
-+ if (memcmp(t, "MyNick ", 7) == 0) return ((IPP2P_DC * 100) + 38);
-+ }
-+ return 0;
-+}
-+
-+/*check for mute*/
-+int
-+search_mute (const unsigned char *payload, const u16 plen)
-+{
-+ if ( plen == 209 || plen == 345 || plen == 473 || plen == 609 || plen == 1121 )
-+ {
-+ //printk(KERN_DEBUG "size hit: %u",size);
-+ if (memcmp(payload,"PublicKey: ",11) == 0 )
-+ {
-+ return ((IPP2P_MUTE * 100) + 0);
-+
-+/* if (memcmp(t+size-14,"\x0aEndPublicKey\x0a",14) == 0)
-+ {
-+ printk(KERN_DEBUG "end pubic key hit: %u",size);
-+
-+ }*/
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+/* check for xdcc */
-+int
-+search_xdcc (const unsigned char *payload, const u16 plen)
-+{
-+ /* search in small packets only */
-+ if (plen > 20 && plen < 200 && payload[plen-1] == 0x0a && payload[plen-2] == 0x0d && memcmp(payload,"PRIVMSG ",8) == 0)
-+ {
-+
-+ u16 x=10;
-+ const u16 end=plen - 13;
-+
-+ /* is seems to be a irc private massage, chedck for xdcc command */
-+ while (x < end)
-+ {
-+ if (payload[x] == ':')
-+ {
-+ if ( memcmp(&payload[x+1],"xdcc send #",11) == 0 )
-+ return ((IPP2P_XDCC * 100) + 0);
-+ }
-+ x++;
-+ }
-+ }
-+ return 0;
-+}
-+
-+/* search for waste */
-+int search_waste(const unsigned char *payload, const u16 plen)
-+{
-+ if ( plen >= 8 && memcmp(payload,"GET.sha1:",9) == 0)
-+ return ((IPP2P_WASTE * 100) + 0);
-+
-+ return 0;
-+}
-+
-+
-+static struct {
-+ int command;
-+ __u8 short_hand; /*for fucntions included in short hands*/
-+ int packet_len;
-+ int (*function_name) (const unsigned char *, const u16);
-+} matchlist[] = {
-+ {IPP2P_EDK,SHORT_HAND_IPP2P,20, &search_all_edk},
-+// {IPP2P_DATA_KAZAA,SHORT_HAND_DATA,200, &search_kazaa},
-+// {IPP2P_DATA_EDK,SHORT_HAND_DATA,60, &search_edk},
-+// {IPP2P_DATA_DC,SHORT_HAND_DATA,26, &search_dc},
-+ {IPP2P_DC,SHORT_HAND_IPP2P,5, search_all_dc},
-+// {IPP2P_DATA_GNU,SHORT_HAND_DATA,40, &search_gnu},
-+ {IPP2P_GNU,SHORT_HAND_IPP2P,5, &search_all_gnu},
-+ {IPP2P_KAZAA,SHORT_HAND_IPP2P,5, &search_all_kazaa},
-+ {IPP2P_BIT,SHORT_HAND_IPP2P,20, &search_bittorrent},
-+ {IPP2P_APPLE,SHORT_HAND_IPP2P,5, &search_apple},
-+ {IPP2P_SOUL,SHORT_HAND_IPP2P,5, &search_soul},
-+ {IPP2P_WINMX,SHORT_HAND_IPP2P,2, &search_winmx},
-+ {IPP2P_ARES,SHORT_HAND_IPP2P,5, &search_ares},
-+ {IPP2P_MUTE,SHORT_HAND_NONE,200, &search_mute},
-+ {IPP2P_WASTE,SHORT_HAND_NONE,5, &search_waste},
-+ {IPP2P_XDCC,SHORT_HAND_NONE,5, &search_xdcc},
-+ {0,0,0,NULL}
-+};
-+
-+
-+static struct {
-+ int command;
-+ __u8 short_hand; /*for fucntions included in short hands*/
-+ int packet_len;
-+ int (*function_name) (unsigned char *, int);
-+} udp_list[] = {
-+ { IPP2P_KAZAA, SHORT_HAND_IPP2P, 14, &udp_search_kazaa},
-+ { IPP2P_BIT, SHORT_HAND_IPP2P, 23, &udp_search_bit},
-+ { IPP2P_GNU, SHORT_HAND_IPP2P, 11, &udp_search_gnu},
-+ { IPP2P_EDK, SHORT_HAND_IPP2P, 9, &udp_search_edk},
-+ { IPP2P_DC, SHORT_HAND_IPP2P, 12, &udp_search_directconnect},
-+ { 0, 0, 0, NULL }
-+};
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+static int
-+match(const struct sk_buff *skb,
-+ const struct net_device *in,
-+ const struct net_device *out,
-+ const void *matchinfo,
-+ int offset,
-+ const void *hdr,
-+ u_int16_t datalen,
-+ int *hotdrop)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
-+static int
-+match(const struct sk_buff *skb,
-+ const struct net_device *in,
-+ const struct net_device *out,
-+ const void *matchinfo,
-+ int offset,
-+ int *hotdrop)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
-+static int
-+match(const struct sk_buff *skb,
-+ const struct net_device *in,
-+ const struct net_device *out,
-+ const void *matchinfo,
-+ int offset,
-+ unsigned int protoff,
-+ int *hotdrop)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-+static int
-+match(const struct sk_buff *skb,
-+ const struct net_device *in,
-+ const struct net_device *out,
-+ const struct xt_match *match,
-+ const void *matchinfo,
-+ int offset,
-+ unsigned int protoff,
-+ int *hotdrop)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-+static bool
-+match(const struct sk_buff *skb,
-+ const struct net_device *in,
-+ const struct net_device *out,
-+ const struct xt_match *match,
-+ const void *matchinfo,
-+ int offset,
-+ unsigned int protoff,
-+ bool *hotdrop)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
-+static bool
-+match(const struct sk_buff *skb,
-+ const struct xt_match_param *par)
-+#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) */
-+static int
-+match(const struct sk_buff *skb,
-+ struct xt_action_param *par)
-+#endif
-+{
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-+ const struct ipt_p2p_info *info = matchinfo;
-+#else
-+ const struct ipt_p2p_info *info = par->matchinfo;
-+ const int offset = par->fragoff;
-+#endif
-+ unsigned char *haystack;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
-+ struct iphdr *ip = ip_hdr(skb);
-+#else
-+ struct iphdr *ip = skb->nh.iph;
-+#endif
-+ int p2p_result = 0, i = 0;
-+// int head_len;
-+ int hlen = ntohs(ip->tot_len)-(ip->ihl*4); /*hlen = packet-data length*/
-+
-+ /*must not be a fragment*/
-+ if (offset) {
-+ if (info->debug) printk("IPP2P.match: offset found %i \n",offset);
-+ return 0;
-+ }
-+
-+ /*make sure that skb is linear*/
-+ if(skb_is_nonlinear(skb)){
-+ if (info->debug) printk("IPP2P.match: nonlinear skb found\n");
-+ return 0;
-+ }
-+
-+
-+ haystack=(char *)ip+(ip->ihl*4); /*haystack = packet data*/
-+
-+ switch (ip->protocol){
-+ case IPPROTO_TCP: /*what to do with a TCP packet*/
-+ {
-+ struct tcphdr *tcph = (void *) ip + ip->ihl * 4;
-+
-+ if (tcph->fin) return 0; /*if FIN bit is set bail out*/
-+ if (tcph->syn) return 0; /*if SYN bit is set bail out*/
-+ if (tcph->rst) return 0; /*if RST bit is set bail out*/
-+
-+ haystack += tcph->doff * 4; /*get TCP-Header-Size*/
-+ hlen -= tcph->doff * 4;
-+ while (matchlist[i].command) {
-+ if ((((info->cmd & matchlist[i].command) == matchlist[i].command) ||
-+ ((info->cmd & matchlist[i].short_hand) == matchlist[i].short_hand)) &&
-+ (hlen > matchlist[i].packet_len)) {
-+ p2p_result = matchlist[i].function_name(haystack, hlen);
-+ if (p2p_result)
-+ {
-+ if (info->debug) printk("IPP2P.debug:TCP-match: %i from: %pl4:%i to: %pl4:%i Length: %i\n",
-+ p2p_result, &ip->saddr,ntohs(tcph->source), &ip->daddr,ntohs(tcph->dest),hlen);
-+ return p2p_result;
-+ }
-+ }
-+ i++;
-+ }
-+ return p2p_result;
-+ }
-+
-+ case IPPROTO_UDP: /*what to do with an UDP packet*/
-+ {
-+ struct udphdr *udph = (void *) ip + ip->ihl * 4;
-+
-+ while (udp_list[i].command){
-+ if ((((info->cmd & udp_list[i].command) == udp_list[i].command) ||
-+ ((info->cmd & udp_list[i].short_hand) == udp_list[i].short_hand)) &&
-+ (hlen > udp_list[i].packet_len)) {
-+ p2p_result = udp_list[i].function_name(haystack, hlen);
-+ if (p2p_result){
-+ if (info->debug) printk("IPP2P.debug:UDP-match: %i from: %pl4:%i to: %pl4:%i Length: %i\n",
-+ p2p_result, &ip->saddr,ntohs(udph->source), &ip->daddr,ntohs(udph->dest),hlen);
-+ return p2p_result;
-+ }
-+ }
-+ i++;
-+ }
-+ return p2p_result;
-+ }
-+
-+ default: return 0;
-+ }
-+}
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
-+static int
-+checkentry(const char *tablename,
-+ const struct ipt_ip *ip,
-+ void *matchinfo,
-+ unsigned int matchsize,
-+ unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
-+static int
-+checkentry(const char *tablename,
-+ const void *inf,
-+ void *matchinfo,
-+ unsigned int matchsize,
-+ unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-+static int
-+checkentry(const char *tablename,
-+ const void *inf,
-+ const struct xt_match *match,
-+ void *matchinfo,
-+ unsigned int matchsize,
-+ unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-+static int
-+checkentry(const char *tablename,
-+ const void *inf,
-+ const struct xt_match *match,
-+ void *matchinfo,
-+ unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-+static bool
-+checkentry(const char *tablename,
-+ const void *inf,
-+ const struct xt_match *match,
-+ void *matchinfo,
-+ unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
-+static bool
-+checkentry(const struct xt_mtchk_param *par)
-+#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) */
-+static int
-+checkentry(const struct xt_mtchk_param *par)
-+#endif
-+{
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
-+ return 1;
-+#else
-+ return 0;
-+#endif
-+}
-+
-+
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
-+static struct xt_match ipp2p_match = {
-+#else
-+static struct ipt_match ipp2p_match = {
-+#endif
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+ { NULL, NULL },
-+ "ipp2p",
-+ &ipp2p_match,
-+ &ipp2p_checkentry,
-+ NULL,
-+ THIS_MODULE
-+#endif
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-+ .name = "ipp2p",
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
-+ .family = AF_INET,
-+#endif
-+ .match = &match,
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
-+ .matchsize = sizeof(struct ipt_p2p_info),
-+#endif
-+ .checkentry = &checkentry,
-+ .me = THIS_MODULE,
-+#endif
-+};
-+
-+
-+static int __init init(void)
-+{
-+ printk(KERN_INFO "IPP2P v%s loading\n", IPP2P_VERSION);
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
-+ return xt_register_match(&ipp2p_match);
-+#else
-+ return ipt_register_match(&ipp2p_match);
-+#endif
-+}
-+
-+static void __exit fini(void)
-+{
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
-+ xt_unregister_match(&ipp2p_match);
-+#else
-+ ipt_unregister_match(&ipp2p_match);
-+#endif
-+ printk(KERN_INFO "IPP2P v%s unloaded\n", IPP2P_VERSION);
-+}
-+
-+module_init(init);
-+module_exit(fini);
-+
-+
-diff -Naur linux-3.10.9.org/net/ipv4/netfilter/Kconfig linux-3.10.9/net/ipv4/netfilter/Kconfig
---- linux-3.10.9.org/net/ipv4/netfilter/Kconfig 2013-08-21 00:40:47.000000000 +0200
-+++ linux-3.10.9/net/ipv4/netfilter/Kconfig 2013-08-25 16:00:53.398088168 +0200
-@@ -320,5 +320,15 @@
-
- endif # IP_NF_ARPTABLES
-
-+config IP_NF_MATCH_IPP2P
-+ tristate 'IPP2P match support'
-+ depends on IP_NF_IPTABLES
-+ help
-+ This option makes possible to match some P2P packets
-+ therefore helps controlling such traffic.
-+
-+ If you want to compile it as a module, say M here and read
-+ <file:Documentation/modules.txt>. If unsure, say `N'.
-+
- endmenu
-
-diff -Naur linux-3.10.9.org/net/ipv4/netfilter/Makefile linux-3.10.9/net/ipv4/netfilter/Makefile
---- linux-3.10.9.org/net/ipv4/netfilter/Makefile 2013-08-21 00:40:47.000000000 +0200
-+++ linux-3.10.9/net/ipv4/netfilter/Makefile 2013-08-25 16:03:21.634750053 +0200
-@@ -40,6 +40,7 @@
- # matches
- obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
- obj-$(CONFIG_IP_NF_MATCH_RPFILTER) += ipt_rpfilter.o
-+obj-$(CONFIG_IP_NF_MATCH_IPP2P) += ipt_ipp2p.o
-
- # targets
- obj-$(CONFIG_IP_NF_TARGET_CLUSTERIP) += ipt_CLUSTERIP.o
+++ /dev/null
-diff -Naur linux-3.10.30.org/sound/pci/cs5535audio/cs5535audio.c linux-3.10.30/sound/pci/cs5535audio/cs5535audio.c
---- linux-3.10.30.org/sound/pci/cs5535audio/cs5535audio.c 2014-02-13 22:48:15.000000000 +0100
-+++ linux-3.10.30/sound/pci/cs5535audio/cs5535audio.c 2014-02-15 12:45:49.545688703 +0100
-@@ -83,8 +83,8 @@
- break;
- udelay(1);
- } while (--timeout);
-- if (!timeout)
-- snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
-+// if (!timeout)
-+// snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
- }
-
- static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au,
-@@ -108,9 +108,9 @@
- break;
- udelay(1);
- } while (--timeout);
-- if (!timeout)
-- snd_printk(KERN_ERR "Failure reading codec reg 0x%x,"
-- "Last value=0x%x\n", reg, val);
-+// if (!timeout)
-+// snd_printk(KERN_ERR "Failure reading codec reg 0x%x,"
-+// "Last value=0x%x\n", reg, val);
-
- return (unsigned short) val;
- }
+++ /dev/null
-diff -Naur linux-3.10.37.org/drivers/net/wireless/rt2x00/rt2800usb.c linux-3.10.37/drivers/net/wireless/rt2x00/rt2800usb.c
---- linux-3.10.37.org/drivers/net/wireless/rt2x00/rt2800usb.c 2014-04-14 15:42:31.000000000 +0200
-+++ linux-3.10.37/drivers/net/wireless/rt2x00/rt2800usb.c 2014-04-25 10:25:12.796630526 +0200
-@@ -1175,6 +1175,7 @@
- /* Belkin */
- { USB_DEVICE(0x050d, 0x945b) },
- /* D-Link */
-+ { USB_DEVICE(0x2001, 0x3317) },
- { USB_DEVICE(0x2001, 0x3c17) },
- /* Panasonic */
- { USB_DEVICE(0x083a, 0xb511) },
+++ /dev/null
-diff -Naur linux-3.10.55.org/drivers/net/wireless/rt2x00/rt2800usb.c linux-3.10.55/drivers/net/wireless/rt2x00/rt2800usb.c
---- linux-3.10.55.org/drivers/net/wireless/rt2x00/rt2800usb.c 2014-09-17 18:04:18.000000000 +0200
-+++ linux-3.10.55/drivers/net/wireless/rt2x00/rt2800usb.c 2014-10-05 19:25:25.070972490 +0200
-@@ -128,7 +128,7 @@
-
- tout = time_after(jiffies, entry->last_action + msecs_to_jiffies(100));
- if (unlikely(tout))
-- rt2x00_warn(entry->queue->rt2x00dev,
-+ rt2x00_dbg(entry->queue->rt2x00dev,
- "TX status timeout for entry %d in queue %d\n",
- entry->entry_idx, entry->queue->qid);
- return tout;
-@@ -569,7 +569,7 @@
- queue = rt2x00queue_get_tx_queue(rt2x00dev, qid);
-
- if (unlikely(rt2x00queue_empty(queue))) {
-- rt2x00_warn(rt2x00dev, "Got TX status for an empty queue %u, dropping\n",
-+ rt2x00_dbg(rt2x00dev, "Got TX status for an empty queue %u, dropping\n",
- qid);
- break;
- }
-@@ -578,7 +578,7 @@
-
- if (unlikely(test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
- !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))) {
-- rt2x00_warn(rt2x00dev, "Data pending for entry %u in queue %u\n",
-+ rt2x00_dbg(rt2x00dev, "Data pending for entry %u in queue %u\n",
- entry->entry_idx, qid);
- break;
- }
+++ /dev/null
-diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig
-index dd12a1e..969cd15 100644
---- a/drivers/media/dvb-frontends/Kconfig
-+++ b/drivers/media/dvb-frontends/Kconfig
-@@ -726,6 +726,20 @@ config DVB_TDA665x
- Currently supported tuners:
- * Panasonic ENV57H12D5 (ET-50DT)
-
-+config DVB_DVBSKY_M88DS3103
-+ tristate "Montage M88DS3103 based(DVBSky)"
-+ depends on DVB_CORE && I2C
-+ default m if !MEDIA_SUBDRV_AUTOSELECT
-+ help
-+ A DVB-S/S2 tuner module. Say Y when you want to support this frontend.
-+
-+config DVB_M88DC2800
-+ tristate "Montage M88DC2800 based"
-+ depends on DVB_CORE && I2C
-+ default m if !MEDIA_SUBDRV_AUTOSELECT
-+ help
-+ A DVB-C tuner module. Say Y when you want to support this frontend.
-+
- config DVB_IX2505V
- tristate "Sharp IX2505V silicon tuner"
- depends on DVB_CORE && I2C
-diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
-index 0c75a6a..37c57f9 100644
---- a/drivers/media/dvb-frontends/Makefile
-+++ b/drivers/media/dvb-frontends/Makefile
-@@ -106,3 +106,5 @@ obj-$(CONFIG_DVB_RTL2832) += rtl2832.o
- obj-$(CONFIG_DVB_M88RS2000) += m88rs2000.o
- obj-$(CONFIG_DVB_AF9033) += af9033.o
-
-+obj-$(CONFIG_DVB_DVBSKY_M88DS3103) += dvbsky_m88ds3103.o
-+obj-$(CONFIG_DVB_M88DC2800) += m88dc2800.o
-diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103.c b/drivers/media/dvb-frontends/dvbsky_m88ds3103.c
-new file mode 100644
-index 0000000..5ad1157
---- /dev/null
-+++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103.c
-@@ -0,0 +1,1723 @@
-+/*
-+ Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
-+
-+ Copyright (C) 2011 Max nibble<nibble.max@gmail.com>
-+ Copyright (C) 2010 Montage Technology<www.montage-tech.com>
-+ Copyright (C) 2009 Konstantin Dimitrov.
-+
-+ This program is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2 of the License, or
-+ (at your option) any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with this program; if not, write to the Free Software
-+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/slab.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/firmware.h>
-+
-+#include "dvb_frontend.h"
-+#include "dvbsky_m88ds3103.h"
-+#include "dvbsky_m88ds3103_priv.h"
-+
-+static int debug;
-+module_param(debug, int, 0644);
-+MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
-+
-+#define dprintk(args...) \
-+ do { \
-+ if (debug) \
-+ printk(KERN_INFO "m88ds3103: " args); \
-+ } while (0)
-+
-+#define _AUTO_S2_
-+
-+/*demod register operations.*/
-+static int m88ds3103_writereg(struct m88ds3103_state *state, int reg, int data)
-+{
-+ u8 buf[] = { reg, data };
-+ struct i2c_msg msg = { .addr = state->config->demod_address,
-+ .flags = 0, .buf = buf, .len = 2 };
-+ int err;
-+
-+ if (debug > 1)
-+ printk("m88ds3103: %s: write reg 0x%02x, value 0x%02x\n",
-+ __func__, reg, data);
-+
-+ err = i2c_transfer(state->i2c, &msg, 1);
-+ if (err != 1) {
-+ printk(KERN_ERR "%s: writereg error(err == %i, reg == 0x%02x,"
-+ " value == 0x%02x)\n", __func__, err, reg, data);
-+ return -EREMOTEIO;
-+ }
-+ return 0;
-+}
-+
-+static int m88ds3103_readreg(struct m88ds3103_state *state, u8 reg)
-+{
-+ int ret;
-+ u8 b0[] = { reg };
-+ u8 b1[] = { 0 };
-+ struct i2c_msg msg[] = {
-+ { .addr = state->config->demod_address, .flags = 0,
-+ .buf = b0, .len = 1 },
-+ { .addr = state->config->demod_address, .flags = I2C_M_RD,
-+ .buf = b1, .len = 1 }
-+ };
-+ ret = i2c_transfer(state->i2c, msg, 2);
-+
-+ if (ret != 2) {
-+ printk(KERN_ERR "%s: reg=0x%x (error=%d)\n",
-+ __func__, reg, ret);
-+ return ret;
-+ }
-+
-+ if (debug > 1)
-+ printk(KERN_INFO "m88ds3103: read reg 0x%02x, value 0x%02x\n",
-+ reg, b1[0]);
-+
-+ return b1[0];
-+}
-+
-+/*tuner register operations.*/
-+static int m88ds3103_tuner_writereg(struct m88ds3103_state *state, int reg, int data)
-+{
-+ u8 buf[] = { reg, data };
-+ struct i2c_msg msg = { .addr = 0x60,
-+ .flags = 0, .buf = buf, .len = 2 };
-+ int err;
-+
-+ m88ds3103_writereg(state, 0x03, 0x11);
-+ err = i2c_transfer(state->i2c, &msg, 1);
-+
-+ if (err != 1) {
-+ printk("%s: writereg error(err == %i, reg == 0x%02x,"
-+ " value == 0x%02x)\n", __func__, err, reg, data);
-+ return -EREMOTEIO;
-+ }
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_tuner_readreg(struct m88ds3103_state *state, u8 reg)
-+{
-+ int ret;
-+ u8 b0[] = { reg };
-+ u8 b1[] = { 0 };
-+ struct i2c_msg msg[] = {
-+ { .addr = 0x60, .flags = 0,
-+ .buf = b0, .len = 1 },
-+ { .addr = 0x60, .flags = I2C_M_RD,
-+ .buf = b1, .len = 1 }
-+ };
-+
-+ m88ds3103_writereg(state, 0x03, (0x11 + state->config->tuner_readstops));
-+ ret = i2c_transfer(state->i2c, msg, 2);
-+
-+ if (ret != 2) {
-+ printk(KERN_ERR "%s: reg=0x%x(error=%d)\n", __func__, reg, ret);
-+ return ret;
-+ }
-+
-+ return b1[0];
-+}
-+
-+/* Bulk demod I2C write, for firmware download. */
-+static int m88ds3103_writeregN(struct m88ds3103_state *state, int reg,
-+ const u8 *data, u16 len)
-+{
-+ int ret = -EREMOTEIO;
-+ struct i2c_msg msg;
-+ u8 *buf;
-+
-+ buf = kmalloc(len + 1, GFP_KERNEL);
-+ if (buf == NULL) {
-+ printk("Unable to kmalloc\n");
-+ ret = -ENOMEM;
-+ goto error;
-+ }
-+
-+ *(buf) = reg;
-+ memcpy(buf + 1, data, len);
-+
-+ msg.addr = state->config->demod_address;
-+ msg.flags = 0;
-+ msg.buf = buf;
-+ msg.len = len + 1;
-+
-+ if (debug > 1)
-+ printk(KERN_INFO "m88ds3103: %s: write regN 0x%02x, len = %d\n",
-+ __func__, reg, len);
-+
-+ ret = i2c_transfer(state->i2c, &msg, 1);
-+ if (ret != 1) {
-+ printk(KERN_ERR "%s: writereg error(err == %i, reg == 0x%02x\n",
-+ __func__, ret, reg);
-+ ret = -EREMOTEIO;
-+ }
-+
-+error:
-+ kfree(buf);
-+
-+ return ret;
-+}
-+
-+static int m88ds3103_load_firmware(struct dvb_frontend *fe)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ const struct firmware *fw;
-+ int i, ret = 0;
-+
-+ dprintk("%s()\n", __func__);
-+
-+ if (state->skip_fw_load)
-+ return 0;
-+ /* Load firmware */
-+ /* request the firmware, this will block until someone uploads it */
-+ if(state->demod_id == DS3000_ID){
-+ printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
-+ DS3000_DEFAULT_FIRMWARE);
-+ ret = request_firmware(&fw, DS3000_DEFAULT_FIRMWARE,
-+ state->i2c->dev.parent);
-+ }else if(state->demod_id == DS3103_ID){
-+ printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
-+ DS3103_DEFAULT_FIRMWARE);
-+ ret = request_firmware(&fw, DS3103_DEFAULT_FIRMWARE,
-+ state->i2c->dev.parent);
-+ }
-+
-+ printk(KERN_INFO "%s: Waiting for firmware upload(2)...\n", __func__);
-+ if (ret) {
-+ printk(KERN_ERR "%s: No firmware uploaded (timeout or file not "
-+ "found?)\n", __func__);
-+ return ret;
-+ }
-+
-+ /* Make sure we don't recurse back through here during loading */
-+ state->skip_fw_load = 1;
-+
-+ dprintk("Firmware is %zu bytes (%02x %02x .. %02x %02x)\n",
-+ fw->size,
-+ fw->data[0],
-+ fw->data[1],
-+ fw->data[fw->size - 2],
-+ fw->data[fw->size - 1]);
-+
-+ /* stop internal mcu. */
-+ m88ds3103_writereg(state, 0xb2, 0x01);
-+ /* split firmware to download.*/
-+ for(i = 0; i < FW_DOWN_LOOP; i++){
-+ ret = m88ds3103_writeregN(state, 0xb0, &(fw->data[FW_DOWN_SIZE*i]), FW_DOWN_SIZE);
-+ if(ret != 1) break;
-+ }
-+ /* start internal mcu. */
-+ if(ret == 1)
-+ m88ds3103_writereg(state, 0xb2, 0x00);
-+
-+ release_firmware(fw);
-+
-+ dprintk("%s: Firmware upload %s\n", __func__,
-+ ret == 1 ? "complete" : "failed");
-+
-+ if(ret == 1) ret = 0;
-+
-+ /* Ensure firmware is always loaded if required */
-+ state->skip_fw_load = 0;
-+
-+ return ret;
-+}
-+
-+
-+static int m88ds3103_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ u8 data;
-+
-+ dprintk("%s(%d)\n", __func__, voltage);
-+
-+ dprintk("m88ds3103:pin_ctrl = (%02x)\n", state->config->pin_ctrl);
-+
-+ if(state->config->set_voltage)
-+ state->config->set_voltage(fe, voltage);
-+
-+ data = m88ds3103_readreg(state, 0xa2);
-+
-+ if(state->config->pin_ctrl & 0x80){ /*If control pin is assigned.*/
-+ data &= ~0x03; /* bit0 V/H, bit1 off/on */
-+ if(state->config->pin_ctrl & 0x02)
-+ data |= 0x02;
-+
-+ switch (voltage) {
-+ case SEC_VOLTAGE_18:
-+ if((state->config->pin_ctrl & 0x01) == 0)
-+ data |= 0x01;
-+ break;
-+ case SEC_VOLTAGE_13:
-+ if(state->config->pin_ctrl & 0x01)
-+ data |= 0x01;
-+ break;
-+ case SEC_VOLTAGE_OFF:
-+ if(state->config->pin_ctrl & 0x02)
-+ data &= ~0x02;
-+ else
-+ data |= 0x02;
-+ break;
-+ }
-+ }
-+
-+ m88ds3103_writereg(state, 0xa2, data);
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_read_status(struct dvb_frontend *fe, fe_status_t* status)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ int lock = 0;
-+
-+ *status = 0;
-+
-+ switch (state->delivery_system){
-+ case SYS_DVBS:
-+ lock = m88ds3103_readreg(state, 0xd1);
-+ dprintk("%s: SYS_DVBS status=%x.\n", __func__, lock);
-+
-+ if ((lock & 0x07) == 0x07){
-+ /*if((m88ds3103_readreg(state, 0x0d) & 0x07) == 0x07)*/
-+ *status = FE_HAS_SIGNAL | FE_HAS_CARRIER
-+ | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
-+
-+ }
-+ break;
-+ case SYS_DVBS2:
-+ lock = m88ds3103_readreg(state, 0x0d);
-+ dprintk("%s: SYS_DVBS2 status=%x.\n", __func__, lock);
-+
-+ if ((lock & 0x8f) == 0x8f)
-+ *status = FE_HAS_SIGNAL | FE_HAS_CARRIER
-+ | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
-+
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_read_ber(struct dvb_frontend *fe, u32* ber)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ u8 tmp1, tmp2, tmp3;
-+ u32 ldpc_frame_cnt, pre_err_packags, code_rate_fac = 0;
-+
-+ dprintk("%s()\n", __func__);
-+
-+ switch (state->delivery_system) {
-+ case SYS_DVBS:
-+ m88ds3103_writereg(state, 0xf9, 0x04);
-+ tmp3 = m88ds3103_readreg(state, 0xf8);
-+ if ((tmp3&0x10) == 0){
-+ tmp1 = m88ds3103_readreg(state, 0xf7);
-+ tmp2 = m88ds3103_readreg(state, 0xf6);
-+ tmp3 |= 0x10;
-+ m88ds3103_writereg(state, 0xf8, tmp3);
-+ state->preBer = (tmp1<<8) | tmp2;
-+ }
-+ break;
-+ case SYS_DVBS2:
-+ tmp1 = m88ds3103_readreg(state, 0x7e) & 0x0f;
-+ switch(tmp1){
-+ case 0: code_rate_fac = 16008 - 80; break;
-+ case 1: code_rate_fac = 21408 - 80; break;
-+ case 2: code_rate_fac = 25728 - 80; break;
-+ case 3: code_rate_fac = 32208 - 80; break;
-+ case 4: code_rate_fac = 38688 - 80; break;
-+ case 5: code_rate_fac = 43040 - 80; break;
-+ case 6: code_rate_fac = 48408 - 80; break;
-+ case 7: code_rate_fac = 51648 - 80; break;
-+ case 8: code_rate_fac = 53840 - 80; break;
-+ case 9: code_rate_fac = 57472 - 80; break;
-+ case 10: code_rate_fac = 58192 - 80; break;
-+ }
-+
-+ tmp1 = m88ds3103_readreg(state, 0xd7) & 0xff;
-+ tmp2 = m88ds3103_readreg(state, 0xd6) & 0xff;
-+ tmp3 = m88ds3103_readreg(state, 0xd5) & 0xff;
-+ ldpc_frame_cnt = (tmp1 << 16) | (tmp2 << 8) | tmp3;
-+
-+ tmp1 = m88ds3103_readreg(state, 0xf8) & 0xff;
-+ tmp2 = m88ds3103_readreg(state, 0xf7) & 0xff;
-+ pre_err_packags = tmp1<<8 | tmp2;
-+
-+ if (ldpc_frame_cnt > 1000){
-+ m88ds3103_writereg(state, 0xd1, 0x01);
-+ m88ds3103_writereg(state, 0xf9, 0x01);
-+ m88ds3103_writereg(state, 0xf9, 0x00);
-+ m88ds3103_writereg(state, 0xd1, 0x00);
-+ state->preBer = pre_err_packags;
-+ }
-+ break;
-+ default:
-+ break;
-+ }
-+ *ber = state->preBer;
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_read_signal_strength(struct dvb_frontend *fe,
-+ u16 *signal_strength)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ u16 gain;
-+ u8 gain1, gain2, gain3 = 0;
-+
-+ dprintk("%s()\n", __func__);
-+
-+ gain1 = m88ds3103_tuner_readreg(state, 0x3d) & 0x1f;
-+ dprintk("%s: gain1 = 0x%02x \n", __func__, gain1);
-+
-+ if (gain1 > 15) gain1 = 15;
-+ gain2 = m88ds3103_tuner_readreg(state, 0x21) & 0x1f;
-+ dprintk("%s: gain2 = 0x%02x \n", __func__, gain2);
-+
-+ if(state->tuner_id == TS2022_ID){
-+ gain3 = (m88ds3103_tuner_readreg(state, 0x66)>>3) & 0x07;
-+ dprintk("%s: gain3 = 0x%02x \n", __func__, gain3);
-+
-+ if (gain2 > 16) gain2 = 16;
-+ if (gain2 < 2) gain2 = 2;
-+ if (gain3 > 6) gain3 = 6;
-+ }else{
-+ if (gain2 > 13) gain2 = 13;
-+ gain3 = 0;
-+ }
-+
-+ gain = gain1*23 + gain2*35 + gain3*29;
-+ *signal_strength = 60000 - gain*55;
-+
-+ return 0;
-+}
-+
-+
-+static int m88ds3103_read_snr(struct dvb_frontend *fe, u16 *p_snr)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ u8 val, npow1, npow2, spow1, cnt;
-+ u16 tmp, snr;
-+ u32 npow, spow, snr_total;
-+ static const u16 mes_log10[] ={
-+ 0, 3010, 4771, 6021, 6990, 7781, 8451, 9031, 9542, 10000,
-+ 10414, 10792, 11139, 11461, 11761, 12041, 12304, 12553, 12788, 13010,
-+ 13222, 13424, 13617, 13802, 13979, 14150, 14314, 14472, 14624, 14771,
-+ 14914, 15052, 15185, 15315, 15441, 15563, 15682, 15798, 15911, 16021,
-+ 16128, 16232, 16335, 16435, 16532, 16628, 16721, 16812, 16902, 16990,
-+ 17076, 17160, 17243, 17324, 17404, 17482, 17559, 17634, 17709, 17782,
-+ 17853, 17924, 17993, 18062, 18129, 18195, 18261, 18325, 18388, 18451,
-+ 18513, 18573, 18633, 18692, 18751, 18808, 18865, 18921, 18976, 19031
-+ };
-+ static const u16 mes_loge[] ={
-+ 0, 6931, 10986, 13863, 16094, 17918, 19459, 20794, 21972, 23026,
-+ 23979, 24849, 25649, 26391, 27081, 27726, 28332, 28904, 29444, 29957,
-+ 30445, 30910, 31355, 31781, 32189, 32581, 32958, 33322, 33673, 34012,
-+ 34340, 34657,
-+ };
-+
-+ dprintk("%s()\n", __func__);
-+
-+ snr = 0;
-+
-+ switch (state->delivery_system){
-+ case SYS_DVBS:
-+ cnt = 10; snr_total = 0;
-+ while(cnt > 0){
-+ val = m88ds3103_readreg(state, 0xff);
-+ snr_total += val;
-+ cnt--;
-+ }
-+ tmp = (u16)(snr_total/80);
-+ if(tmp > 0){
-+ if (tmp > 32) tmp = 32;
-+ snr = (mes_loge[tmp - 1] * 100) / 45;
-+ }else{
-+ snr = 0;
-+ }
-+ break;
-+ case SYS_DVBS2:
-+ cnt = 10; npow = 0; spow = 0;
-+ while(cnt >0){
-+ npow1 = m88ds3103_readreg(state, 0x8c) & 0xff;
-+ npow2 = m88ds3103_readreg(state, 0x8d) & 0xff;
-+ npow += (((npow1 & 0x3f) + (u16)(npow2 << 6)) >> 2);
-+
-+ spow1 = m88ds3103_readreg(state, 0x8e) & 0xff;
-+ spow += ((spow1 * spow1) >> 1);
-+ cnt--;
-+ }
-+ npow /= 10; spow /= 10;
-+ if(spow == 0){
-+ snr = 0;
-+ }else if(npow == 0){
-+ snr = 19;
-+ }else{
-+ if(spow > npow){
-+ tmp = (u16)(spow / npow);
-+ if (tmp > 80) tmp = 80;
-+ snr = mes_log10[tmp - 1]*3;
-+ }else{
-+ tmp = (u16)(npow / spow);
-+ if (tmp > 80) tmp = 80;
-+ snr = -(mes_log10[tmp - 1] / 1000);
-+ }
-+ }
-+ break;
-+ default:
-+ break;
-+ }
-+ *p_snr = snr;
-+
-+ return 0;
-+}
-+
-+
-+static int m88ds3103_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ u8 tmp1, tmp2, tmp3, data;
-+
-+ dprintk("%s()\n", __func__);
-+
-+ switch (state->delivery_system) {
-+ case SYS_DVBS:
-+ data = m88ds3103_readreg(state, 0xf8);
-+ data |= 0x40;
-+ m88ds3103_writereg(state, 0xf8, data);
-+ tmp1 = m88ds3103_readreg(state, 0xf5);
-+ tmp2 = m88ds3103_readreg(state, 0xf4);
-+ *ucblocks = (tmp1 <<8) | tmp2;
-+ data &= ~0x20;
-+ m88ds3103_writereg(state, 0xf8, data);
-+ data |= 0x20;
-+ m88ds3103_writereg(state, 0xf8, data);
-+ data &= ~0x40;
-+ m88ds3103_writereg(state, 0xf8, data);
-+ break;
-+ case SYS_DVBS2:
-+ tmp1 = m88ds3103_readreg(state, 0xda);
-+ tmp2 = m88ds3103_readreg(state, 0xd9);
-+ tmp3 = m88ds3103_readreg(state, 0xd8);
-+ *ucblocks = (tmp1 <<16)|(tmp2 <<8)|tmp3;
-+ data = m88ds3103_readreg(state, 0xd1);
-+ data |= 0x01;
-+ m88ds3103_writereg(state, 0xd1, data);
-+ data &= ~0x01;
-+ m88ds3103_writereg(state, 0xd1, data);
-+ break;
-+ default:
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static int m88ds3103_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ u8 data_a1, data_a2;
-+
-+ dprintk("%s(%d)\n", __func__, tone);
-+ if ((tone != SEC_TONE_ON) && (tone != SEC_TONE_OFF)) {
-+ printk(KERN_ERR "%s: Invalid, tone=%d\n", __func__, tone);
-+ return -EINVAL;
-+ }
-+
-+ data_a1 = m88ds3103_readreg(state, 0xa1);
-+ data_a2 = m88ds3103_readreg(state, 0xa2);
-+ if(state->demod_id == DS3103_ID)
-+ data_a2 &= 0xdf; /* Normal mode */
-+ switch (tone) {
-+ case SEC_TONE_ON:
-+ dprintk("%s: SEC_TONE_ON\n", __func__);
-+ data_a1 |= 0x04;
-+ data_a1 &= ~0x03;
-+ data_a1 &= ~0x40;
-+ data_a2 &= ~0xc0;
-+ break;
-+ case SEC_TONE_OFF:
-+ dprintk("%s: SEC_TONE_OFF\n", __func__);
-+ data_a2 &= ~0xc0;
-+ data_a2 |= 0x80;
-+ break;
-+ }
-+ m88ds3103_writereg(state, 0xa2, data_a2);
-+ m88ds3103_writereg(state, 0xa1, data_a1);
-+ return 0;
-+}
-+
-+static int m88ds3103_send_diseqc_msg(struct dvb_frontend *fe,
-+ struct dvb_diseqc_master_cmd *d)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ int i, ret = 0;
-+ u8 tmp, time_out;
-+
-+ /* Dump DiSEqC message */
-+ if (debug) {
-+ printk(KERN_INFO "m88ds3103: %s(", __func__);
-+ for (i = 0 ; i < d->msg_len ;) {
-+ printk(KERN_INFO "0x%02x", d->msg[i]);
-+ if (++i < d->msg_len)
-+ printk(KERN_INFO ", ");
-+ }
-+ }
-+
-+ tmp = m88ds3103_readreg(state, 0xa2);
-+ tmp &= ~0xc0;
-+ if(state->demod_id == DS3103_ID)
-+ tmp &= ~0x20;
-+ m88ds3103_writereg(state, 0xa2, tmp);
-+
-+ for (i = 0; i < d->msg_len; i ++)
-+ m88ds3103_writereg(state, (0xa3+i), d->msg[i]);
-+
-+ tmp = m88ds3103_readreg(state, 0xa1);
-+ tmp &= ~0x38;
-+ tmp &= ~0x40;
-+ tmp |= ((d->msg_len-1) << 3) | 0x07;
-+ tmp &= ~0x80;
-+ m88ds3103_writereg(state, 0xa1, tmp);
-+ /* 1.5 * 9 * 8 = 108ms */
-+ time_out = 150;
-+ while (time_out > 0){
-+ msleep(10);
-+ time_out -= 10;
-+ tmp = m88ds3103_readreg(state, 0xa1);
-+ if ((tmp & 0x40) == 0)
-+ break;
-+ }
-+ if (time_out == 0){
-+ tmp = m88ds3103_readreg(state, 0xa1);
-+ tmp &= ~0x80;
-+ tmp |= 0x40;
-+ m88ds3103_writereg(state, 0xa1, tmp);
-+ ret = 1;
-+ }
-+ tmp = m88ds3103_readreg(state, 0xa2);
-+ tmp &= ~0xc0;
-+ tmp |= 0x80;
-+ m88ds3103_writereg(state, 0xa2, tmp);
-+ return ret;
-+}
-+
-+
-+static int m88ds3103_diseqc_send_burst(struct dvb_frontend *fe,
-+ fe_sec_mini_cmd_t burst)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ u8 val, time_out;
-+
-+ dprintk("%s()\n", __func__);
-+
-+ val = m88ds3103_readreg(state, 0xa2);
-+ val &= ~0xc0;
-+ if(state->demod_id == DS3103_ID)
-+ val &= 0xdf; /* Normal mode */
-+ m88ds3103_writereg(state, 0xa2, val);
-+ /* DiSEqC burst */
-+ if (burst == SEC_MINI_B)
-+ m88ds3103_writereg(state, 0xa1, 0x01);
-+ else
-+ m88ds3103_writereg(state, 0xa1, 0x02);
-+
-+ msleep(13);
-+
-+ time_out = 5;
-+ do{
-+ val = m88ds3103_readreg(state, 0xa1);
-+ if ((val & 0x40) == 0)
-+ break;
-+ msleep(1);
-+ time_out --;
-+ } while (time_out > 0);
-+
-+ val = m88ds3103_readreg(state, 0xa2);
-+ val &= ~0xc0;
-+ val |= 0x80;
-+ m88ds3103_writereg(state, 0xa2, val);
-+
-+ return 0;
-+}
-+
-+static void m88ds3103_release(struct dvb_frontend *fe)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+
-+ dprintk("%s\n", __func__);
-+ kfree(state);
-+}
-+
-+static int m88ds3103_check_id(struct m88ds3103_state *state)
-+{
-+ int val_00, val_01;
-+
-+ /*check demod id*/
-+ val_01 = m88ds3103_readreg(state, 0x01);
-+ printk(KERN_INFO "DS3000 chip version: %x attached.\n", val_01);
-+
-+ if(val_01 == 0xD0)
-+ state->demod_id = DS3103_ID;
-+ else if(val_01 == 0xC0)
-+ state->demod_id = DS3000_ID;
-+ else
-+ state->demod_id = UNKNOW_ID;
-+
-+ /*check tuner id*/
-+ val_00 = m88ds3103_tuner_readreg(state, 0x00);
-+ printk(KERN_INFO "TS202x chip version[1]: %x attached.\n", val_00);
-+ val_00 &= 0x03;
-+ if(val_00 == 0)
-+ {
-+ m88ds3103_tuner_writereg(state, 0x00, 0x01);
-+ msleep(3);
-+ }
-+ m88ds3103_tuner_writereg(state, 0x00, 0x03);
-+ msleep(5);
-+
-+ val_00 = m88ds3103_tuner_readreg(state, 0x00);
-+ printk(KERN_INFO "TS202x chip version[2]: %x attached.\n", val_00);
-+ val_00 &= 0xff;
-+ if((val_00 == 0x01) || (val_00 == 0x41) || (val_00 == 0x81))
-+ state->tuner_id = TS2020_ID;
-+ else if(((val_00 & 0xc0)== 0xc0) || (val_00 == 0x83))
-+ state->tuner_id = TS2022_ID;
-+ else
-+ state->tuner_id = UNKNOW_ID;
-+
-+ return state->demod_id;
-+}
-+
-+static struct dvb_frontend_ops m88ds3103_ops;
-+static int m88ds3103_initilaze(struct dvb_frontend *fe);
-+
-+struct dvb_frontend *dvbsky_m88ds3103_attach(const struct dvbsky_m88ds3103_config *config,
-+ struct i2c_adapter *i2c)
-+{
-+ struct m88ds3103_state *state = NULL;
-+
-+ dprintk("%s\n", __func__);
-+
-+ /* allocate memory for the internal state */
-+ state = kzalloc(sizeof(struct m88ds3103_state), GFP_KERNEL);
-+ if (state == NULL) {
-+ printk(KERN_ERR "Unable to kmalloc\n");
-+ goto error2;
-+ }
-+
-+ state->config = config;
-+ state->i2c = i2c;
-+ state->preBer = 0xffff;
-+ state->delivery_system = SYS_DVBS; /*Default to DVB-S.*/
-+
-+ /* check demod id */
-+ if(m88ds3103_check_id(state) == UNKNOW_ID){
-+ printk(KERN_ERR "Unable to find Montage chip\n");
-+ goto error3;
-+ }
-+
-+ memcpy(&state->frontend.ops, &m88ds3103_ops,
-+ sizeof(struct dvb_frontend_ops));
-+ state->frontend.demodulator_priv = state;
-+
-+ m88ds3103_initilaze(&state->frontend);
-+
-+ return &state->frontend;
-+
-+error3:
-+ kfree(state);
-+error2:
-+ return NULL;
-+}
-+EXPORT_SYMBOL(dvbsky_m88ds3103_attach);
-+
-+static int m88ds3103_set_carrier_offset(struct dvb_frontend *fe,
-+ s32 carrier_offset_khz)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ s32 tmp;
-+
-+ tmp = carrier_offset_khz;
-+ tmp *= 65536;
-+
-+ tmp = (2*tmp + MT_FE_MCLK_KHZ) / (2*MT_FE_MCLK_KHZ);
-+
-+ if (tmp < 0)
-+ tmp += 65536;
-+
-+ m88ds3103_writereg(state, 0x5f, tmp >> 8);
-+ m88ds3103_writereg(state, 0x5e, tmp & 0xff);
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_set_symrate(struct dvb_frontend *fe)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-+ u16 value;
-+
-+ value = (((c->symbol_rate / 1000) << 15) + (MT_FE_MCLK_KHZ / 4)) / (MT_FE_MCLK_KHZ / 2);
-+ m88ds3103_writereg(state, 0x61, value & 0x00ff);
-+ m88ds3103_writereg(state, 0x62, (value & 0xff00) >> 8);
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_set_CCI(struct dvb_frontend *fe)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ u8 tmp;
-+
-+ tmp = m88ds3103_readreg(state, 0x56);
-+ tmp &= ~0x01;
-+ m88ds3103_writereg(state, 0x56, tmp);
-+
-+ tmp = m88ds3103_readreg(state, 0x76);
-+ tmp &= ~0x80;
-+ m88ds3103_writereg(state, 0x76, tmp);
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_init_reg(struct m88ds3103_state *state, const u8 *p_reg_tab, u32 size)
-+{
-+ u32 i;
-+
-+ for(i = 0; i < size; i+=2)
-+ m88ds3103_writereg(state, p_reg_tab[i], p_reg_tab[i+1]);
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_get_locked_sym_rate(struct m88ds3103_state *state, u32 *sym_rate_KSs)
-+{
-+ u16 tmp;
-+ u32 sym_rate_tmp;
-+ u8 val_0x6d, val_0x6e;
-+
-+ val_0x6d = m88ds3103_readreg(state, 0x6d);
-+ val_0x6e = m88ds3103_readreg(state, 0x6e);
-+
-+ tmp = (u16)((val_0x6e<<8) | val_0x6d);
-+
-+ sym_rate_tmp = (u32)(tmp * MT_FE_MCLK_KHZ);
-+ sym_rate_tmp = (u32)(sym_rate_tmp / (1<<16));
-+ *sym_rate_KSs = sym_rate_tmp;
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_get_channel_info(struct m88ds3103_state *state, u8 *p_mode, u8 *p_coderate)
-+{
-+ u8 tmp, val_0x7E;
-+
-+ if(state->delivery_system == SYS_DVBS2){
-+ val_0x7E = m88ds3103_readreg(state, 0x7e);
-+ tmp = (u8)((val_0x7E&0xC0) >> 6);
-+ *p_mode = tmp;
-+ tmp = (u8)(val_0x7E & 0x0f);
-+ *p_coderate = tmp;
-+ } else {
-+ *p_mode = 0;
-+ tmp = m88ds3103_readreg(state, 0xe6);
-+ tmp = (u8)(tmp >> 5);
-+ *p_coderate = tmp;
-+ }
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_set_clock_ratio(struct m88ds3103_state *state)
-+{
-+ u8 val, mod_fac, tmp1, tmp2;
-+ u32 input_datarate, locked_sym_rate_KSs;
-+ u32 MClk_KHz = 96000;
-+ u8 mod_mode, code_rate, divid_ratio = 0;
-+
-+ locked_sym_rate_KSs = 0;
-+ m88ds3103_get_locked_sym_rate(state, &locked_sym_rate_KSs);
-+ if(locked_sym_rate_KSs == 0)
-+ return 0;
-+
-+ m88ds3103_get_channel_info(state, &mod_mode, &code_rate);
-+
-+ if (state->delivery_system == SYS_DVBS2)
-+ {
-+ switch(mod_mode) {
-+ case 1: mod_fac = 3; break;
-+ case 2: mod_fac = 4; break;
-+ case 3: mod_fac = 5; break;
-+ default: mod_fac = 2; break;
-+ }
-+
-+ switch(code_rate) {
-+ case 0: input_datarate = locked_sym_rate_KSs*mod_fac/8/4; break;
-+ case 1: input_datarate = locked_sym_rate_KSs*mod_fac/8/3; break;
-+ case 2: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/5; break;
-+ case 3: input_datarate = locked_sym_rate_KSs*mod_fac/8/2; break;
-+ case 4: input_datarate = locked_sym_rate_KSs*mod_fac*3/8/5; break;
-+ case 5: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/3; break;
-+ case 6: input_datarate = locked_sym_rate_KSs*mod_fac*3/8/4; break;
-+ case 7: input_datarate = locked_sym_rate_KSs*mod_fac*4/8/5; break;
-+ case 8: input_datarate = locked_sym_rate_KSs*mod_fac*5/8/6; break;
-+ case 9: input_datarate = locked_sym_rate_KSs*mod_fac*8/8/9; break;
-+ case 10: input_datarate = locked_sym_rate_KSs*mod_fac*9/8/10; break;
-+ default: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/3; break;
-+ }
-+
-+ if(state->demod_id == DS3000_ID)
-+ input_datarate = input_datarate * 115 / 100;
-+
-+ if(input_datarate < 4800) {tmp1 = 15;tmp2 = 15;} //4.8MHz TS clock
-+ else if(input_datarate < 4966) {tmp1 = 14;tmp2 = 15;} //4.966MHz TS clock
-+ else if(input_datarate < 5143) {tmp1 = 14;tmp2 = 14;} //5.143MHz TS clock
-+ else if(input_datarate < 5333) {tmp1 = 13;tmp2 = 14;} //5.333MHz TS clock
-+ else if(input_datarate < 5538) {tmp1 = 13;tmp2 = 13;} //5.538MHz TS clock
-+ else if(input_datarate < 5760) {tmp1 = 12;tmp2 = 13;} //5.76MHz TS clock allan 0809
-+ else if(input_datarate < 6000) {tmp1 = 12;tmp2 = 12;} //6MHz TS clock
-+ else if(input_datarate < 6260) {tmp1 = 11;tmp2 = 12;} //6.26MHz TS clock
-+ else if(input_datarate < 6545) {tmp1 = 11;tmp2 = 11;} //6.545MHz TS clock
-+ else if(input_datarate < 6857) {tmp1 = 10;tmp2 = 11;} //6.857MHz TS clock
-+ else if(input_datarate < 7200) {tmp1 = 10;tmp2 = 10;} //7.2MHz TS clock
-+ else if(input_datarate < 7578) {tmp1 = 9;tmp2 = 10;} //7.578MHz TS clock
-+ else if(input_datarate < 8000) {tmp1 = 9;tmp2 = 9;} //8MHz TS clock
-+ else if(input_datarate < 8470) {tmp1 = 8;tmp2 = 9;} //8.47MHz TS clock
-+ else if(input_datarate < 9000) {tmp1 = 8;tmp2 = 8;} //9MHz TS clock
-+ else if(input_datarate < 9600) {tmp1 = 7;tmp2 = 8;} //9.6MHz TS clock
-+ else if(input_datarate < 10285) {tmp1 = 7;tmp2 = 7;} //10.285MHz TS clock
-+ else if(input_datarate < 12000) {tmp1 = 6;tmp2 = 6;} //12MHz TS clock
-+ else if(input_datarate < 14400) {tmp1 = 5;tmp2 = 5;} //14.4MHz TS clock
-+ else if(input_datarate < 18000) {tmp1 = 4;tmp2 = 4;} //18MHz TS clock
-+ else {tmp1 = 3;tmp2 = 3;} //24MHz TS clock
-+
-+ if(state->demod_id == DS3000_ID) {
-+ val = (u8)((tmp1<<4) + tmp2);
-+ m88ds3103_writereg(state, 0xfe, val);
-+ } else {
-+ tmp1 = m88ds3103_readreg(state, 0x22);
-+ tmp2 = m88ds3103_readreg(state, 0x24);
-+
-+ tmp1 >>= 6;
-+ tmp1 &= 0x03;
-+ tmp2 >>= 6;
-+ tmp2 &= 0x03;
-+
-+ if((tmp1 == 0x00) && (tmp2 == 0x01))
-+ MClk_KHz = 144000;
-+ else if((tmp1 == 0x00) && (tmp2 == 0x03))
-+ MClk_KHz = 72000;
-+ else if((tmp1 == 0x01) && (tmp2 == 0x01))
-+ MClk_KHz = 115200;
-+ else if((tmp1 == 0x02) && (tmp2 == 0x01))
-+ MClk_KHz = 96000;
-+ else if((tmp1 == 0x03) && (tmp2 == 0x00))
-+ MClk_KHz = 192000;
-+ else
-+ return 0;
-+
-+ if(input_datarate < 5200) /*Max. 2011-12-23 11:55*/
-+ input_datarate = 5200;
-+
-+ if(input_datarate != 0)
-+ divid_ratio = (u8)(MClk_KHz / input_datarate);
-+ else
-+ divid_ratio = 0xFF;
-+
-+ if(divid_ratio > 128)
-+ divid_ratio = 128;
-+
-+ if(divid_ratio < 2)
-+ divid_ratio = 2;
-+
-+ tmp1 = (u8)(divid_ratio / 2);
-+ tmp2 = (u8)(divid_ratio / 2);
-+
-+ if((divid_ratio % 2) != 0)
-+ tmp2 += 1;
-+
-+ tmp1 -= 1;
-+ tmp2 -= 1;
-+
-+ tmp1 &= 0x3f;
-+ tmp2 &= 0x3f;
-+
-+ val = m88ds3103_readreg(state, 0xfe);
-+ val &= 0xF0;
-+ val |= (tmp2 >> 2) & 0x0f;
-+ m88ds3103_writereg(state, 0xfe, val);
-+
-+ val = (u8)((tmp2 & 0x03) << 6);
-+ val |= tmp1;
-+ m88ds3103_writereg(state, 0xea, val);
-+ }
-+ } else {
-+ mod_fac = 2;
-+
-+ switch(code_rate) {
-+ case 4: input_datarate = locked_sym_rate_KSs*mod_fac/2/8; break;
-+ case 3: input_datarate = locked_sym_rate_KSs*mod_fac*2/3/8; break;
-+ case 2: input_datarate = locked_sym_rate_KSs*mod_fac*3/4/8; break;
-+ case 1: input_datarate = locked_sym_rate_KSs*mod_fac*5/6/8; break;
-+ case 0: input_datarate = locked_sym_rate_KSs*mod_fac*7/8/8; break;
-+ default: input_datarate = locked_sym_rate_KSs*mod_fac*3/4/8; break;
-+ }
-+
-+ if(state->demod_id == DS3000_ID)
-+ input_datarate = input_datarate * 115 / 100;
-+
-+ if(input_datarate < 6857) {tmp1 = 7;tmp2 = 7;} //6.857MHz TS clock
-+ else if(input_datarate < 7384) {tmp1 = 6;tmp2 = 7;} //7.384MHz TS clock
-+ else if(input_datarate < 8000) {tmp1 = 6;tmp2 = 6;} //8MHz TS clock
-+ else if(input_datarate < 8727) {tmp1 = 5;tmp2 = 6;} //8.727MHz TS clock
-+ else if(input_datarate < 9600) {tmp1 = 5;tmp2 = 5;} //9.6MHz TS clock
-+ else if(input_datarate < 10666) {tmp1 = 4;tmp2 = 5;} //10.666MHz TS clock
-+ else if(input_datarate < 12000) {tmp1 = 4;tmp2 = 4;} //12MHz TS clock
-+ else if(input_datarate < 13714) {tmp1 = 3;tmp2 = 4;} //13.714MHz TS clock
-+ else if(input_datarate < 16000) {tmp1 = 3;tmp2 = 3;} //16MHz TS clock
-+ else if(input_datarate < 19200) {tmp1 = 2;tmp2 = 3;} //19.2MHz TS clock
-+ else {tmp1 = 2;tmp2 = 2;} //24MHz TS clock
-+
-+ if(state->demod_id == DS3000_ID) {
-+ val = m88ds3103_readreg(state, 0xfe);
-+ val &= 0xc0;
-+ val |= ((u8)((tmp1<<3) + tmp2));
-+ m88ds3103_writereg(state, 0xfe, val);
-+ } else {
-+ if(input_datarate < 5200) /*Max. 2011-12-23 11:55*/
-+ input_datarate = 5200;
-+
-+ if(input_datarate != 0)
-+ divid_ratio = (u8)(MClk_KHz / input_datarate);
-+ else
-+ divid_ratio = 0xFF;
-+
-+ if(divid_ratio > 128)
-+ divid_ratio = 128;
-+
-+ if(divid_ratio < 2)
-+ divid_ratio = 2;
-+
-+ tmp1 = (u8)(divid_ratio / 2);
-+ tmp2 = (u8)(divid_ratio / 2);
-+
-+ if((divid_ratio % 2) != 0)
-+ tmp2 += 1;
-+
-+ tmp1 -= 1;
-+ tmp2 -= 1;
-+
-+ tmp1 &= 0x3f;
-+ tmp2 &= 0x3f;
-+
-+ val = m88ds3103_readreg(state, 0xfe);
-+ val &= 0xF0;
-+ val |= (tmp2 >> 2) & 0x0f;
-+ m88ds3103_writereg(state, 0xfe, val);
-+
-+ val = (u8)((tmp2 & 0x03) << 6);
-+ val |= tmp1;
-+ m88ds3103_writereg(state, 0xea, val);
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int m88ds3103_demod_connect(struct dvb_frontend *fe, s32 carrier_offset_khz)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-+ u16 value;
-+ u8 val1,val2,data;
-+
-+ dprintk("connect delivery system = %d\n", state->delivery_system);
-+
-+ /* ds3000 global reset */
-+ m88ds3103_writereg(state, 0x07, 0x80);
-+ m88ds3103_writereg(state, 0x07, 0x00);
-+ /* ds3000 build-in uC reset */
-+ m88ds3103_writereg(state, 0xb2, 0x01);
-+ /* ds3000 software reset */
-+ m88ds3103_writereg(state, 0x00, 0x01);
-+
-+ switch (state->delivery_system) {
-+ case SYS_DVBS:
-+ /* initialise the demod in DVB-S mode */
-+ if(state->demod_id == DS3000_ID){
-+ m88ds3103_init_reg(state, ds3000_dvbs_init_tab, sizeof(ds3000_dvbs_init_tab));
-+
-+ value = m88ds3103_readreg(state, 0xfe);
-+ value &= 0xc0;
-+ value |= 0x1b;
-+ m88ds3103_writereg(state, 0xfe, value);
-+
-+ if(state->config->ci_mode)
-+ val1 = 0x80;
-+ else if(state->config->ts_mode)
-+ val1 = 0x60;
-+ else
-+ val1 = 0x20;
-+ m88ds3103_writereg(state, 0xfd, val1);
-+
-+ }else if(state->demod_id == DS3103_ID){
-+ m88ds3103_init_reg(state, ds3103_dvbs_init_tab, sizeof(ds3103_dvbs_init_tab));
-+
-+ /* set ts clock */
-+ if(state->config->ci_mode == 2){
-+ val1 = 6; val2 = 6;
-+ }else if(state->config->ts_mode == 0) {
-+ val1 = 3; val2 = 3;
-+ }else{
-+ val1 = 0; val2 = 0;
-+ }
-+ val1 -= 1; val2 -= 1;
-+ val1 &= 0x3f; val2 &= 0x3f;
-+ data = m88ds3103_readreg(state, 0xfe);
-+ data &= 0xf0;
-+ data |= (val2 >> 2) & 0x0f;
-+ m88ds3103_writereg(state, 0xfe, data);
-+ data = (val2 & 0x03) << 6;
-+ data |= val1;
-+ m88ds3103_writereg(state, 0xea, data);
-+
-+ m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
-+ m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));
-+
-+ /* set master clock */
-+ val1 = m88ds3103_readreg(state, 0x22);
-+ val2 = m88ds3103_readreg(state, 0x24);
-+
-+ val1 &= 0x3f;
-+ val2 &= 0x3f;
-+ val1 |= 0x80;
-+ val2 |= 0x40;
-+
-+ m88ds3103_writereg(state, 0x22, val1);
-+ m88ds3103_writereg(state, 0x24, val2);
-+
-+ if(state->config->ci_mode){
-+ if(state->config->ci_mode == 2)
-+ val1 = 0x43;
-+ else
-+ val1 = 0x03;
-+ }
-+ else if(state->config->ts_mode)
-+ val1 = 0x06;
-+ else
-+ val1 = 0x42;
-+ m88ds3103_writereg(state, 0xfd, val1);
-+ }
-+ break;
-+ case SYS_DVBS2:
-+ /* initialise the demod in DVB-S2 mode */
-+ if(state->demod_id == DS3000_ID){
-+ m88ds3103_init_reg(state, ds3000_dvbs2_init_tab, sizeof(ds3000_dvbs2_init_tab));
-+
-+ if (c->symbol_rate >= 30000000)
-+ m88ds3103_writereg(state, 0xfe, 0x54);
-+ else
-+ m88ds3103_writereg(state, 0xfe, 0x98);
-+
-+ }else if(state->demod_id == DS3103_ID){
-+ m88ds3103_init_reg(state, ds3103_dvbs2_init_tab, sizeof(ds3103_dvbs2_init_tab));
-+
-+ /* set ts clock */
-+ if(state->config->ci_mode == 2){
-+ val1 = 6; val2 = 6;
-+ }else if(state->config->ts_mode == 0){
-+ val1 = 5; val2 = 4;
-+ }else{
-+ val1 = 0; val2 = 0;
-+ }
-+ val1 -= 1; val2 -= 1;
-+ val1 &= 0x3f; val2 &= 0x3f;
-+ data = m88ds3103_readreg(state, 0xfe);
-+ data &= 0xf0;
-+ data |= (val2 >> 2) & 0x0f;
-+ m88ds3103_writereg(state, 0xfe, data);
-+ data = (val2 & 0x03) << 6;
-+ data |= val1;
-+ m88ds3103_writereg(state, 0xea, data);
-+
-+ m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
-+ m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));
-+
-+ /* set master clock */
-+ val1 = m88ds3103_readreg(state, 0x22);
-+ val2 = m88ds3103_readreg(state, 0x24);
-+
-+ val1 &= 0x3f;
-+ val2 &= 0x3f;
-+ if((state->config->ci_mode == 2) || (state->config->ts_mode == 1)){
-+ val1 |= 0x80;
-+ val2 |= 0x40;
-+ }else{
-+ if (c->symbol_rate >= 28000000){
-+ val1 |= 0xc0;
-+ }else if (c->symbol_rate >= 18000000){
-+ val2 |= 0x40;
-+ }else{
-+ val1 |= 0x80;
-+ val2 |= 0x40;
-+ }
-+ }
-+ m88ds3103_writereg(state, 0x22, val1);
-+ m88ds3103_writereg(state, 0x24, val2);
-+ }
-+
-+ if(state->config->ci_mode){
-+ if(state->config->ci_mode == 2)
-+ val1 = 0x43;
-+ else
-+ val1 = 0x03;
-+ }
-+ else if(state->config->ts_mode)
-+ val1 = 0x06;
-+ else
-+ val1 = 0x42;
-+ m88ds3103_writereg(state, 0xfd, val1);
-+
-+ break;
-+ default:
-+ return 1;
-+ }
-+ /* disable 27MHz clock output */
-+ m88ds3103_writereg(state, 0x29, 0x80);
-+ /* enable ac coupling */
-+ m88ds3103_writereg(state, 0x25, 0x8a);
-+
-+ if ((c->symbol_rate / 1000) <= 3000){
-+ m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 32 * 100 / 64 = 400*/
-+ m88ds3103_writereg(state, 0xc8, 0x20);
-+ m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
-+ m88ds3103_writereg(state, 0xc7, 0x00);
-+ }else if((c->symbol_rate / 1000) <= 10000){
-+ m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 16 * 100 / 64 = 200*/
-+ m88ds3103_writereg(state, 0xc8, 0x10);
-+ m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
-+ m88ds3103_writereg(state, 0xc7, 0x00);
-+ }else{
-+ m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 6 * 100 / 64 = 75*/
-+ m88ds3103_writereg(state, 0xc8, 0x06);
-+ m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
-+ m88ds3103_writereg(state, 0xc7, 0x00);
-+ }
-+
-+ m88ds3103_set_symrate(fe);
-+
-+ m88ds3103_set_CCI(fe);
-+
-+ m88ds3103_set_carrier_offset(fe, carrier_offset_khz);
-+
-+ /* ds3000 out of software reset */
-+ m88ds3103_writereg(state, 0x00, 0x00);
-+ /* start ds3000 build-in uC */
-+ m88ds3103_writereg(state, 0xb2, 0x00);
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_set_frontend(struct dvb_frontend *fe)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-+
-+ int i;
-+ fe_status_t status;
-+ u8 lpf_mxdiv, mlpf_max, mlpf_min, nlpf, div4, capCode, changePLL;
-+ s32 offset_khz, lpf_offset_KHz;
-+ u16 value, ndiv, N, lpf_coeff;
-+ u32 f3db, gdiv28, realFreq;
-+ u8 RFgain;
-+
-+ dprintk("%s() ", __func__);
-+ dprintk("c frequency = %d\n", c->frequency);
-+ dprintk("symbol rate = %d\n", c->symbol_rate);
-+ dprintk("delivery system = %d\n", c->delivery_system);
-+
-+ realFreq = c->frequency;
-+ lpf_offset_KHz = 0;
-+ if(c->symbol_rate < 5000000){
-+ lpf_offset_KHz = FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz;
-+ realFreq += FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz;
-+ }
-+
-+ if (state->config->set_ts_params)
-+ state->config->set_ts_params(fe, 0);
-+
-+ div4 = 0;
-+ RFgain = 0;
-+ if(state->tuner_id == TS2022_ID){
-+ m88ds3103_tuner_writereg(state, 0x10, 0x0a);
-+ m88ds3103_tuner_writereg(state, 0x11, 0x40);
-+ if (realFreq < 1103000) {
-+ m88ds3103_tuner_writereg(state, 0x10, 0x1b);
-+ div4 = 1;
-+ ndiv = (realFreq * (6 + 8) * 4)/MT_FE_CRYSTAL_KHZ;
-+ }else {
-+ ndiv = (realFreq * (6 + 8) * 2)/MT_FE_CRYSTAL_KHZ;
-+ }
-+ ndiv = ndiv + ndiv%2;
-+ if(ndiv < 4095)
-+ N = ndiv - 1024;
-+ else if (ndiv < 6143)
-+ N = ndiv + 1024;
-+ else
-+ N = ndiv + 3072;
-+
-+ m88ds3103_tuner_writereg(state, 0x01, (N & 0x3f00) >> 8);
-+ }else{
-+ m88ds3103_tuner_writereg(state, 0x10, 0x00);
-+ if (realFreq < 1146000){
-+ m88ds3103_tuner_writereg(state, 0x10, 0x11);
-+ div4 = 1;
-+ ndiv = (realFreq * (6 + 8) * 4) / MT_FE_CRYSTAL_KHZ;
-+ }else{
-+ m88ds3103_tuner_writereg(state, 0x10, 0x01);
-+ ndiv = (realFreq * (6 + 8) * 2) / MT_FE_CRYSTAL_KHZ;
-+ }
-+ ndiv = ndiv + ndiv%2;
-+ N = ndiv - 1024;
-+ m88ds3103_tuner_writereg(state, 0x01, (N>>8)&0x0f);
-+ }
-+ /* set pll */
-+ m88ds3103_tuner_writereg(state, 0x02, N & 0x00ff);
-+ m88ds3103_tuner_writereg(state, 0x03, 0x06);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x0f);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x10);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+
-+ if(state->tuner_id == TS2022_ID){
-+ if(( realFreq >= 1650000 ) && (realFreq <= 1850000)){
-+ msleep(5);
-+ value = m88ds3103_tuner_readreg(state, 0x14);
-+ value &= 0x7f;
-+ if(value < 64){
-+ m88ds3103_tuner_writereg(state, 0x10, 0x82);
-+ m88ds3103_tuner_writereg(state, 0x11, 0x6f);
-+
-+ m88ds3103_tuner_writereg(state, 0x51, 0x0f);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x10);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+ }
-+ }
-+ msleep(5);
-+ value = m88ds3103_tuner_readreg(state, 0x14);
-+ value &= 0x1f;
-+
-+ if(value > 19){
-+ value = m88ds3103_tuner_readreg(state, 0x10);
-+ value &= 0x1d;
-+ m88ds3103_tuner_writereg(state, 0x10, value);
-+ }
-+ }else{
-+ msleep(5);
-+ value = m88ds3103_tuner_readreg(state, 0x66);
-+ changePLL = (((value & 0x80) >> 7) != div4);
-+
-+ if(changePLL){
-+ m88ds3103_tuner_writereg(state, 0x10, 0x11);
-+ div4 = 1;
-+ ndiv = (realFreq * (6 + 8) * 4)/MT_FE_CRYSTAL_KHZ;
-+ ndiv = ndiv + ndiv%2;
-+ N = ndiv - 1024;
-+
-+ m88ds3103_tuner_writereg(state, 0x01, (N>>8) & 0x0f);
-+ m88ds3103_tuner_writereg(state, 0x02, N & 0xff);
-+
-+ m88ds3103_tuner_writereg(state, 0x51, 0x0f);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x10);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+ }
-+ }
-+ /*set the RF gain*/
-+ if(state->tuner_id == TS2020_ID)
-+ m88ds3103_tuner_writereg(state, 0x60, 0x79);
-+
-+ m88ds3103_tuner_writereg(state, 0x51, 0x17);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x08);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+ msleep(5);
-+
-+ if(state->tuner_id == TS2020_ID){
-+ RFgain = m88ds3103_tuner_readreg(state, 0x3d);
-+ RFgain &= 0x0f;
-+ if(RFgain < 15){
-+ if(RFgain < 4)
-+ RFgain = 0;
-+ else
-+ RFgain = RFgain -3;
-+ value = ((RFgain << 3) | 0x01) & 0x79;
-+ m88ds3103_tuner_writereg(state, 0x60, value);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x17);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x08);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+ }
-+ }
-+
-+ /* set the LPF */
-+ if(state->tuner_id == TS2022_ID){
-+ m88ds3103_tuner_writereg(state, 0x25, 0x00);
-+ m88ds3103_tuner_writereg(state, 0x27, 0x70);
-+ m88ds3103_tuner_writereg(state, 0x41, 0x09);
-+ m88ds3103_tuner_writereg(state, 0x08, 0x0b);
-+ }
-+
-+ f3db = ((c->symbol_rate / 1000) *135) / 200 + 2000;
-+ f3db += lpf_offset_KHz;
-+ if (f3db < 7000)
-+ f3db = 7000;
-+ if (f3db > 40000)
-+ f3db = 40000;
-+
-+ gdiv28 = (MT_FE_CRYSTAL_KHZ / 1000 * 1694 + 500) / 1000;
-+ m88ds3103_tuner_writereg(state, 0x04, gdiv28 & 0xff);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1b);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x04);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+ msleep(5);
-+
-+ value = m88ds3103_tuner_readreg(state, 0x26);
-+ capCode = value & 0x3f;
-+ if(state->tuner_id == TS2022_ID){
-+ m88ds3103_tuner_writereg(state, 0x41, 0x0d);
-+
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1b);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x04);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+
-+ msleep(2);
-+
-+ value = m88ds3103_tuner_readreg(state, 0x26);
-+ value &= 0x3f;
-+ value = (capCode + value) / 2;
-+ }
-+ else
-+ value = capCode;
-+
-+ gdiv28 = gdiv28 * 207 / (value * 2 + 151);
-+ mlpf_max = gdiv28 * 135 / 100;
-+ mlpf_min = gdiv28 * 78 / 100;
-+ if (mlpf_max > 63)
-+ mlpf_max = 63;
-+
-+ if(state->tuner_id == TS2022_ID)
-+ lpf_coeff = 3200;
-+ else
-+ lpf_coeff = 2766;
-+
-+ nlpf = (f3db * gdiv28 * 2 / lpf_coeff / (MT_FE_CRYSTAL_KHZ / 1000) + 1) / 2 ;
-+ if (nlpf > 23) nlpf = 23;
-+ if (nlpf < 1) nlpf = 1;
-+
-+ lpf_mxdiv = (nlpf * (MT_FE_CRYSTAL_KHZ / 1000) * lpf_coeff * 2 / f3db + 1) / 2;
-+
-+ if (lpf_mxdiv < mlpf_min){
-+ nlpf++;
-+ lpf_mxdiv = (nlpf * (MT_FE_CRYSTAL_KHZ / 1000) * lpf_coeff * 2 / f3db + 1) / 2;
-+ }
-+
-+ if (lpf_mxdiv > mlpf_max)
-+ lpf_mxdiv = mlpf_max;
-+
-+ m88ds3103_tuner_writereg(state, 0x04, lpf_mxdiv);
-+ m88ds3103_tuner_writereg(state, 0x06, nlpf);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1b);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x04);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+ msleep(5);
-+
-+ if(state->tuner_id == TS2022_ID){
-+ msleep(2);
-+ value = m88ds3103_tuner_readreg(state, 0x26);
-+ capCode = value & 0x3f;
-+
-+ m88ds3103_tuner_writereg(state, 0x41, 0x09);
-+
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1b);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x04);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+
-+ msleep(2);
-+ value = m88ds3103_tuner_readreg(state, 0x26);
-+ value &= 0x3f;
-+ value = (capCode + value) / 2;
-+
-+ value = value | 0x80;
-+ m88ds3103_tuner_writereg(state, 0x25, value);
-+ m88ds3103_tuner_writereg(state, 0x27, 0x30);
-+
-+ m88ds3103_tuner_writereg(state, 0x08, 0x09);
-+ }
-+
-+ /* Set the BB gain */
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1e);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x01);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+ if(state->tuner_id == TS2020_ID){
-+ if(RFgain == 15){
-+ msleep(40);
-+ value = m88ds3103_tuner_readreg(state, 0x21);
-+ value &= 0x0f;
-+ if(value < 3){
-+ m88ds3103_tuner_writereg(state, 0x60, 0x61);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x17);
-+ m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x08);
-+ m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+ }
-+ }
-+ }
-+ msleep(60);
-+
-+ offset_khz = (ndiv) * MT_FE_CRYSTAL_KHZ
-+ / (6 + 8) / (div4 + 1) / 2 - realFreq;
-+
-+ m88ds3103_demod_connect(fe, offset_khz+lpf_offset_KHz);
-+
-+ for (i = 0; i < 30 ; i++) {
-+ m88ds3103_read_status(fe, &status);
-+ if (status & FE_HAS_LOCK){
-+ break;
-+ }
-+ msleep(20);
-+ }
-+
-+#ifdef _AUTO_S2_
-+ if((status & FE_HAS_LOCK) == 0){
-+ state->delivery_system = (state->delivery_system == SYS_DVBS) ? SYS_DVBS2 : SYS_DVBS;
-+ m88ds3103_demod_connect(fe, offset_khz);
-+
-+ for (i = 0; i < 30 ; i++) {
-+ m88ds3103_read_status(fe, &status);
-+ if (status & FE_HAS_LOCK){
-+ break;
-+ }
-+ msleep(20);
-+ }
-+ }
-+#else
-+ state->delivery_system = c->delivery_system;
-+#endif
-+ if (status & FE_HAS_LOCK){
-+ if(state->config->ci_mode == 2)
-+ m88ds3103_set_clock_ratio(state);
-+ if(state->config->start_ctrl){
-+ if(state->first_lock == 0){
-+ state->config->start_ctrl(fe);
-+ state->first_lock = 1;
-+ }
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static int m88ds3103_tune(struct dvb_frontend *fe,
-+ bool re_tune,
-+ unsigned int mode_flags,
-+ unsigned int *delay,
-+ fe_status_t *status)
-+{
-+ *delay = HZ / 5;
-+
-+ dprintk("%s() ", __func__);
-+ dprintk("re_tune = %d\n", re_tune);
-+
-+ if (re_tune) {
-+ int ret = m88ds3103_set_frontend(fe);
-+ if (ret)
-+ return ret;
-+ }
-+
-+ return m88ds3103_read_status(fe, status);
-+}
-+
-+static enum dvbfe_algo m88ds3103_get_algo(struct dvb_frontend *fe)
-+{
-+ return DVBFE_ALGO_HW;
-+}
-+
-+ /*
-+ * Power config will reset and load initial firmware if required
-+ */
-+static int m88ds3103_initilaze(struct dvb_frontend *fe)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ int ret;
-+
-+ dprintk("%s()\n", __func__);
-+ /* hard reset */
-+ m88ds3103_writereg(state, 0x07, 0x80);
-+ m88ds3103_writereg(state, 0x07, 0x00);
-+ msleep(1);
-+
-+ m88ds3103_writereg(state, 0x08, 0x01 | m88ds3103_readreg(state, 0x08));
-+ msleep(1);
-+
-+ if(state->tuner_id == TS2020_ID){
-+ /* TS2020 init */
-+ m88ds3103_tuner_writereg(state, 0x42, 0x73);
-+ msleep(2);
-+ m88ds3103_tuner_writereg(state, 0x05, 0x01);
-+ m88ds3103_tuner_writereg(state, 0x62, 0xb5);
-+ m88ds3103_tuner_writereg(state, 0x07, 0x02);
-+ m88ds3103_tuner_writereg(state, 0x08, 0x01);
-+ }
-+ else if(state->tuner_id == TS2022_ID){
-+ /* TS2022 init */
-+ m88ds3103_tuner_writereg(state, 0x62, 0x6c);
-+ msleep(2);
-+ m88ds3103_tuner_writereg(state, 0x42, 0x6c);
-+ msleep(2);
-+ m88ds3103_tuner_writereg(state, 0x7d, 0x9d);
-+ m88ds3103_tuner_writereg(state, 0x7c, 0x9a);
-+ m88ds3103_tuner_writereg(state, 0x7a, 0x76);
-+
-+ m88ds3103_tuner_writereg(state, 0x3b, 0x01);
-+ m88ds3103_tuner_writereg(state, 0x63, 0x88);
-+
-+ m88ds3103_tuner_writereg(state, 0x61, 0x85);
-+ m88ds3103_tuner_writereg(state, 0x22, 0x30);
-+ m88ds3103_tuner_writereg(state, 0x30, 0x40);
-+ m88ds3103_tuner_writereg(state, 0x20, 0x23);
-+ m88ds3103_tuner_writereg(state, 0x24, 0x02);
-+ m88ds3103_tuner_writereg(state, 0x12, 0xa0);
-+ }
-+
-+ if(state->demod_id == DS3103_ID){
-+ m88ds3103_writereg(state, 0x07, 0xe0);
-+ m88ds3103_writereg(state, 0x07, 0x00);
-+ msleep(1);
-+ }
-+ m88ds3103_writereg(state, 0xb2, 0x01);
-+
-+ /* Load the firmware if required */
-+ ret = m88ds3103_load_firmware(fe);
-+ if (ret != 0){
-+ printk(KERN_ERR "%s: Unable initialize firmware\n", __func__);
-+ return ret;
-+ }
-+ if(state->demod_id == DS3103_ID){
-+ m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
-+ m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ * Initialise or wake up device
-+ */
-+static int m88ds3103_initfe(struct dvb_frontend *fe)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+ u8 val;
-+
-+ dprintk("%s()\n", __func__);
-+
-+ /* 1st step to wake up demod */
-+ m88ds3103_writereg(state, 0x08, 0x01 | m88ds3103_readreg(state, 0x08));
-+ m88ds3103_writereg(state, 0x04, 0xfe & m88ds3103_readreg(state, 0x04));
-+ m88ds3103_writereg(state, 0x23, 0xef & m88ds3103_readreg(state, 0x23));
-+
-+ /* 2nd step to wake up tuner */
-+ val = m88ds3103_tuner_readreg(state, 0x00) & 0xff;
-+ if((val & 0x01) == 0){
-+ m88ds3103_tuner_writereg(state, 0x00, 0x01);
-+ msleep(50);
-+ }
-+ m88ds3103_tuner_writereg(state, 0x00, 0x03);
-+ msleep(50);
-+
-+ return 0;
-+}
-+
-+/* Put device to sleep */
-+static int m88ds3103_sleep(struct dvb_frontend *fe)
-+{
-+ struct m88ds3103_state *state = fe->demodulator_priv;
-+
-+ dprintk("%s()\n", __func__);
-+
-+ /* 1st step to sleep tuner */
-+ m88ds3103_tuner_writereg(state, 0x00, 0x00);
-+
-+ /* 2nd step to sleep demod */
-+ m88ds3103_writereg(state, 0x08, 0xfe & m88ds3103_readreg(state, 0x08));
-+ m88ds3103_writereg(state, 0x04, 0x01 | m88ds3103_readreg(state, 0x04));
-+ m88ds3103_writereg(state, 0x23, 0x10 | m88ds3103_readreg(state, 0x23));
-+
-+
-+ return 0;
-+}
-+
-+static struct dvb_frontend_ops m88ds3103_ops = {
-+ .delsys = { SYS_DVBS, SYS_DVBS2},
-+ .info = {
-+ .name = "Montage DS3103/TS2022",
-+ .type = FE_QPSK,
-+ .frequency_min = 950000,
-+ .frequency_max = 2150000,
-+ .frequency_stepsize = 1011, /* kHz for QPSK frontends */
-+ .frequency_tolerance = 5000,
-+ .symbol_rate_min = 1000000,
-+ .symbol_rate_max = 45000000,
-+ .caps = FE_CAN_INVERSION_AUTO |
-+ FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
-+ FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 |
-+ FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
-+ FE_CAN_2G_MODULATION |
-+ FE_CAN_QPSK | FE_CAN_RECOVER
-+ },
-+
-+ .release = m88ds3103_release,
-+
-+ .init = m88ds3103_initfe,
-+ .sleep = m88ds3103_sleep,
-+ .read_status = m88ds3103_read_status,
-+ .read_ber = m88ds3103_read_ber,
-+ .read_signal_strength = m88ds3103_read_signal_strength,
-+ .read_snr = m88ds3103_read_snr,
-+ .read_ucblocks = m88ds3103_read_ucblocks,
-+ .set_tone = m88ds3103_set_tone,
-+ .set_voltage = m88ds3103_set_voltage,
-+ .diseqc_send_master_cmd = m88ds3103_send_diseqc_msg,
-+ .diseqc_send_burst = m88ds3103_diseqc_send_burst,
-+ .get_frontend_algo = m88ds3103_get_algo,
-+ .tune = m88ds3103_tune,
-+ .set_frontend = m88ds3103_set_frontend,
-+};
-+
-+MODULE_DESCRIPTION("DVB Frontend module for Montage DS3103/TS2022 hardware");
-+MODULE_AUTHOR("Max nibble");
-+MODULE_LICENSE("GPL");
-diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103.h b/drivers/media/dvb-frontends/dvbsky_m88ds3103.h
-new file mode 100644
-index 0000000..e2358d6
---- /dev/null
-+++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103.h
-@@ -0,0 +1,54 @@
-+/*
-+ Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
-+
-+ This program is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2 of the License, or
-+ (at your option) any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with this program; if not, write to the Free Software
-+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#ifndef DVBSKY_M88DS3103_H
-+#define DVBSKY_M88DS3103_H
-+
-+#include <linux/kconfig.h>
-+#include <linux/dvb/frontend.h>
-+
-+struct dvbsky_m88ds3103_config {
-+ /* the demodulator's i2c address */
-+ u8 demod_address;
-+ u8 ci_mode;
-+ u8 pin_ctrl;
-+ u8 ts_mode; /* 0: Parallel, 1: Serial */
-+ u8 tuner_readstops;
-+
-+ /* Set device param to start dma */
-+ int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);
-+ /* Start to transfer data */
-+ int (*start_ctrl)(struct dvb_frontend *fe);
-+ /* Set LNB voltage */
-+ int (*set_voltage)(struct dvb_frontend* fe, fe_sec_voltage_t voltage);
-+};
-+
-+#if IS_ENABLED(CONFIG_DVB_DVBSKY_M88DS3103)
-+extern struct dvb_frontend *dvbsky_m88ds3103_attach(
-+ const struct dvbsky_m88ds3103_config *config,
-+ struct i2c_adapter *i2c);
-+#else
-+static inline struct dvb_frontend *dvbsky_m88ds3103_attach(
-+ const struct dvbsky_m88ds3103_config *config,
-+ struct i2c_adapter *i2c)
-+{
-+ printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
-+ return NULL;
-+}
-+#endif /* CONFIG_DVB_DVBSKY_M88DS3103 */
-+#endif /* DVBSKY_M88DS3103_H */
-diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h b/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h
-new file mode 100644
-index 0000000..9966931
---- /dev/null
-+++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h
-@@ -0,0 +1,403 @@
-+/*
-+ Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
-+
-+ This program is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2 of the License, or
-+ (at your option) any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with this program; if not, write to the Free Software
-+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#ifndef DVBSKY_M88DS3103_PRIV_H
-+#define DVBSKY_M88DS3103_PRIV_H
-+
-+#define FW_DOWN_SIZE 32
-+#define FW_DOWN_LOOP (8192/FW_DOWN_SIZE)
-+#define DS3103_DEFAULT_FIRMWARE "dvb-fe-ds3103.fw"
-+#define DS3000_DEFAULT_FIRMWARE "dvb-fe-ds300x.fw"
-+#define MT_FE_MCLK_KHZ 96000 /* in kHz */
-+#define MT_FE_CRYSTAL_KHZ 27000 /* in kHz */
-+#define FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz 3000
-+#define DS3000_ID 0x3000
-+#define DS3103_ID 0x3103
-+#define TS2020_ID 0x2020
-+#define TS2022_ID 0x2022
-+#define UNKNOW_ID 0x0000
-+
-+struct m88ds3103_state {
-+ struct i2c_adapter *i2c;
-+ const struct dvbsky_m88ds3103_config *config;
-+
-+ struct dvb_frontend frontend;
-+
-+ u32 preBer;
-+ u8 skip_fw_load;
-+ u8 first_lock; /* The first time of signal lock */
-+ u16 demod_id; /* demod chip type */
-+ u16 tuner_id; /* tuner chip type */
-+ fe_delivery_system_t delivery_system;
-+};
-+
-+/* For M88DS3103 demod dvbs mode.*/
-+static u8 ds3103_dvbs_init_tab[] = {
-+ 0x23, 0x07,
-+ 0x08, 0x03,
-+ 0x0c, 0x02,
-+ 0x21, 0x54,
-+ 0x25, 0x82,
-+ 0x27, 0x31,
-+ 0x30, 0x08,
-+ 0x31, 0x40,
-+ 0x32, 0x32,
-+ 0x33, 0x35,
-+ 0x35, 0xff,
-+ 0x3a, 0x00,
-+ 0x37, 0x10,
-+ 0x38, 0x10,
-+ 0x39, 0x02,
-+ 0x42, 0x60,
-+ 0x4a, 0x80,
-+ 0x4b, 0x04,
-+ 0x4d, 0x91,
-+ 0x5d, 0xc8,
-+ 0x50, 0x36,
-+ 0x51, 0x36,
-+ 0x52, 0x36,
-+ 0x53, 0x36,
-+ 0x63, 0x0f,
-+ 0x64, 0x30,
-+ 0x65, 0x40,
-+ 0x68, 0x26,
-+ 0x69, 0x4c,
-+ 0x70, 0x20,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x40,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x60,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x80,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0xa0,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x1f,
-+ 0x76, 0x38,
-+ 0x77, 0xa6,
-+ 0x78, 0x0c,
-+ 0x79, 0x80,
-+ 0x7f, 0x14,
-+ 0x7c, 0x00,
-+ 0xae, 0x82,
-+ 0x80, 0x64,
-+ 0x81, 0x66,
-+ 0x82, 0x44,
-+ 0x85, 0x04,
-+ 0xcd, 0xf4,
-+ 0x90, 0x33,
-+ 0xa0, 0x44,
-+ 0xc0, 0x08,
-+ 0xc3, 0x10,
-+ 0xc4, 0x08,
-+ 0xc5, 0xf0,
-+ 0xc6, 0xff,
-+ 0xc7, 0x00,
-+ 0xc8, 0x1a,
-+ 0xc9, 0x80,
-+ 0xe0, 0xf8,
-+ 0xe6, 0x8b,
-+ 0xd0, 0x40,
-+ 0xf8, 0x20,
-+ 0xfa, 0x0f,
-+ 0x00, 0x00,
-+ 0xbd, 0x01,
-+ 0xb8, 0x00,
-+};
-+/* For M88DS3103 demod dvbs2 mode.*/
-+static u8 ds3103_dvbs2_init_tab[] = {
-+ 0x23, 0x07,
-+ 0x08, 0x07,
-+ 0x0c, 0x02,
-+ 0x21, 0x54,
-+ 0x25, 0x82,
-+ 0x27, 0x31,
-+ 0x30, 0x08,
-+ 0x32, 0x32,
-+ 0x33, 0x35,
-+ 0x35, 0xff,
-+ 0x3a, 0x00,
-+ 0x37, 0x10,
-+ 0x38, 0x10,
-+ 0x39, 0x02,
-+ 0x42, 0x60,
-+ 0x4a, 0x80,
-+ 0x4b, 0x04,
-+ 0x4d, 0x91,
-+ 0x5d, 0xc8,
-+ 0x50, 0x36,
-+ 0x51, 0x36,
-+ 0x52, 0x36,
-+ 0x53, 0x36,
-+ 0x63, 0x0f,
-+ 0x64, 0x10,
-+ 0x65, 0x20,
-+ 0x68, 0x46,
-+ 0x69, 0xcd,
-+ 0x70, 0x20,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x40,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x60,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x80,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0xa0,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x1f,
-+ 0x76, 0x38,
-+ 0x77, 0xa6,
-+ 0x78, 0x0c,
-+ 0x79, 0x80,
-+ 0x7f, 0x14,
-+ 0x85, 0x08,
-+ 0xcd, 0xf4,
-+ 0x90, 0x33,
-+ 0x86, 0x00,
-+ 0x87, 0x0f,
-+ 0x89, 0x00,
-+ 0x8b, 0x44,
-+ 0x8c, 0x66,
-+ 0x9d, 0xc1,
-+ 0x8a, 0x10,
-+ 0xad, 0x40,
-+ 0xa0, 0x44,
-+ 0xc0, 0x08,
-+ 0xc1, 0x10,
-+ 0xc2, 0x08,
-+ 0xc3, 0x10,
-+ 0xc4, 0x08,
-+ 0xc5, 0xf0,
-+ 0xc6, 0xff,
-+ 0xc7, 0x00,
-+ 0xc8, 0x1a,
-+ 0xc9, 0x80,
-+ 0xca, 0x23,
-+ 0xcb, 0x24,
-+ 0xcc, 0xf4,
-+ 0xce, 0x74,
-+ 0x00, 0x00,
-+ 0xbd, 0x01,
-+ 0xb8, 0x00,
-+};
-+
-+/* For M88DS3000 demod dvbs mode.*/
-+static u8 ds3000_dvbs_init_tab[] = {
-+ 0x23, 0x05,
-+ 0x08, 0x03,
-+ 0x0c, 0x02,
-+ 0x21, 0x54,
-+ 0x25, 0x82,
-+ 0x27, 0x31,
-+ 0x30, 0x08,
-+ 0x31, 0x40,
-+ 0x32, 0x32,
-+ 0x33, 0x35,
-+ 0x35, 0xff,
-+ 0x3a, 0x00,
-+ 0x37, 0x10,
-+ 0x38, 0x10,
-+ 0x39, 0x02,
-+ 0x42, 0x60,
-+ 0x4a, 0x40,
-+ 0x4b, 0x04,
-+ 0x4d, 0x91,
-+ 0x5d, 0xc8,
-+ 0x50, 0x77,
-+ 0x51, 0x77,
-+ 0x52, 0x36,
-+ 0x53, 0x36,
-+ 0x56, 0x01,
-+ 0x63, 0x47,
-+ 0x64, 0x30,
-+ 0x65, 0x40,
-+ 0x68, 0x26,
-+ 0x69, 0x4c,
-+ 0x70, 0x20,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x40,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x60,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x80,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0xa0,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x1f,
-+ 0x76, 0x00,
-+ 0x77, 0xd1,
-+ 0x78, 0x0c,
-+ 0x79, 0x80,
-+ 0x7f, 0x04,
-+ 0x7c, 0x00,
-+ 0x80, 0x86,
-+ 0x81, 0xa6,
-+ 0x85, 0x04,
-+ 0xcd, 0xf4,
-+ 0x90, 0x33,
-+ 0xa0, 0x44,
-+ 0xc0, 0x18,
-+ 0xc3, 0x10,
-+ 0xc4, 0x08,
-+ 0xc5, 0x80,
-+ 0xc6, 0x80,
-+ 0xc7, 0x0a,
-+ 0xc8, 0x1a,
-+ 0xc9, 0x80,
-+ 0xfe, 0xb6,
-+ 0xe0, 0xf8,
-+ 0xe6, 0x8b,
-+ 0xd0, 0x40,
-+ 0xf8, 0x20,
-+ 0xfa, 0x0f,
-+ 0xad, 0x20,
-+ 0xae, 0x07,
-+ 0xb8, 0x00,
-+};
-+
-+/* For M88DS3000 demod dvbs2 mode.*/
-+static u8 ds3000_dvbs2_init_tab[] = {
-+ 0x23, 0x0f,
-+ 0x08, 0x07,
-+ 0x0c, 0x02,
-+ 0x21, 0x54,
-+ 0x25, 0x82,
-+ 0x27, 0x31,
-+ 0x30, 0x08,
-+ 0x31, 0x32,
-+ 0x32, 0x32,
-+ 0x33, 0x35,
-+ 0x35, 0xff,
-+ 0x3a, 0x00,
-+ 0x37, 0x10,
-+ 0x38, 0x10,
-+ 0x39, 0x02,
-+ 0x42, 0x60,
-+ 0x4a, 0x80,
-+ 0x4b, 0x04,
-+ 0x4d, 0x91,
-+ 0x5d, 0x88,
-+ 0x50, 0x36,
-+ 0x51, 0x36,
-+ 0x52, 0x36,
-+ 0x53, 0x36,
-+ 0x63, 0x60,
-+ 0x64, 0x10,
-+ 0x65, 0x10,
-+ 0x68, 0x04,
-+ 0x69, 0x29,
-+ 0x70, 0x20,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x40,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x60,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x80,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0xa0,
-+ 0x71, 0x70,
-+ 0x72, 0x04,
-+ 0x73, 0x00,
-+ 0x70, 0x1f,
-+ 0xa0, 0x44,
-+ 0xc0, 0x08,
-+ 0xc1, 0x10,
-+ 0xc2, 0x08,
-+ 0xc3, 0x10,
-+ 0xc4, 0x08,
-+ 0xc5, 0xf0,
-+ 0xc6, 0xf0,
-+ 0xc7, 0x0a,
-+ 0xc8, 0x1a,
-+ 0xc9, 0x80,
-+ 0xca, 0x23,
-+ 0xcb, 0x24,
-+ 0xce, 0x74,
-+ 0x56, 0x01,
-+ 0x90, 0x03,
-+ 0x76, 0x80,
-+ 0x77, 0x42,
-+ 0x78, 0x0a,
-+ 0x79, 0x80,
-+ 0xad, 0x40,
-+ 0xae, 0x07,
-+ 0x7f, 0xd4,
-+ 0x7c, 0x00,
-+ 0x80, 0xa8,
-+ 0x81, 0xda,
-+ 0x7c, 0x01,
-+ 0x80, 0xda,
-+ 0x81, 0xec,
-+ 0x7c, 0x02,
-+ 0x80, 0xca,
-+ 0x81, 0xeb,
-+ 0x7c, 0x03,
-+ 0x80, 0xba,
-+ 0x81, 0xdb,
-+ 0x85, 0x08,
-+ 0x86, 0x00,
-+ 0x87, 0x02,
-+ 0x89, 0x80,
-+ 0x8b, 0x44,
-+ 0x8c, 0xaa,
-+ 0x8a, 0x10,
-+ 0xba, 0x00,
-+ 0xf5, 0x04,
-+ 0xd2, 0x32,
-+ 0xb8, 0x00,
-+};
-+
-+#endif /* DVBSKY_M88DS3103_PRIV_H */
-diff --git a/drivers/media/dvb-frontends/m88dc2800.c b/drivers/media/dvb-frontends/m88dc2800.c
-new file mode 100644
-index 0000000..f876a11
---- /dev/null
-+++ b/drivers/media/dvb-frontends/m88dc2800.c
-@@ -0,0 +1,2124 @@
-+/*
-+ M88DC2800/M88TC2800 - DVB-C demodulator and tuner from Montage
-+
-+ Copyright (C) 2012 Max nibble<nibble.max@gmail.com>
-+ Copyright (C) 2011 Montage Technology / www.montage-tech.com
-+
-+ This program is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2 of the License, or
-+ (at your option) any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with this program; if not, write to the Free Software
-+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+*/
-+
-+#include <linux/delay.h>
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/string.h>
-+#include <linux/slab.h>
-+#include <asm/div64.h>
-+#include "dvb_frontend.h"
-+#include "m88dc2800.h"
-+
-+struct m88dc2800_state {
-+ struct i2c_adapter *i2c;
-+ const struct m88dc2800_config *config;
-+ struct dvb_frontend frontend;
-+ u32 freq;
-+ u32 ber;
-+ u32 sym;
-+ u16 qam;
-+ u8 inverted;
-+ u32 xtal;
-+ /* tuner state */
-+ u8 tuner_init_OK; /* Tuner initialize status */
-+ u8 tuner_dev_addr; /* Tuner device address */
-+ u32 tuner_freq; /* RF frequency to be set, unit: KHz */
-+ u16 tuner_qam; /* Reserved */
-+ u16 tuner_mode;
-+ u8 tuner_bandwidth; /* Bandwidth of the channel, unit: MHz, 6/7/8 */
-+ u8 tuner_loopthrough; /* Tuner loop through switch, 0/1 */
-+ u32 tuner_crystal; /* Tuner crystal frequency, unit: KHz */
-+ u32 tuner_dac; /* Tuner DAC frequency, unit: KHz */
-+ u16 tuner_mtt; /* Tuner chip version, D1: 0x0d, E0: 0x0e, E1: 0x8e */
-+ u16 tuner_custom_cfg;
-+ u32 tuner_version; /* Tuner driver version number */
-+ u32 tuner_time;
-+};
-+
-+static int debug;
-+module_param(debug, int, 0644);
-+MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
-+
-+#define dprintk(args...) \
-+ do { \
-+ if (debug) \
-+ printk(KERN_INFO "m88dc2800: " args); \
-+ } while (0)
-+
-+
-+static int m88dc2800_i2c_write(struct m88dc2800_state *state, u8 addr,
-+ u8 * p_data, u8 len)
-+{
-+ struct i2c_msg msg = { .flags = 0 };
-+
-+ msg.addr = addr;
-+ msg.buf = p_data;
-+ msg.len = len;
-+
-+ return i2c_transfer(state->i2c, &msg, 1);
-+}
-+
-+static int m88dc2800_i2c_read(struct m88dc2800_state *state, u8 addr,
-+ u8 * p_data, u8 len)
-+{
-+ struct i2c_msg msg = { .flags = I2C_M_RD };
-+
-+ msg.addr = addr;
-+ msg.buf = p_data;
-+ msg.len = len;
-+
-+ return i2c_transfer(state->i2c, &msg, 1);
-+}
-+
-+/*demod register operations.*/
-+static int WriteReg(struct m88dc2800_state *state, u8 reg, u8 data)
-+{
-+ u8 buf[] = { reg, data };
-+ u8 addr = state->config->demod_address;
-+ int err;
-+
-+ dprintk("%s: write reg 0x%02x, value 0x%02x\n", __func__, reg, data);
-+
-+ err = m88dc2800_i2c_write(state, addr, buf, 2);
-+
-+ if (err != 1) {
-+ printk(KERN_ERR
-+ "%s: writereg error(err == %i, reg == 0x%02x,"
-+ " value == 0x%02x)\n", __func__, err, reg, data);
-+ return -EIO;
-+ }
-+ return 0;
-+}
-+
-+static int ReadReg(struct m88dc2800_state *state, u8 reg)
-+{
-+ int ret;
-+ u8 b0[] = { reg };
-+ u8 b1[] = { 0 };
-+ u8 addr = state->config->demod_address;
-+
-+ ret = m88dc2800_i2c_write(state, addr, b0, 1);
-+
-+ if (ret != 1) {
-+ printk(KERN_ERR "%s: reg=0x%x (error=%d)\n",
-+ __func__, reg, ret);
-+ return -EIO;
-+ }
-+
-+ ret = m88dc2800_i2c_read(state, addr, b1, 1);
-+
-+ dprintk("%s: read reg 0x%02x, value 0x%02x\n", __func__, reg, b1[0]);
-+ return b1[0];
-+}
-+
-+static int _mt_fe_tn_set_reg(struct m88dc2800_state *state, u8 reg,
-+ u8 data)
-+{
-+ int ret;
-+ u8 buf[2];
-+ u8 addr = state->tuner_dev_addr;
-+
-+ buf[1] = ReadReg(state, 0x86);
-+ buf[1] |= 0x80;
-+ ret = WriteReg(state, 0x86, buf[1]);
-+
-+ buf[0] = reg;
-+ buf[1] = data;
-+
-+ ret = m88dc2800_i2c_write(state, addr, buf, 2);
-+ if (ret != 1)
-+ return -EIO;
-+ return 0;
-+}
-+
-+static int _mt_fe_tn_get_reg(struct m88dc2800_state *state, u8 reg,
-+ u8 * p_data)
-+{
-+ int ret;
-+ u8 buf[2];
-+ u8 addr = state->tuner_dev_addr;
-+
-+ buf[1] = ReadReg(state, 0x86);
-+ buf[1] |= 0x80;
-+ ret = WriteReg(state, 0x86, buf[1]);
-+
-+ buf[0] = reg;
-+ ret = m88dc2800_i2c_write(state, addr, buf, 1);
-+
-+ msleep(1);
-+
-+ buf[1] = ReadReg(state, 0x86);
-+ buf[1] |= 0x80;
-+ ret = WriteReg(state, 0x86, buf[1]);
-+
-+ return m88dc2800_i2c_read(state, addr, p_data, 1);
-+}
-+
-+/* Tuner operation functions.*/
-+static int _mt_fe_tn_set_RF_front_tc2800(struct m88dc2800_state *state)
-+{
-+ u32 freq_KHz = state->tuner_freq;
-+ u8 a, b, c;
-+ if (state->tuner_mtt == 0xD1) { /* D1 */
-+ if (freq_KHz <= 123000) {
-+ if (freq_KHz <= 56000) {
-+ a = 0x00; b = 0x00; c = 0x00;
-+ } else if (freq_KHz <= 64000) {
-+ a = 0x10; b = 0x01; c = 0x08;
-+ } else if (freq_KHz <= 72000) {
-+ a = 0x20; b = 0x02; c = 0x10;
-+ } else if (freq_KHz <= 80000) {
-+ a = 0x30; b = 0x03; c = 0x18;
-+ } else if (freq_KHz <= 88000) {
-+ a = 0x40; b = 0x04; c = 0x20;
-+ } else if (freq_KHz <= 96000) {
-+ a = 0x50; b = 0x05; c = 0x28;
-+ } else if (freq_KHz <= 104000) {
-+ a = 0x60; b = 0x06; c = 0x30;
-+ } else {
-+ a = 0x70; b = 0x07; c = 0x38;
-+ }
-+ _mt_fe_tn_set_reg(state, 0x58, 0x9b);
-+ _mt_fe_tn_set_reg(state, 0x59, a);
-+ _mt_fe_tn_set_reg(state, 0x5d, b);
-+ _mt_fe_tn_set_reg(state, 0x5e, c);
-+ _mt_fe_tn_set_reg(state, 0x5a, 0x75);
-+ _mt_fe_tn_set_reg(state, 0x73, 0x0c);
-+ } else { /* if (freq_KHz > 112000) */
-+ _mt_fe_tn_set_reg(state, 0x58, 0x7b);
-+ if (freq_KHz <= 304000) {
-+ if (freq_KHz <= 136000) {
-+ _mt_fe_tn_set_reg(state, 0x5e, 0x40);
-+ } else if (freq_KHz <= 160000) {
-+ _mt_fe_tn_set_reg(state, 0x5e, 0x48);
-+ } else if (freq_KHz <= 184000) {
-+ _mt_fe_tn_set_reg(state, 0x5e, 0x50);
-+ } else if (freq_KHz <= 208000) {
-+ _mt_fe_tn_set_reg(state, 0x5e, 0x58);
-+ } else if (freq_KHz <= 232000) {
-+ _mt_fe_tn_set_reg(state, 0x5e, 0x60);
-+ } else if (freq_KHz <= 256000) {
-+ _mt_fe_tn_set_reg(state, 0x5e, 0x68);
-+ } else if (freq_KHz <= 280000) {
-+ _mt_fe_tn_set_reg(state, 0x5e, 0x70);
-+ } else { /* if (freq_KHz <= 304000) */
-+ _mt_fe_tn_set_reg(state, 0x5e, 0x78);
-+ }
-+ if (freq_KHz <= 171000) {
-+ _mt_fe_tn_set_reg(state, 0x73, 0x08);
-+ } else if (freq_KHz <= 211000) {
-+ _mt_fe_tn_set_reg(state, 0x73, 0x0a);
-+ } else {
-+ _mt_fe_tn_set_reg(state, 0x73, 0x0e);
-+ }
-+ } else { /* if (freq_KHz > 304000) */
-+ _mt_fe_tn_set_reg(state, 0x5e, 0x88);
-+ if (freq_KHz <= 400000) {
-+ _mt_fe_tn_set_reg(state, 0x73, 0x0c);
-+ } else if (freq_KHz <= 450000) {
-+ _mt_fe_tn_set_reg(state, 0x73, 0x09);
-+ } else if (freq_KHz <= 550000) {
-+ _mt_fe_tn_set_reg(state, 0x73, 0x0e);
-+ } else if (freq_KHz <= 650000) {
-+ _mt_fe_tn_set_reg(state, 0x73, 0x0d);
-+ } else { /*if (freq_KHz > 650000) */
-+ _mt_fe_tn_set_reg(state, 0x73, 0x0e);
-+ }
-+ }
-+ }
-+ if (freq_KHz > 800000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x24);
-+ else if (freq_KHz > 700000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x34);
-+ else if (freq_KHz > 500000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x44);
-+ else if (freq_KHz > 300000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x43);
-+ else if (freq_KHz > 220000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+ else if (freq_KHz > 110000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+ else
-+ _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+ if (freq_KHz > 600000)
-+ _mt_fe_tn_set_reg(state, 0x6a, 0x53);
-+ else if (freq_KHz > 500000)
-+ _mt_fe_tn_set_reg(state, 0x6a, 0x57);
-+ else
-+ _mt_fe_tn_set_reg(state, 0x6a, 0x59);
-+ if (freq_KHz < 200000) {
-+ _mt_fe_tn_set_reg(state, 0x20, 0x5d);
-+ } else if (freq_KHz < 500000) {
-+ _mt_fe_tn_set_reg(state, 0x20, 0x7d);
-+ } else {
-+ _mt_fe_tn_set_reg(state, 0x20, 0xfd);
-+ } /* end of 0xD1 */
-+ } else if (state->tuner_mtt == 0xE1) { /* E1 */
-+ if (freq_KHz <= 112000) { /* 123MHz */
-+ if (freq_KHz <= 56000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x01);
-+ } else if (freq_KHz <= 64000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x09);
-+ } else if (freq_KHz <= 72000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x11);
-+ } else if (freq_KHz <= 80000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x19);
-+ } else if (freq_KHz <= 88000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x21);
-+ } else if (freq_KHz <= 96000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x29);
-+ } else if (freq_KHz <= 104000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x31);
-+ } else { /* if (freq_KHz <= 112000) */
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x39);
-+ }
-+ _mt_fe_tn_set_reg(state, 0x5b, 0x30);
-+ } else { /* if (freq_KHz > 112000) */
-+ if (freq_KHz <= 304000) {
-+ if (freq_KHz <= 136000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x41);
-+ } else if (freq_KHz <= 160000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x49);
-+ } else if (freq_KHz <= 184000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x51);
-+ } else if (freq_KHz <= 208000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x59);
-+ } else if (freq_KHz <= 232000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x61);
-+ } else if (freq_KHz <= 256000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x69);
-+ } else if (freq_KHz <= 280000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x71);
-+ } else { /* if (freq_KHz <= 304000) */
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x79);
-+ }
-+ if (freq_KHz <= 150000) {
-+ _mt_fe_tn_set_reg(state, 0x5b, 0x28);
-+ } else if (freq_KHz <= 256000) {
-+ _mt_fe_tn_set_reg(state, 0x5b, 0x29);
-+ } else {
-+ _mt_fe_tn_set_reg(state, 0x5b, 0x2a);
-+ }
-+ } else { /* if (freq_KHz > 304000) */
-+ if (freq_KHz <= 400000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x89);
-+ } else if (freq_KHz <= 450000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x91);
-+ } else if (freq_KHz <= 650000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0x98);
-+ } else if (freq_KHz <= 850000) {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0xa0);
-+ } else {
-+ _mt_fe_tn_set_reg(state, 0x5c, 0xa8);
-+ }
-+ _mt_fe_tn_set_reg(state, 0x5b, 0x08);
-+ }
-+ }
-+ } /* end of 0xE1 */
-+ return 0;
-+}
-+
-+static int _mt_fe_tn_cali_PLL_tc2800(struct m88dc2800_state *state,
-+ u32 freq_KHz,
-+ u32 cali_freq_thres_div2,
-+ u32 cali_freq_thres_div3r,
-+ u32 cali_freq_thres_div3)
-+{
-+ s32 N, F, MUL;
-+ u8 buf, tmp, tmp2;
-+ s32 M;
-+ const s32 crystal_KHz = state->tuner_crystal;
-+ if (state->tuner_mtt == 0xD1) {
-+ M = state->tuner_crystal / 4000;
-+ if (freq_KHz > cali_freq_thres_div2) {
-+ MUL = 4;
-+ tmp = 2;
-+ } else if (freq_KHz > 300000) {
-+ MUL = 8;
-+ tmp = 3;
-+ } else if (freq_KHz > (cali_freq_thres_div2 / 2)) {
-+ MUL = 8;
-+ tmp = 4;
-+ } else if (freq_KHz > (cali_freq_thres_div2 / 4)) {
-+ MUL = 16;
-+ tmp = 5;
-+ } else if (freq_KHz > (cali_freq_thres_div2 / 8)) {
-+ MUL = 32;
-+ tmp = 6;
-+ } else if (freq_KHz > (cali_freq_thres_div2 / 16)) {
-+ MUL = 64;
-+ tmp = 7;
-+ } else { /* invalid */
-+ MUL = 0;
-+ tmp = 0;
-+ return 1;
-+ }
-+ } else if (state->tuner_mtt == 0xE1) {
-+ M = state->tuner_crystal / 1000;
-+ _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+ _mt_fe_tn_set_reg(state, 0x32, 0xe0);
-+ _mt_fe_tn_set_reg(state, 0x33, 0x86);
-+ _mt_fe_tn_set_reg(state, 0x37, 0x70);
-+ _mt_fe_tn_set_reg(state, 0x38, 0x20);
-+ _mt_fe_tn_set_reg(state, 0x39, 0x18);
-+ _mt_fe_tn_set_reg(state, 0x89, 0x83);
-+ if (freq_KHz > cali_freq_thres_div2) {
-+ M = M / 4;
-+ MUL = 4;
-+ tmp = 2;
-+ tmp2 = M + 16; /* 48 */
-+ } else if (freq_KHz > cali_freq_thres_div3r) {
-+ M = M / 3;
-+ MUL = 6;
-+ tmp = 2;
-+ tmp2 = M + 32; /* 32 */
-+ } else if (freq_KHz > cali_freq_thres_div3) {
-+ M = M / 3;
-+ MUL = 6;
-+ tmp = 2;
-+ tmp2 = M; /* 16 */
-+ } else if (freq_KHz > 304000) {
-+ M = M / 4;
-+ MUL = 8;
-+ tmp = 3;
-+ tmp2 = M + 16; /* 48 */
-+ } else if (freq_KHz > (cali_freq_thres_div2 / 2)) {
-+ M = M / 4;
-+ MUL = 8;
-+ tmp = 4;
-+ tmp2 = M + 16; /* 48 */
-+ } else if (freq_KHz > (cali_freq_thres_div3r / 2)) {
-+ M = M / 3;
-+ MUL = 12;
-+ tmp = 4;
-+ tmp2 = M + 32; /* 32 */
-+ } else if (freq_KHz > (cali_freq_thres_div3 / 2)) {
-+ M = M / 3;
-+ MUL = 12;
-+ tmp = 4;
-+ tmp2 = M; /* 16 */
-+ } else if (freq_KHz > (cali_freq_thres_div2 / 4)) {
-+ M = M / 4;
-+ MUL = 16;
-+ tmp = 5;
-+ tmp2 = M + 16; /* 48 */
-+ } else if (freq_KHz > (cali_freq_thres_div3r / 4)) {
-+ M = M / 3;
-+ MUL = 24;
-+ tmp = 5;
-+ tmp2 = M + 32; /* 32 */
-+ } else if (freq_KHz > (cali_freq_thres_div3 / 4)) {
-+ M = M / 3;
-+ MUL = 24;
-+ tmp = 5;
-+ tmp2 = M; /* 16 */
-+ } else if (freq_KHz > (cali_freq_thres_div2 / 8)) {
-+ M = M / 4;
-+ MUL = 32;
-+ tmp = 6;
-+ tmp2 = M + 16; /* 48 */
-+ } else if (freq_KHz > (cali_freq_thres_div3r / 8)) {
-+ M = M / 3;
-+ MUL = 48;
-+ tmp = 6;
-+ tmp2 = M + 32; /* 32 */
-+ } else if (freq_KHz > (cali_freq_thres_div3 / 8)) {
-+ M = M / 3;
-+ MUL = 48;
-+ tmp = 6;
-+ tmp2 = M; /* 16 */
-+ } else if (freq_KHz > (cali_freq_thres_div2 / 16)) {
-+ M = M / 4;
-+ MUL = 64;
-+ tmp = 7;
-+ tmp2 = M + 16; /* 48 */
-+ } else if (freq_KHz > (cali_freq_thres_div3r / 16)) {
-+ M = M / 3;
-+ MUL = 96;
-+ tmp = 7;
-+ tmp2 = M + 32; /* 32 */
-+ } else if (freq_KHz > (cali_freq_thres_div3 / 16)) {
-+ M = M / 3;
-+ MUL = 96;
-+ tmp = 7;
-+ tmp2 = M; /* 16 */
-+ } else { /* invalid */
-+ M = M / 4;
-+ MUL = 0;
-+ tmp = 0;
-+ tmp2 = 48;
-+ return 1;
-+ }
-+ if (freq_KHz == 291000) {
-+ M = state->tuner_crystal / 1000 / 3;
-+ MUL = 12;
-+ tmp = 4;
-+ tmp2 = M + 32; /* 32 */
-+ }
-+ /*
-+ if (freq_KHz == 578000) {
-+ M = state->tuner_crystal / 1000 / 4;
-+ MUL = 4;
-+ tmp = 2;
-+ tmp2 = M + 16; // 48
-+ }
-+ */
-+ if (freq_KHz == 690000) {
-+ M = state->tuner_crystal / 1000 / 3;
-+ MUL = 4;
-+ tmp = 2;
-+ tmp2 = M + 16; /* 48 */
-+ }
-+ _mt_fe_tn_get_reg(state, 0x33, &buf);
-+ buf &= 0xc0;
-+ buf += tmp2;
-+ _mt_fe_tn_set_reg(state, 0x33, buf);
-+ } else {
-+ return 1;
-+ }
-+ _mt_fe_tn_get_reg(state, 0x39, &buf);
-+ buf &= 0xf8;
-+ buf += tmp;
-+ _mt_fe_tn_set_reg(state, 0x39, buf);
-+ N = (freq_KHz * MUL * M / crystal_KHz) / 2 * 2 - 256;
-+ buf = (N >> 8) & 0xcf;
-+ if (state->tuner_mtt == 0xE1) {
-+ buf |= 0x30;
-+ }
-+ _mt_fe_tn_set_reg(state, 0x34, buf);
-+ buf = N & 0xff;
-+ _mt_fe_tn_set_reg(state, 0x35, buf);
-+ F = ((freq_KHz * MUL * M / (crystal_KHz / 1000) / 2) -
-+ (freq_KHz * MUL * M / crystal_KHz / 2 * 1000)) * 64 / 1000;
-+ buf = F & 0xff;
-+ _mt_fe_tn_set_reg(state, 0x36, buf);
-+ if (F == 0) {
-+ if (state->tuner_mtt == 0xD1) {
-+ _mt_fe_tn_set_reg(state, 0x3d, 0xca);
-+ } else if (state->tuner_mtt == 0xE1) {
-+ _mt_fe_tn_set_reg(state, 0x3d, 0xfe);
-+ } else {
-+ return 1;
-+ }
-+ _mt_fe_tn_set_reg(state, 0x3e, 0x9c);
-+ _mt_fe_tn_set_reg(state, 0x3f, 0x34);
-+ }
-+ if (F > 0) {
-+ if (state->tuner_mtt == 0xD1) {
-+ if ((F == 32) || (F == 16) || (F == 48)) {
-+ _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
-+ _mt_fe_tn_set_reg(state, 0x3d, 0x4a);
-+ _mt_fe_tn_set_reg(state, 0x3f, 0x36);
-+ } else {
-+ _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
-+ _mt_fe_tn_set_reg(state, 0x3d, 0x4a);
-+ _mt_fe_tn_set_reg(state, 0x3f, 0x36);
-+ }
-+ } else if (state->tuner_mtt == 0xE1) {
-+ _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
-+ _mt_fe_tn_set_reg(state, 0x3d, 0x7e);
-+ _mt_fe_tn_set_reg(state, 0x3f, 0x36);
-+ _mt_fe_tn_set_reg(state, 0x89, 0x84);
-+ _mt_fe_tn_get_reg(state, 0x39, &buf);
-+ buf = buf & 0x1f;
-+ _mt_fe_tn_set_reg(state, 0x39, buf);
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = buf | 0x02;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ } else {
-+ return 1;
-+ }
-+ }
-+ _mt_fe_tn_set_reg(state, 0x41, 0x00);
-+ if (state->tuner_mtt == 0xD1) {
-+ msleep(5);
-+ } else if (state->tuner_mtt == 0xE1) {
-+ msleep(2);
-+ } else {
-+ return 1;
-+ }
-+ _mt_fe_tn_set_reg(state, 0x41, 0x02);
-+ _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+ _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x80);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+
-+ return 0;
-+}
-+
-+static int _mt_fe_tn_set_PLL_freq_tc2800(struct m88dc2800_state *state)
-+{
-+ u8 buf, buf1;
-+ u32 freq_thres_div2_KHz, freq_thres_div3r_KHz,
-+ freq_thres_div3_KHz;
-+ const u32 freq_KHz = state->tuner_freq;
-+ if (state->tuner_mtt == 0xD1) {
-+ _mt_fe_tn_set_reg(state, 0x32, 0xe1);
-+ _mt_fe_tn_set_reg(state, 0x33, 0xa6);
-+ _mt_fe_tn_set_reg(state, 0x37, 0x7f);
-+ _mt_fe_tn_set_reg(state, 0x38, 0x20);
-+ _mt_fe_tn_set_reg(state, 0x39, 0x18);
-+ _mt_fe_tn_set_reg(state, 0x40, 0x40);
-+ freq_thres_div2_KHz = 520000;
-+ _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
-+ freq_thres_div2_KHz, 0, 0);
-+ msleep(5);
-+ _mt_fe_tn_get_reg(state, 0x3a, &buf);
-+ buf1 = buf;
-+ buf = buf & 0x03;
-+ buf1 = buf1 & 0x01;
-+ if ((buf1 == 0) || (buf == 3)) {
-+ freq_thres_div2_KHz = 420000;
-+ _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
-+ freq_thres_div2_KHz, 0,
-+ 0);
-+ msleep(5);
-+ _mt_fe_tn_get_reg(state, 0x3a, &buf);
-+ buf = buf & 0x07;
-+ if (buf == 5) {
-+ freq_thres_div2_KHz = 520000;
-+ _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
-+ freq_thres_div2_KHz,
-+ 0, 0);
-+ msleep(5);
-+ }
-+ }
-+ _mt_fe_tn_get_reg(state, 0x38, &buf);
-+ _mt_fe_tn_set_reg(state, 0x38, buf);
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = buf | 0x10;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+ _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = buf & 0xdf;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ _mt_fe_tn_set_reg(state, 0x40, 0x0);
-+ _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+ _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x80);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+ msleep(5);
-+ _mt_fe_tn_get_reg(state, 0x39, &buf);
-+ buf = buf >> 5;
-+ if (buf < 5) {
-+ _mt_fe_tn_get_reg(state, 0x39, &buf);
-+ buf = buf | 0xa0;
-+ buf = buf & 0xbf;
-+ _mt_fe_tn_set_reg(state, 0x39, buf);
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = buf | 0x02;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ }
-+ _mt_fe_tn_get_reg(state, 0x37, &buf);
-+ if (buf > 0x70) {
-+ buf = 0x7f;
-+ _mt_fe_tn_set_reg(state, 0x40, 0x40);
-+ }
-+ _mt_fe_tn_set_reg(state, 0x37, buf);
-+ _mt_fe_tn_get_reg(state, 0x38, &buf);
-+ if (buf < 0x0f) {
-+ buf = (buf & 0x0f) << 2;
-+ buf = buf + 0x0f;
-+ _mt_fe_tn_set_reg(state, 0x37, buf);
-+ } else if (buf < 0x1f) {
-+ buf = buf + 0x0f;
-+ _mt_fe_tn_set_reg(state, 0x37, buf);
-+ }
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = (buf | 0x20) & 0xef;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ _mt_fe_tn_set_reg(state, 0x41, 0x00);
-+ msleep(5);
-+ _mt_fe_tn_set_reg(state, 0x41, 0x02);
-+ } else if (state->tuner_mtt == 0xE1) {
-+ freq_thres_div2_KHz = 580000;
-+ freq_thres_div3r_KHz = 500000;
-+ freq_thres_div3_KHz = 440000;
-+ _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
-+ freq_thres_div2_KHz,
-+ freq_thres_div3r_KHz,
-+ freq_thres_div3_KHz);
-+ msleep(3);
-+ _mt_fe_tn_get_reg(state, 0x38, &buf);
-+ _mt_fe_tn_set_reg(state, 0x38, buf);
-+ _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+ _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x80);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+ msleep(3);
-+ _mt_fe_tn_get_reg(state, 0x38, &buf);
-+ _mt_fe_tn_set_reg(state, 0x38, buf);
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = buf | 0x10;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+ _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = buf & 0xdf;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x80);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+ msleep(3);
-+ _mt_fe_tn_get_reg(state, 0x37, &buf);
-+ _mt_fe_tn_set_reg(state, 0x37, buf);
-+ /*
-+ if ((freq_KHz == 802000) || (freq_KHz == 826000)) {
-+ _mt_fe_tn_set_reg(state, 0x37, 0x5e);
-+ }
-+ */
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = (buf & 0xef) | 0x30;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ _mt_fe_tn_set_reg(state, 0x41, 0x00);
-+ msleep(2);
-+ _mt_fe_tn_set_reg(state, 0x41, 0x02);
-+ } else {
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static int _mt_fe_tn_set_BB_tc2800(struct m88dc2800_state *state)
-+{
-+ return 0;
-+}
-+
-+ static int _mt_fe_tn_set_appendix_tc2800(struct m88dc2800_state *state)
-+
-+{
-+ u8 buf;
-+ const u32 freq_KHz = state->tuner_freq;
-+ if (state->tuner_mtt == 0xD1) {
-+ if ((freq_KHz == 123000) || (freq_KHz == 147000) ||
-+ (freq_KHz == 171000) || (freq_KHz == 195000)) {
-+ _mt_fe_tn_set_reg(state, 0x20, 0x1b);
-+ }
-+ if ((freq_KHz == 371000) || (freq_KHz == 419000) ||
-+ (freq_KHz == 610000) || (freq_KHz == 730000) ||
-+ (freq_KHz == 754000) || (freq_KHz == 826000)) {
-+ _mt_fe_tn_get_reg(state, 0x0d, &buf);
-+ _mt_fe_tn_set_reg(state, 0x0d, (u8) (buf + 1));
-+ }
-+ if ((freq_KHz == 522000) || (freq_KHz == 578000) ||
-+ (freq_KHz == 634000) || (freq_KHz == 690000) ||
-+ (freq_KHz == 834000)) {
-+ _mt_fe_tn_get_reg(state, 0x0d, &buf);
-+ _mt_fe_tn_set_reg(state, 0x0d, (u8) (buf - 1));
-+ }
-+ } else if (state->tuner_mtt == 0xE1) {
-+ _mt_fe_tn_set_reg(state, 0x20, 0xfc);
-+ if (freq_KHz == 123000 || freq_KHz == 147000 ||
-+ freq_KHz == 171000 || freq_KHz == 195000 ||
-+ freq_KHz == 219000 || freq_KHz == 267000 ||
-+ freq_KHz == 291000 || freq_KHz == 339000 ||
-+ freq_KHz == 387000 || freq_KHz == 435000 ||
-+ freq_KHz == 482000 || freq_KHz == 530000 ||
-+ freq_KHz == 722000 ||
-+ (state->tuner_custom_cfg == 1 && freq_KHz == 315000)) {
-+ _mt_fe_tn_set_reg(state, 0x20, 0x5c);
-+ }
-+ }
-+ return 0;
-+}
-+
-+ static int _mt_fe_tn_set_DAC_tc2800(struct m88dc2800_state *state)
-+{
-+ u8 buf, tempnumber;
-+ s32 N;
-+ s32 f1f2number, f1, f2, delta1, Totalnum1;
-+ s32 cntT, cntin, NCOI, z0, z1, z2, tmp;
-+ u32 fc, fadc, fsd, f2d;
-+ u32 FreqTrue108_Hz;
-+ s32 M = state->tuner_crystal / 4000;
-+ /* const u8 bandwidth = state->tuner_bandwidth; */
-+ const u16 DAC_fre = 108;
-+ const u32 crystal_KHz = state->tuner_crystal;
-+ const u32 DACFreq_KHz = state->tuner_dac;
-+ const u32 freq_KHz = state->tuner_freq;
-+
-+ if (state->tuner_mtt == 0xE1) {
-+ _mt_fe_tn_get_reg(state, 0x33, &buf);
-+ M = buf & 0x0f;
-+ if (M == 0)
-+ M = 6;
-+ }
-+ _mt_fe_tn_get_reg(state, 0x34, &buf);
-+ N = buf & 0x07;
-+ _mt_fe_tn_get_reg(state, 0x35, &buf);
-+ N = (N << 8) + buf;
-+ buf = ((N + 256) * crystal_KHz / M / DAC_fre + 500) / 1000;
-+ if (state->tuner_mtt == 0xE1) {
-+ _mt_fe_tn_set_appendix_tc2800(state);
-+ if (freq_KHz == 187000 || freq_KHz == 195000 ||
-+ freq_KHz == 131000 || freq_KHz == 211000 ||
-+ freq_KHz == 219000 || freq_KHz == 227000 ||
-+ freq_KHz == 267000 || freq_KHz == 299000 ||
-+ freq_KHz == 347000 || freq_KHz == 363000 ||
-+ freq_KHz == 395000 || freq_KHz == 403000 ||
-+ freq_KHz == 435000 || freq_KHz == 482000 ||
-+ freq_KHz == 474000 || freq_KHz == 490000 ||
-+ freq_KHz == 610000 || freq_KHz == 642000 ||
-+ freq_KHz == 666000 || freq_KHz == 722000 ||
-+ freq_KHz == 754000 ||
-+ ((freq_KHz == 379000 || freq_KHz == 467000 ||
-+ freq_KHz == 762000) && state->tuner_custom_cfg != 1)) {
-+ buf = buf + 1;
-+ }
-+ if (freq_KHz == 123000 || freq_KHz == 139000 ||
-+ freq_KHz == 147000 || freq_KHz == 171000 ||
-+ freq_KHz == 179000 || freq_KHz == 203000 ||
-+ freq_KHz == 235000 || freq_KHz == 251000 ||
-+ freq_KHz == 259000 || freq_KHz == 283000 ||
-+ freq_KHz == 331000 || freq_KHz == 363000 ||
-+ freq_KHz == 371000 || freq_KHz == 387000 ||
-+ freq_KHz == 411000 || freq_KHz == 427000 ||
-+ freq_KHz == 443000 || freq_KHz == 451000 ||
-+ freq_KHz == 459000 || freq_KHz == 506000 ||
-+ freq_KHz == 514000 || freq_KHz == 538000 ||
-+ freq_KHz == 546000 || freq_KHz == 554000 ||
-+ freq_KHz == 562000 || freq_KHz == 570000 ||
-+ freq_KHz == 578000 || freq_KHz == 602000 ||
-+ freq_KHz == 626000 || freq_KHz == 658000 ||
-+ freq_KHz == 690000 || freq_KHz == 714000 ||
-+ freq_KHz == 746000 || freq_KHz == 522000 ||
-+ freq_KHz == 826000 || freq_KHz == 155000 ||
-+ freq_KHz == 530000 ||
-+ ((freq_KHz == 275000 || freq_KHz == 355000) &&
-+ state->tuner_custom_cfg != 1) ||
-+ ((freq_KHz == 467000 || freq_KHz == 762000 ||
-+ freq_KHz == 778000 || freq_KHz == 818000) &&
-+ state->tuner_custom_cfg == 1)) {
-+ buf = buf - 1;
-+ }
-+ }
-+ _mt_fe_tn_set_reg(state, 0x0e, buf);
-+ _mt_fe_tn_set_reg(state, 0x0d, buf);
-+ f1f2number =
-+ (((DACFreq_KHz * M * buf) / crystal_KHz) << 16) / (N + 256) +
-+ (((DACFreq_KHz * M * buf) % crystal_KHz) << 16) / ((N + 256) *
-+ crystal_KHz);
-+ _mt_fe_tn_set_reg(state, 0xf1, (f1f2number & 0xff00) >> 8);
-+ _mt_fe_tn_set_reg(state, 0xf2, f1f2number & 0x00ff);
-+ FreqTrue108_Hz =
-+ (N + 256) * crystal_KHz / (M * buf) * 1000 +
-+ (((N + 256) * crystal_KHz) % (M * buf)) * 1000 / (M * buf);
-+ f1 = 4096;
-+ fc = FreqTrue108_Hz;
-+ fadc = fc / 4;
-+ fsd = 27000000;
-+ f2d = state->tuner_bandwidth * 1000 / 2 - 150;
-+ f2 = (fsd / 250) * f2d / ((fc + 500) / 1000);
-+ delta1 = ((f1 - f2) << 15) / f2;
-+ Totalnum1 = ((f1 - f2) << 15) - delta1 * f2;
-+ cntT = f2;
-+ cntin = Totalnum1;
-+ NCOI = delta1;
-+ z0 = cntin;
-+ z1 = cntT;
-+ z2 = NCOI;
-+ tempnumber = (z0 & 0xff00) >> 8;
-+ _mt_fe_tn_set_reg(state, 0xc9, (u8) (tempnumber & 0x0f));
-+ tempnumber = (z0 & 0xff);
-+ _mt_fe_tn_set_reg(state, 0xca, tempnumber);
-+ tempnumber = (z1 & 0xff00) >> 8;
-+ _mt_fe_tn_set_reg(state, 0xcb, tempnumber);
-+ tempnumber = (z1 & 0xff);
-+ _mt_fe_tn_set_reg(state, 0xcc, tempnumber);
-+ tempnumber = (z2 & 0xff00) >> 8;
-+ _mt_fe_tn_set_reg(state, 0xcd, tempnumber);
-+ tempnumber = (z2 & 0xff);
-+ _mt_fe_tn_set_reg(state, 0xce, tempnumber);
-+ tmp = f1;
-+ f1 = f2;
-+ f2 = tmp / 2;
-+ delta1 = ((f1 - f2) << 15) / f2;
-+ Totalnum1 = ((f1 - f2) << 15) - delta1 * f2;
-+ NCOI = (f1 << 15) / f2 - (1 << 15);
-+ cntT = f2;
-+ cntin = Totalnum1;
-+ z0 = cntin;
-+ z1 = cntT;
-+ z2 = NCOI;
-+ tempnumber = (z0 & 0xff00) >> 8;
-+ _mt_fe_tn_set_reg(state, 0xd9, (u8) (tempnumber & 0x0f));
-+ tempnumber = (z0 & 0xff);
-+ _mt_fe_tn_set_reg(state, 0xda, tempnumber);
-+ tempnumber = (z1 & 0xff00) >> 8;
-+ _mt_fe_tn_set_reg(state, 0xdb, tempnumber);
-+ tempnumber = (z1 & 0xff);
-+ _mt_fe_tn_set_reg(state, 0xdc, tempnumber);
-+ tempnumber = (z2 & 0xff00) >> 8;
-+ _mt_fe_tn_set_reg(state, 0xdd, tempnumber);
-+ tempnumber = (z2 & 0xff);
-+ _mt_fe_tn_set_reg(state, 0xde, tempnumber);
-+
-+ return 0;
-+}
-+
-+static int _mt_fe_tn_preset_tc2800(struct m88dc2800_state *state)
-+{
-+ if (state->tuner_mtt == 0xD1) {
-+ _mt_fe_tn_set_reg(state, 0x19, 0x4a);
-+ _mt_fe_tn_set_reg(state, 0x1b, 0x4b);
-+ _mt_fe_tn_set_reg(state, 0x04, 0x04);
-+ _mt_fe_tn_set_reg(state, 0x17, 0x0d);
-+ _mt_fe_tn_set_reg(state, 0x62, 0x6c);
-+ _mt_fe_tn_set_reg(state, 0x63, 0xf4);
-+ _mt_fe_tn_set_reg(state, 0x1f, 0x0e);
-+ _mt_fe_tn_set_reg(state, 0x6b, 0xf4);
-+ _mt_fe_tn_set_reg(state, 0x14, 0x01);
-+ _mt_fe_tn_set_reg(state, 0x5a, 0x75);
-+ _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+ _mt_fe_tn_set_reg(state, 0x72, 0xe0);
-+ _mt_fe_tn_set_reg(state, 0x70, 0x07);
-+ _mt_fe_tn_set_reg(state, 0x15, 0x7b);
-+ _mt_fe_tn_set_reg(state, 0x55, 0x71);
-+ _mt_fe_tn_set_reg(state, 0x75, 0x55);
-+ _mt_fe_tn_set_reg(state, 0x76, 0xac);
-+ _mt_fe_tn_set_reg(state, 0x77, 0x6c);
-+ _mt_fe_tn_set_reg(state, 0x78, 0x8b);
-+ _mt_fe_tn_set_reg(state, 0x79, 0x42);
-+ _mt_fe_tn_set_reg(state, 0x7a, 0xd2);
-+ _mt_fe_tn_set_reg(state, 0x81, 0x01);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x00);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x02);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x04);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x06);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x08);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x09);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x29);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x49);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x58);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x59);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x98);
-+ _mt_fe_tn_set_reg(state, 0x82, 0x99);
-+ _mt_fe_tn_set_reg(state, 0x10, 0x05);
-+ _mt_fe_tn_set_reg(state, 0x10, 0x0d);
-+ _mt_fe_tn_set_reg(state, 0x11, 0x95);
-+ _mt_fe_tn_set_reg(state, 0x11, 0x9d);
-+ if (state->tuner_loopthrough != 0) {
-+ _mt_fe_tn_set_reg(state, 0x67, 0x25);
-+ } else {
-+ _mt_fe_tn_set_reg(state, 0x67, 0x05);
-+ }
-+ } else if (state->tuner_mtt == 0xE1) {
-+ _mt_fe_tn_set_reg(state, 0x1b, 0x47);
-+ if (state->tuner_mode == 0) { /* DVB-C */
-+ _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+ _mt_fe_tn_set_reg(state, 0x62, 0x2c);
-+ _mt_fe_tn_set_reg(state, 0x63, 0x54);
-+ _mt_fe_tn_set_reg(state, 0x68, 0x0b);
-+ _mt_fe_tn_set_reg(state, 0x14, 0x00);
-+ } else { /* CTTB */
-+ _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+ _mt_fe_tn_set_reg(state, 0x62, 0x0c);
-+ _mt_fe_tn_set_reg(state, 0x63, 0x54);
-+ _mt_fe_tn_set_reg(state, 0x68, 0x0b);
-+ _mt_fe_tn_set_reg(state, 0x14, 0x05);
-+ }
-+ _mt_fe_tn_set_reg(state, 0x6f, 0x00);
-+ _mt_fe_tn_set_reg(state, 0x84, 0x04);
-+ _mt_fe_tn_set_reg(state, 0x5e, 0xbe);
-+ _mt_fe_tn_set_reg(state, 0x87, 0x07);
-+ _mt_fe_tn_set_reg(state, 0x8a, 0x1f);
-+ _mt_fe_tn_set_reg(state, 0x8b, 0x1f);
-+ _mt_fe_tn_set_reg(state, 0x88, 0x30);
-+ _mt_fe_tn_set_reg(state, 0x58, 0x34);
-+ _mt_fe_tn_set_reg(state, 0x61, 0x8c);
-+ _mt_fe_tn_set_reg(state, 0x6a, 0x42);
-+ }
-+ return 0;
-+}
-+
-+static int mt_fe_tn_wakeup_tc2800(struct m88dc2800_state *state)
-+{
-+ _mt_fe_tn_set_reg(state, 0x16, 0xb1);
-+ _mt_fe_tn_set_reg(state, 0x09, 0x7d);
-+ return 0;
-+}
-+
-+ static int mt_fe_tn_sleep_tc2800(struct m88dc2800_state *state)
-+{
-+ _mt_fe_tn_set_reg(state, 0x16, 0xb0);
-+ _mt_fe_tn_set_reg(state, 0x09, 0x6d);
-+ return 0;
-+}
-+
-+ static int mt_fe_tn_init_tc2800(struct m88dc2800_state *state)
-+{
-+ if (state->tuner_init_OK != 1) {
-+ state->tuner_dev_addr = 0x61; /* TUNER_I2C_ADDR_TC2800 */
-+ state->tuner_freq = 650000;
-+ state->tuner_qam = 0;
-+ state->tuner_mode = 0; // 0: DVB-C, 1: CTTB
-+ state->tuner_bandwidth = 8;
-+ state->tuner_loopthrough = 0;
-+ state->tuner_crystal = 24000;
-+ state->tuner_dac = 7200;
-+ state->tuner_mtt = 0x00;
-+ state->tuner_custom_cfg = 0;
-+ state->tuner_version = 30022; /* Driver version number */
-+ state->tuner_time = 12092611;
-+ state->tuner_init_OK = 1;
-+ }
-+ _mt_fe_tn_set_reg(state, 0x2b, 0x46);
-+ _mt_fe_tn_set_reg(state, 0x2c, 0x75);
-+ if (state->tuner_mtt == 0x00) {
-+ u8 tmp = 0;
-+ _mt_fe_tn_get_reg(state, 0x01, &tmp);
-+ printk(KERN_INFO "m88dc2800: tuner id = 0x%02x ", tmp);
-+ switch (tmp) {
-+ case 0x0d:
-+ state->tuner_mtt = 0xD1;
-+ break;
-+ case 0x8e:
-+ default:
-+ state->tuner_mtt = 0xE1;
-+ break;
-+ }
-+ }
-+ return 0;
-+}
-+
-+ static int mt_fe_tn_set_freq_tc2800(struct m88dc2800_state *state,
-+ u32 freq_KHz)
-+{
-+ u8 buf;
-+ u8 buf1;
-+
-+ mt_fe_tn_init_tc2800(state);
-+ state->tuner_freq = freq_KHz;
-+ _mt_fe_tn_set_reg(state, 0x21, freq_KHz > 500000 ? 0xb9 : 0x99);
-+ mt_fe_tn_wakeup_tc2800(state);
-+ _mt_fe_tn_set_reg(state, 0x05, 0x7f);
-+ _mt_fe_tn_set_reg(state, 0x06, 0xf8);
-+ _mt_fe_tn_set_RF_front_tc2800(state);
-+ _mt_fe_tn_set_PLL_freq_tc2800(state);
-+ _mt_fe_tn_set_DAC_tc2800(state);
-+ _mt_fe_tn_set_BB_tc2800(state);
-+ _mt_fe_tn_preset_tc2800(state);
-+ _mt_fe_tn_set_reg(state, 0x05, 0x00);
-+ _mt_fe_tn_set_reg(state, 0x06, 0x00);
-+ if (state->tuner_mtt == 0xD1) {
-+ _mt_fe_tn_set_reg(state, 0x00, 0x01);
-+ _mt_fe_tn_set_reg(state, 0x00, 0x00);
-+ msleep(5);
-+ _mt_fe_tn_set_reg(state, 0x41, 0x00);
-+ msleep(5);
-+ _mt_fe_tn_set_reg(state, 0x41, 0x02);
-+
-+ _mt_fe_tn_get_reg(state, 0x69, &buf1);
-+ buf1 = buf1 & 0x0f;
-+ _mt_fe_tn_get_reg(state, 0x61, &buf);
-+ buf = buf & 0x0f;
-+ if (buf == 0x0c)
-+ _mt_fe_tn_set_reg(state, 0x6a, 0x59);
-+ if (buf1 > 0x02) {
-+ if (freq_KHz > 600000)
-+ _mt_fe_tn_set_reg(state, 0x66, 0x44);
-+ else if (freq_KHz > 500000)
-+ _mt_fe_tn_set_reg(state, 0x66, 0x64);
-+ else
-+ _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+ }
-+ if (buf1 < 0x03) {
-+ if (freq_KHz > 800000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x64);
-+ else if (freq_KHz > 600000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+ else if (freq_KHz > 500000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+ else if (freq_KHz > 300000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x43);
-+ else if (freq_KHz > 220000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+ else if (freq_KHz > 110000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+ else
-+ _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+ msleep(5);
-+ } else if (buf < 0x0c) {
-+ if (freq_KHz > 800000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+ else if (freq_KHz > 600000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+ else if (freq_KHz > 500000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x34);
-+ else if (freq_KHz > 300000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x43);
-+ else if (freq_KHz > 220000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+ else if (freq_KHz > 110000)
-+ _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+ else
-+ _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+ msleep(5);
-+ }
-+ } else if ((state->tuner_mtt == 0xE1)) {
-+ _mt_fe_tn_set_reg(state, 0x00, 0x01);
-+ _mt_fe_tn_set_reg(state, 0x00, 0x00);
-+ msleep(20);
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = (buf & 0xef) | 0x28;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ msleep(50);
-+ _mt_fe_tn_get_reg(state, 0x38, &buf);
-+ _mt_fe_tn_set_reg(state, 0x38, buf);
-+ _mt_fe_tn_get_reg(state, 0x32, &buf);
-+ buf = (buf & 0xf7) | 0x10;
-+ _mt_fe_tn_set_reg(state, 0x32, buf);
-+ msleep(10);
-+ _mt_fe_tn_get_reg(state, 0x69, &buf);
-+ buf = buf & 0x03;
-+ _mt_fe_tn_set_reg(state, 0x2a, buf);
-+ if (buf > 0) {
-+ msleep(20);
-+ _mt_fe_tn_get_reg(state, 0x84, &buf);
-+ buf = buf & 0x1f;
-+ _mt_fe_tn_set_reg(state, 0x68, 0x0a);
-+ _mt_fe_tn_get_reg(state, 0x88, &buf1);
-+ buf1 = buf1 & 0x1f;
-+ if (buf <= buf1)
-+ _mt_fe_tn_set_reg(state, 0x66, 0x44);
-+ else
-+ _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+ } else {
-+ if (freq_KHz <= 600000)
-+ _mt_fe_tn_set_reg(state, 0x68, 0x0c);
-+ else
-+ _mt_fe_tn_set_reg(state, 0x68, 0x0e);
-+ _mt_fe_tn_set_reg(state, 0x30, 0xfb);
-+ _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x04);
-+ _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+ }
-+ if (state->tuner_loopthrough != 0) {
-+ _mt_fe_tn_get_reg(state, 0x28, &buf);
-+ if (buf == 0) {
-+ _mt_fe_tn_set_reg(state, 0x28, 0xff);
-+ _mt_fe_tn_get_reg(state, 0x61, &buf);
-+ buf = buf & 0x0f;
-+ if (buf > 9)
-+ _mt_fe_tn_set_reg(state, 0x67, 0x74);
-+ else if (buf > 6)
-+ _mt_fe_tn_set_reg(state, 0x67, 0x64);
-+ else if (buf > 3)
-+ _mt_fe_tn_set_reg(state, 0x67, 0x54);
-+ else
-+ _mt_fe_tn_set_reg(state, 0x67, 0x44);
-+ }
-+ } else {
-+ _mt_fe_tn_set_reg(state, 0x67, 0x34);
-+ }
-+ } else {
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+
-+/*
-+static int mt_fe_tn_set_BB_filter_band_tc2800(struct m88dc2800_state *state,
-+ u8 bandwidth)
-+{
-+ u8 buf, tmp;
-+
-+ _mt_fe_tn_get_reg(state, 0x53, &tmp);
-+
-+ if (bandwidth == 6)
-+ buf = 0x01 << 1;
-+ else if (bandwidth == 7)
-+ buf = 0x02 << 1;
-+ else if (bandwidth == 8)
-+ buf = 0x04 << 1;
-+ else
-+ buf = 0x04 << 1;
-+
-+ tmp &= 0xf1;
-+ tmp |= buf;
-+ _mt_fe_tn_set_reg(state, 0x53, tmp);
-+ state->tuner_bandwidth = bandwidth;
-+ return 0;
-+}
-+*/
-+
-+static s32 mt_fe_tn_get_signal_strength_tc2800(struct m88dc2800_state
-+ *state)
-+{
-+ s32 level = -107;
-+ s32 tmp1, tmp2, tmp3, tmp4, tmp5, tmp6;
-+ s32 val1, val2, val;
-+ s32 result2, result3, result4, result5, result6;
-+ s32 append;
-+ u8 tmp;
-+ s32 freq_KHz = (s32) state->tuner_freq;
-+ if (state->tuner_mtt == 0xD1) {
-+ _mt_fe_tn_get_reg(state, 0x61, &tmp);
-+ tmp1 = tmp & 0x0f;
-+ _mt_fe_tn_get_reg(state, 0x69, &tmp);
-+ tmp2 = tmp & 0x0f;
-+ _mt_fe_tn_get_reg(state, 0x73, &tmp);
-+ tmp3 = tmp & 0x07;
-+ _mt_fe_tn_get_reg(state, 0x7c, &tmp);
-+ tmp4 = (tmp >> 4) & 0x0f;
-+ _mt_fe_tn_get_reg(state, 0x7b, &tmp);
-+ tmp5 = tmp & 0x0f;
-+ _mt_fe_tn_get_reg(state, 0x7f, &tmp);
-+ tmp6 = (tmp >> 5) & 0x01;
-+ if (tmp1 > 6) {
-+ val1 = 0;
-+ if (freq_KHz <= 200000) {
-+ val2 = (tmp1 - 6) * 267;
-+ } else if (freq_KHz <= 600000) {
-+ val2 = (tmp1 - 6) * 280;
-+ } else {
-+ val2 = (tmp1 - 6) * 290;
-+ }
-+ val = val1 + val2;
-+ } else {
-+ if (tmp1 == 0) {
-+ val1 = -550;
-+ } else {
-+ val1 = 0;
-+ }
-+ if ((tmp1 < 4) && (freq_KHz >= 506000)) {
-+ val1 = -850;
-+ }
-+ val2 = 0;
-+ val = val1 + val2;
-+ }
-+ if (freq_KHz <= 95000) {
-+ result2 = tmp2 * 289;
-+ } else if (freq_KHz <= 155000) {
-+ result2 = tmp2 * 278;
-+ } else if (freq_KHz <= 245000) {
-+ result2 = tmp2 * 267;
-+ } else if (freq_KHz <= 305000) {
-+ result2 = tmp2 * 256;
-+ } else if (freq_KHz <= 335000) {
-+ result2 = tmp2 * 244;
-+ } else if (freq_KHz <= 425000) {
-+ result2 = tmp2 * 233;
-+ } else if (freq_KHz <= 575000) {
-+ result2 = tmp2 * 222;
-+ } else if (freq_KHz <= 665000) {
-+ result2 = tmp2 * 211;
-+ } else {
-+ result2 = tmp2 * 200;
-+ }
-+ result3 = (6 - tmp3) * 100;
-+ result4 = 300 * tmp4;
-+ result5 = 50 * tmp5;
-+ result6 = 300 * tmp6;
-+ if (freq_KHz < 105000) {
-+ append = -450;
-+ } else if (freq_KHz <= 227000) {
-+ append = -4 * (freq_KHz / 1000 - 100) + 150;
-+ } else if (freq_KHz <= 305000) {
-+ append = -4 * (freq_KHz / 1000 - 100);
-+ } else if (freq_KHz <= 419000) {
-+ append = 500 - 40 * (freq_KHz / 1000 - 300) / 17 + 130;
-+ } else if (freq_KHz <= 640000) {
-+ append = 500 - 40 * (freq_KHz / 1000 - 300) / 17;
-+ } else {
-+ append = -500;
-+ }
-+ level = append - (val + result2 + result3 + result4 +
-+ result5 + result6);
-+ level /= 100;
-+ } else if (state->tuner_mtt == 0xE1) {
-+ _mt_fe_tn_get_reg(state, 0x61, &tmp);
-+ tmp1 = tmp & 0x0f;
-+ _mt_fe_tn_get_reg(state, 0x84, &tmp);
-+ tmp2 = tmp & 0x1f;
-+ _mt_fe_tn_get_reg(state, 0x69, &tmp);
-+ tmp3 = tmp & 0x03;
-+ _mt_fe_tn_get_reg(state, 0x73, &tmp);
-+ tmp4 = tmp & 0x0f;
-+ _mt_fe_tn_get_reg(state, 0x7c, &tmp);
-+ tmp5 = (tmp >> 4) & 0x0f;
-+ _mt_fe_tn_get_reg(state, 0x7b, &tmp);
-+ tmp6 = tmp & 0x0f;
-+ if (freq_KHz < 151000) {
-+ result2 = (1150 - freq_KHz / 100) * 163 / 33 + 4230;
-+ result3 = (1150 - freq_KHz / 100) * 115 / 33 + 1850;
-+ result4 = -3676 * (freq_KHz / 1000) / 100 + 6115;
-+ } else if (freq_KHz < 257000) {
-+ result2 = (1540 - freq_KHz / 100) * 11 / 4 + 3870;
-+ result3 = (1540 - freq_KHz / 100) * 205 / 96 + 2100;
-+ result4 = -21 * freq_KHz / 1000 + 5084;
-+ } else if (freq_KHz < 305000) {
-+ result2 = (2620 - freq_KHz / 100) * 5 / 3 + 2770;
-+ result3 = (2620 - freq_KHz / 100) * 10 / 7 + 1700;
-+ result4 = 650;
-+ } else if (freq_KHz < 449000) {
-+ result2 = (307 - freq_KHz / 1000) * 82 / 27 + 11270;
-+ result3 = (3100 - freq_KHz / 100) * 5 / 3 + 10000;
-+ result4 = 134 * freq_KHz / 10000 + 11875;
-+ } else {
-+ result2 = (307 - freq_KHz / 1000) * 82 / 27 + 11270;
-+ result3 = 8400;
-+ result4 = 5300;
-+ }
-+ if (tmp1 > 6) {
-+ val1 = result2;
-+ val2 = 2900;
-+ val = 500;
-+ } else if (tmp1 > 0) {
-+ val1 = result3;
-+ val2 = 2700;
-+ val = 500;
-+ } else {
-+ val1 = result4;
-+ val2 = 2700;
-+ val = 400;
-+ }
-+ level = val1 - (val2 * tmp1 + 500 * tmp2 + 3000 * tmp3 -
-+ 500 * tmp4 + 3000 * tmp5 + val * tmp6) - 1000;
-+ level /= 1000;
-+ }
-+ return level;
-+}
-+
-+
-+/* m88dc2800 operation functions */
-+u8 M88DC2000GetLock(struct m88dc2800_state * state)
-+{
-+ u8 u8ret = 0;
-+ if (ReadReg(state, 0x80) < 0x06) {
-+ if ((ReadReg(state, 0xdf) & 0x80) == 0x80
-+ &&(ReadReg(state, 0x91) & 0x23) == 0x03
-+ &&(ReadReg(state, 0x43) & 0x08) == 0x08)
-+ u8ret = 1;
-+ else
-+ u8ret = 0;
-+ } else {
-+ if ((ReadReg(state, 0x85) & 0x08) == 0x08)
-+ u8ret = 1;
-+ else
-+ u8ret = 0;
-+ }
-+ dprintk("%s, lock=%d\n", __func__, u8ret);
-+ return u8ret;
-+}
-+
-+static int M88DC2000SetTsType(struct m88dc2800_state *state, u8 type)
-+{
-+ u8 regC2H;
-+
-+ if (type == 3) {
-+ WriteReg(state, 0x84, 0x6A);
-+ WriteReg(state, 0xC0, 0x43);
-+ WriteReg(state, 0xE2, 0x06);
-+ regC2H = ReadReg(state, 0xC2);
-+ regC2H &= 0xC0;
-+ regC2H |= 0x1B;
-+ WriteReg(state, 0xC2, regC2H);
-+ WriteReg(state, 0xC1, 0x60); /* common interface */
-+ } else if (type == 1) {
-+ WriteReg(state, 0x84, 0x6A);
-+ WriteReg(state, 0xC0, 0x47); /* serial format */
-+ WriteReg(state, 0xE2, 0x02);
-+ regC2H = ReadReg(state, 0xC2);
-+ regC2H &= 0xC7;
-+ WriteReg(state, 0xC2, regC2H);
-+ WriteReg(state, 0xC1, 0x00);
-+ } else {
-+ WriteReg(state, 0x84, 0x6C);
-+ WriteReg(state, 0xC0, 0x43); /* parallel format */
-+ WriteReg(state, 0xE2, 0x06);
-+ regC2H = ReadReg(state, 0xC2);
-+ regC2H &= 0xC7;
-+ WriteReg(state, 0xC2, regC2H);
-+ WriteReg(state, 0xC1, 0x00);
-+ }
-+ return 0;
-+}
-+
-+static int M88DC2000RegInitial_TC2800(struct m88dc2800_state *state)
-+{
-+ u8 RegE3H, RegE4H;
-+
-+ WriteReg(state, 0x00, 0x48);
-+ WriteReg(state, 0x01, 0x09);
-+ WriteReg(state, 0xFB, 0x0A);
-+ WriteReg(state, 0xFC, 0x0B);
-+ WriteReg(state, 0x02, 0x0B);
-+ WriteReg(state, 0x03, 0x18);
-+ WriteReg(state, 0x05, 0x0D);
-+ WriteReg(state, 0x36, 0x80);
-+ WriteReg(state, 0x43, 0x40);
-+ WriteReg(state, 0x55, 0x7A);
-+ WriteReg(state, 0x56, 0xD9);
-+ WriteReg(state, 0x57, 0xDF);
-+ WriteReg(state, 0x58, 0x39);
-+ WriteReg(state, 0x5A, 0x00);
-+ WriteReg(state, 0x5C, 0x71);
-+ WriteReg(state, 0x5D, 0x23);
-+ WriteReg(state, 0x86, 0x40);
-+ WriteReg(state, 0xF9, 0x08);
-+ WriteReg(state, 0x61, 0x40);
-+ WriteReg(state, 0x62, 0x0A);
-+ WriteReg(state, 0x90, 0x06);
-+ WriteReg(state, 0xDE, 0x00);
-+ WriteReg(state, 0xA0, 0x03);
-+ WriteReg(state, 0xDF, 0x81);
-+ WriteReg(state, 0xFA, 0x40);
-+ WriteReg(state, 0x37, 0x10);
-+ WriteReg(state, 0xF0, 0x40);
-+ WriteReg(state, 0xF2, 0x9C);
-+ WriteReg(state, 0xF3, 0x40);
-+ RegE3H = ReadReg(state, 0xE3);
-+ RegE4H = ReadReg(state, 0xE4);
-+ if (((RegE3H & 0xC0) == 0x00) && ((RegE4H & 0xC0) == 0x00)) {
-+ WriteReg(state, 0x30, 0xFF);
-+ WriteReg(state, 0x31, 0x00);
-+ WriteReg(state, 0x32, 0x00);
-+ WriteReg(state, 0x33, 0x00);
-+ WriteReg(state, 0x35, 0x32);
-+ WriteReg(state, 0x40, 0x00);
-+ WriteReg(state, 0x41, 0x10);
-+ WriteReg(state, 0xF1, 0x02);
-+ WriteReg(state, 0xF4, 0x04);
-+ WriteReg(state, 0xF5, 0x00);
-+ WriteReg(state, 0x42, 0x14);
-+ WriteReg(state, 0xE1, 0x25);
-+ } else if (((RegE3H & 0xC0) == 0x80) && ((RegE4H & 0xC0) == 0x40)) {
-+ WriteReg(state, 0x30, 0xFF);
-+ WriteReg(state, 0x31, 0x00);
-+ WriteReg(state, 0x32, 0x00);
-+ WriteReg(state, 0x33, 0x00);
-+ WriteReg(state, 0x35, 0x32);
-+ WriteReg(state, 0x39, 0x00);
-+ WriteReg(state, 0x3A, 0x00);
-+ WriteReg(state, 0x40, 0x00);
-+ WriteReg(state, 0x41, 0x10);
-+ WriteReg(state, 0xF1, 0x00);
-+ WriteReg(state, 0xF4, 0x00);
-+ WriteReg(state, 0xF5, 0x40);
-+ WriteReg(state, 0x42, 0x14);
-+ WriteReg(state, 0xE1, 0x25);
-+ } else if ((RegE3H == 0x80 || RegE3H == 0x81)
-+ && (RegE4H == 0x80 || RegE4H == 0x81)) {
-+ WriteReg(state, 0x30, 0xFF);
-+ WriteReg(state, 0x31, 0x00);
-+ WriteReg(state, 0x32, 0x00);
-+ WriteReg(state, 0x33, 0x00);
-+ WriteReg(state, 0x35, 0x32);
-+ WriteReg(state, 0x39, 0x00);
-+ WriteReg(state, 0x3A, 0x00);
-+ WriteReg(state, 0xF1, 0x00);
-+ WriteReg(state, 0xF4, 0x00);
-+ WriteReg(state, 0xF5, 0x40);
-+ WriteReg(state, 0x42, 0x24);
-+ WriteReg(state, 0xE1, 0x25);
-+ WriteReg(state, 0x92, 0x7F);
-+ WriteReg(state, 0x93, 0x91);
-+ WriteReg(state, 0x95, 0x00);
-+ WriteReg(state, 0x2B, 0x33);
-+ WriteReg(state, 0x2A, 0x2A);
-+ WriteReg(state, 0x2E, 0x80);
-+ WriteReg(state, 0x25, 0x25);
-+ WriteReg(state, 0x2D, 0xFF);
-+ WriteReg(state, 0x26, 0xFF);
-+ WriteReg(state, 0x27, 0x00);
-+ WriteReg(state, 0x24, 0x25);
-+ WriteReg(state, 0xA4, 0xFF);
-+ WriteReg(state, 0xA3, 0x0D);
-+ } else {
-+ WriteReg(state, 0x30, 0xFF);
-+ WriteReg(state, 0x31, 0x00);
-+ WriteReg(state, 0x32, 0x00);
-+ WriteReg(state, 0x33, 0x00);
-+ WriteReg(state, 0x35, 0x32);
-+ WriteReg(state, 0x39, 0x00);
-+ WriteReg(state, 0x3A, 0x00);
-+ WriteReg(state, 0xF1, 0x00);
-+ WriteReg(state, 0xF4, 0x00);
-+ WriteReg(state, 0xF5, 0x40);
-+ WriteReg(state, 0x42, 0x24);
-+ WriteReg(state, 0xE1, 0x27);
-+ WriteReg(state, 0x92, 0x7F);
-+ WriteReg(state, 0x93, 0x91);
-+ WriteReg(state, 0x95, 0x00);
-+ WriteReg(state, 0x2B, 0x33);
-+ WriteReg(state, 0x2A, 0x2A);
-+ WriteReg(state, 0x2E, 0x80);
-+ WriteReg(state, 0x25, 0x25);
-+ WriteReg(state, 0x2D, 0xFF);
-+ WriteReg(state, 0x26, 0xFF);
-+ WriteReg(state, 0x27, 0x00);
-+ WriteReg(state, 0x24, 0x25);
-+ WriteReg(state, 0xA4, 0xFF);
-+ WriteReg(state, 0xA3, 0x10);
-+ }
-+ WriteReg(state, 0xF6, 0x4E);
-+ WriteReg(state, 0xF7, 0x20);
-+ WriteReg(state, 0x89, 0x02);
-+ WriteReg(state, 0x14, 0x08);
-+ WriteReg(state, 0x6F, 0x0D);
-+ WriteReg(state, 0x10, 0xFF);
-+ WriteReg(state, 0x11, 0x00);
-+ WriteReg(state, 0x12, 0x30);
-+ WriteReg(state, 0x13, 0x23);
-+ WriteReg(state, 0x60, 0x00);
-+ WriteReg(state, 0x69, 0x00);
-+ WriteReg(state, 0x6A, 0x03);
-+ WriteReg(state, 0xE0, 0x75);
-+ WriteReg(state, 0x8D, 0x29);
-+ WriteReg(state, 0x4E, 0xD8);
-+ WriteReg(state, 0x88, 0x80);
-+ WriteReg(state, 0x52, 0x79);
-+ WriteReg(state, 0x53, 0x03);
-+ WriteReg(state, 0x59, 0x30);
-+ WriteReg(state, 0x5E, 0x02);
-+ WriteReg(state, 0x5F, 0x0F);
-+ WriteReg(state, 0x71, 0x03);
-+ WriteReg(state, 0x72, 0x12);
-+ WriteReg(state, 0x73, 0x12);
-+
-+ return 0;
-+}
-+
-+static int M88DC2000AutoTSClock_P(struct m88dc2800_state *state, u32 sym,
-+ u16 qam)
-+{
-+ u32 dataRate;
-+ u8 clk_div, value;
-+ printk(KERN_INFO
-+ "m88dc2800: M88DC2000AutoTSClock_P, symrate=%d qam=%d\n",
-+ sym, qam);
-+ switch (qam) {
-+ case 16:
-+ dataRate = 4;
-+ break;
-+ case 32:
-+ dataRate = 5;
-+ break;
-+ case 128:
-+ dataRate = 7;
-+ break;
-+ case 256:
-+ dataRate = 8;
-+ break;
-+ case 64:
-+ default:
-+ dataRate = 6;
-+ break;
-+ }
-+ dataRate *= sym * 105;
-+ dataRate /= 800;
-+ if (dataRate <= 4115)
-+ clk_div = 0x05;
-+ else if (dataRate <= 4800)
-+ clk_div = 0x04;
-+ else if (dataRate <= 5760)
-+ clk_div = 0x03;
-+ else if (dataRate <= 7200)
-+ clk_div = 0x02;
-+ else if (dataRate <= 9600)
-+ clk_div = 0x01;
-+ else
-+ clk_div = 0x00;
-+ value = ReadReg(state, 0xC2);
-+ value &= 0xc0;
-+ value |= clk_div;
-+ WriteReg(state, 0xC2, value);
-+ return 0;
-+}
-+
-+static int M88DC2000AutoTSClock_C(struct m88dc2800_state *state, u32 sym,
-+ u16 qam)
-+{
-+ u32 dataRate;
-+ u8 clk_div, value;
-+ printk(KERN_INFO
-+ "m88dc2800: M88DC2000AutoTSClock_C, symrate=%d qam=%d\n",
-+ sym, qam);
-+ switch (qam) {
-+ case 16:
-+ dataRate = 4;
-+ break;
-+ case 32:
-+ dataRate = 5;
-+ break;
-+ case 128:
-+ dataRate = 7;
-+ break;
-+ case 256:
-+ dataRate = 8;
-+ break;
-+ case 64:
-+ default:
-+ dataRate = 6;
-+ break;
-+ }
-+ dataRate *= sym * 105;
-+ dataRate /= 800;
-+ if (dataRate <= 4115)
-+ clk_div = 0x3F;
-+ else if (dataRate <= 4800)
-+ clk_div = 0x36;
-+ else if (dataRate <= 5760)
-+ clk_div = 0x2D;
-+ else if (dataRate <= 7200)
-+ clk_div = 0x24;
-+ else if (dataRate <= 9600)
-+ clk_div = 0x1B;
-+ else
-+ clk_div = 0x12;
-+ value = ReadReg(state, 0xC2);
-+ value &= 0xc0;
-+ value |= clk_div;
-+ WriteReg(state, 0xC2, value);
-+ return 0;
-+}
-+
-+static int M88DC2000SetTxMode(struct m88dc2800_state *state, u8 inverted,
-+ u8 j83)
-+{
-+ u8 value = 0;
-+ if (inverted)
-+ value |= 0x08; /* spectrum inverted */
-+ if (j83)
-+ value |= 0x01; /* J83C */
-+ WriteReg(state, 0x83, value);
-+ return 0;
-+}
-+
-+static int M88DC2000SoftReset(struct m88dc2800_state *state)
-+{
-+ WriteReg(state, 0x80, 0x01);
-+ WriteReg(state, 0x82, 0x00);
-+ msleep(1);
-+ WriteReg(state, 0x80, 0x00);
-+ return 0;
-+}
-+
-+static int M88DC2000SetSym(struct m88dc2800_state *state, u32 sym, u32 xtal)
-+{
-+ u8 value;
-+ u8 reg6FH, reg12H;
-+ u64 fValue;
-+ u32 dwValue;
-+
-+ printk(KERN_INFO "%s, sym=%d, xtal=%d\n", __func__, sym, xtal);
-+ fValue = 4294967296 * (sym + 10);
-+ do_div(fValue, xtal);
-+
-+ /* fValue = 4294967296 * (sym + 10) / xtal; */
-+ dwValue = (u32) fValue;
-+ printk(KERN_INFO "%s, fvalue1=%x\n", __func__, dwValue);
-+ WriteReg(state, 0x58, (u8) ((dwValue >> 24) & 0xff));
-+ WriteReg(state, 0x57, (u8) ((dwValue >> 16) & 0xff));
-+ WriteReg(state, 0x56, (u8) ((dwValue >> 8) & 0xff));
-+ WriteReg(state, 0x55, (u8) ((dwValue >> 0) & 0xff));
-+
-+ /* fValue = 2048 * xtal / sym; */
-+ fValue = 2048 * xtal;
-+ do_div(fValue, sym);
-+ dwValue = (u32) fValue;
-+ printk(KERN_INFO "%s, fvalue2=%x\n", __func__, dwValue);
-+ WriteReg(state, 0x5D, (u8) ((dwValue >> 8) & 0xff));
-+ WriteReg(state, 0x5C, (u8) ((dwValue >> 0) & 0xff));
-+ value = ReadReg(state, 0x5A);
-+ if (((dwValue >> 16) & 0x0001) == 0)
-+ value &= 0x7F;
-+ else
-+ value |= 0x80;
-+ WriteReg(state, 0x5A, value);
-+ value = ReadReg(state, 0x89);
-+ if (sym <= 1800)
-+ value |= 0x01;
-+ else
-+ value &= 0xFE;
-+ WriteReg(state, 0x89, value);
-+ if (sym >= 6700) {
-+ reg6FH = 0x0D;
-+ reg12H = 0x30;
-+ } else if (sym >= 4000) {
-+ fValue = 22 * 4096 / sym;
-+ reg6FH = (u8) fValue;
-+ reg12H = 0x30;
-+ } else if (sym >= 2000) {
-+ fValue = 14 * 4096 / sym;
-+ reg6FH = (u8) fValue;
-+ reg12H = 0x20;
-+ } else {
-+ fValue = 7 * 4096 / sym;
-+ reg6FH = (u8) fValue;
-+ reg12H = 0x10;
-+ }
-+ WriteReg(state, 0x6F, reg6FH);
-+ WriteReg(state, 0x12, reg12H);
-+ if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+ && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+ if (sym < 3000) {
-+ WriteReg(state, 0x6C, 0x16);
-+ WriteReg(state, 0x6D, 0x10);
-+ WriteReg(state, 0x6E, 0x18);
-+ } else {
-+ WriteReg(state, 0x6C, 0x14);
-+ WriteReg(state, 0x6D, 0x0E);
-+ WriteReg(state, 0x6E, 0x36);
-+ }
-+ } else {
-+ WriteReg(state, 0x6C, 0x16);
-+ WriteReg(state, 0x6D, 0x10);
-+ WriteReg(state, 0x6E, 0x18);
-+ }
-+ return 0;
-+}
-+
-+static int M88DC2000SetQAM(struct m88dc2800_state *state, u16 qam)
-+{
-+ u8 reg00H, reg4AH, regC2H, reg44H, reg4CH, reg4DH, reg74H, value;
-+ u8 reg8BH, reg8EH;
-+ printk(KERN_INFO "%s, qam=%d\n", __func__, qam);
-+ regC2H = ReadReg(state, 0xC2);
-+ regC2H &= 0xF8;
-+ switch (qam) {
-+ case 16: /* 16 QAM */
-+ reg00H = 0x08;
-+ reg4AH = 0x0F;
-+ regC2H |= 0x02;
-+ reg44H = 0xAA;
-+ reg4CH = 0x0C;
-+ reg4DH = 0xF7;
-+ reg74H = 0x0E;
-+ if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+ && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+ reg8BH = 0x5A;
-+ reg8EH = 0xBD;
-+ } else {
-+ reg8BH = 0x5B;
-+ reg8EH = 0x9D;
-+ }
-+ WriteReg(state, 0x6E, 0x18);
-+ break;
-+ case 32: /* 32 QAM */
-+ reg00H = 0x18;
-+ reg4AH = 0xFB;
-+ regC2H |= 0x02;
-+ reg44H = 0xAA;
-+ reg4CH = 0x0C;
-+ reg4DH = 0xF7;
-+ reg74H = 0x0E;
-+ if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+ && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+ reg8BH = 0x5A;
-+ reg8EH = 0xBD;
-+ } else {
-+ reg8BH = 0x5B;
-+ reg8EH = 0x9D;
-+ }
-+ WriteReg(state, 0x6E, 0x18);
-+ break;
-+ case 64: /* 64 QAM */
-+ reg00H = 0x48;
-+ reg4AH = 0xCD;
-+ regC2H |= 0x02;
-+ reg44H = 0xAA;
-+ reg4CH = 0x0C;
-+ reg4DH = 0xF7;
-+ reg74H = 0x0E;
-+ if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+ && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+ reg8BH = 0x5A;
-+ reg8EH = 0xBD;
-+ } else {
-+ reg8BH = 0x5B;
-+ reg8EH = 0x9D;
-+ }
-+ break;
-+ case 128: /* 128 QAM */
-+ reg00H = 0x28;
-+ reg4AH = 0xFF;
-+ regC2H |= 0x02;
-+ reg44H = 0xA9;
-+ reg4CH = 0x08;
-+ reg4DH = 0xF5;
-+ reg74H = 0x0E;
-+ reg8BH = 0x5B;
-+ reg8EH = 0x9D;
-+ break;
-+ case 256: /* 256 QAM */
-+ reg00H = 0x38;
-+ reg4AH = 0xCD;
-+ if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+ && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+ regC2H |= 0x02;
-+ } else {
-+ regC2H |= 0x01;
-+ }
-+ reg44H = 0xA9;
-+ reg4CH = 0x08;
-+ reg4DH = 0xF5;
-+ reg74H = 0x0E;
-+ reg8BH = 0x5B;
-+ reg8EH = 0x9D;
-+ break;
-+ default: /* 64 QAM */
-+ reg00H = 0x48;
-+ reg4AH = 0xCD;
-+ regC2H |= 0x02;
-+ reg44H = 0xAA;
-+ reg4CH = 0x0C;
-+ reg4DH = 0xF7;
-+ reg74H = 0x0E;
-+ if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+ && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+ reg8BH = 0x5A;
-+ reg8EH = 0xBD;
-+ } else {
-+ reg8BH = 0x5B;
-+ reg8EH = 0x9D;
-+ }
-+ break;
-+ }
-+ WriteReg(state, 0x00, reg00H);
-+ value = ReadReg(state, 0x88);
-+ value |= 0x08;
-+ WriteReg(state, 0x88, value);
-+ WriteReg(state, 0x4B, 0xFF);
-+ WriteReg(state, 0x4A, reg4AH);
-+ value &= 0xF7;
-+ WriteReg(state, 0x88, value);
-+ WriteReg(state, 0xC2, regC2H);
-+ WriteReg(state, 0x44, reg44H);
-+ WriteReg(state, 0x4C, reg4CH);
-+ WriteReg(state, 0x4D, reg4DH);
-+ WriteReg(state, 0x74, reg74H);
-+ WriteReg(state, 0x8B, reg8BH);
-+ WriteReg(state, 0x8E, reg8EH);
-+ return 0;
-+}
-+
-+static int M88DC2000WriteTuner_TC2800(struct m88dc2800_state *state,
-+ u32 freq_KHz)
-+{
-+ printk(KERN_INFO "%s, freq=%d KHz\n", __func__, freq_KHz);
-+ return mt_fe_tn_set_freq_tc2800(state, freq_KHz);
-+}
-+
-+static int m88dc2800_init(struct dvb_frontend *fe)
-+{
-+ dprintk("%s()\n", __func__);
-+ return 0;
-+}
-+
-+static int m88dc2800_set_parameters(struct dvb_frontend *fe)
-+{
-+ struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-+ u8 is_annex_c, is_update;
-+ u16 temp_qam;
-+ s32 waiting_time;
-+ struct m88dc2800_state *state = fe->demodulator_priv;
-+
-+ is_annex_c = c->delivery_system == SYS_DVBC_ANNEX_C ? 1 : 0;
-+
-+ switch (c->modulation) {
-+ case QAM_16:
-+ temp_qam = 16;
-+ break;
-+ case QAM_32:
-+ temp_qam = 32;
-+ break;
-+ case QAM_128:
-+ temp_qam = 128;
-+ break;
-+ case QAM_256:
-+ temp_qam = 256;
-+ break;
-+ default: /* QAM_64 */
-+ temp_qam = 64;
-+ break;
-+ }
-+
-+ state->inverted = c->inversion == INVERSION_ON ? 1 : 0;
-+
-+ printk(KERN_INFO
-+ "m88dc2800: state, freq=%d qam=%d sym=%d inverted=%d xtal=%d\n",
-+ state->freq, state->qam, state->sym, state->inverted,
-+ state->xtal);
-+ printk(KERN_INFO
-+ "m88dc2800: set frequency to %d qam=%d symrate=%d annex-c=%d\n",
-+ c->frequency, temp_qam, c->symbol_rate, is_annex_c);
-+
-+ is_update = 0;
-+ WriteReg(state, 0x80, 0x01);
-+ if (c->frequency != state->freq) {
-+ M88DC2000WriteTuner_TC2800(state, c->frequency / 1000);
-+ state->freq = c->frequency;
-+ }
-+ if (c->symbol_rate != state->sym) {
-+ M88DC2000SetSym(state, c->symbol_rate / 1000, state->xtal);
-+ state->sym = c->symbol_rate;
-+ is_update = 1;
-+ }
-+ if (temp_qam != state->qam) {
-+ M88DC2000SetQAM(state, temp_qam);
-+ state->qam = temp_qam;
-+ is_update = 1;
-+ }
-+
-+ if (is_update != 0) {
-+ if (state->config->ts_mode == 3)
-+ M88DC2000AutoTSClock_C(state, state->sym / 1000,
-+ temp_qam);
-+ else
-+ M88DC2000AutoTSClock_P(state, state->sym / 1000,
-+ temp_qam);
-+ }
-+
-+ M88DC2000SetTxMode(state, state->inverted, is_annex_c);
-+ M88DC2000SoftReset(state);
-+ if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+ && ((ReadReg(state, 0xE4) & 0x80) == 0x80))
-+ waiting_time = 800;
-+ else
-+ waiting_time = 500;
-+ while (waiting_time > 0) {
-+ msleep(50);
-+ waiting_time -= 50;
-+ if (M88DC2000GetLock(state))
-+ return 0;
-+ }
-+
-+ state->inverted = (state->inverted != 0) ? 0 : 1;
-+ M88DC2000SetTxMode(state, state->inverted, is_annex_c);
-+ M88DC2000SoftReset(state);
-+ if (((ReadReg(state, 0xE3) & 0x80) == 0x80) &&
-+ ((ReadReg(state, 0xE4) & 0x80) == 0x80))
-+ waiting_time = 800;
-+ else
-+ waiting_time = 500;
-+ while (waiting_time > 0) {
-+ msleep(50);
-+ waiting_time -= 50;
-+ if (M88DC2000GetLock(state))
-+ return 0;
-+ }
-+ return 0;
-+}
-+
-+static int m88dc2800_read_status(struct dvb_frontend *fe,
-+ fe_status_t * status)
-+{
-+ struct m88dc2800_state *state = fe->demodulator_priv;
-+ *status = 0;
-+
-+ if (M88DC2000GetLock(state)) {
-+ *status = FE_HAS_SIGNAL | FE_HAS_CARRIER
-+ |FE_HAS_SYNC | FE_HAS_VITERBI | FE_HAS_LOCK;
-+ }
-+ return 0;
-+}
-+
-+static int m88dc2800_read_ber(struct dvb_frontend *fe, u32 * ber)
-+{
-+ struct m88dc2800_state *state = fe->demodulator_priv;
-+ u16 tmp;
-+
-+ if (M88DC2000GetLock(state) == 0) {
-+ state->ber = 0;
-+ } else if ((ReadReg(state, 0xA0) & 0x80) != 0x80) {
-+ tmp = ReadReg(state, 0xA2) << 8;
-+ tmp += ReadReg(state, 0xA1);
-+ state->ber = tmp;
-+ WriteReg(state, 0xA0, 0x05);
-+ WriteReg(state, 0xA0, 0x85);
-+ }
-+ *ber = state->ber;
-+ return 0;
-+}
-+
-+static int m88dc2800_read_signal_strength(struct dvb_frontend *fe,
-+ u16 * strength)
-+{
-+ struct m88dc2800_state *state = fe->demodulator_priv;
-+ s16 tuner_strength;
-+
-+ tuner_strength = mt_fe_tn_get_signal_strength_tc2800(state);
-+ *strength = tuner_strength < -107 ? 0 : tuner_strength + 107;
-+
-+ return 0;
-+}
-+
-+static int m88dc2800_read_snr(struct dvb_frontend *fe, u16 * snr)
-+{
-+ static const u32 mes_log[] = {
-+ 0, 3010, 4771, 6021, 6990, 7781, 8451, 9031, 9542, 10000,
-+ 10414, 10792, 11139, 11461, 11761, 12041, 12304, 12553, 12788,
-+ 13010, 13222, 13424, 13617, 13802, 13979, 14150, 14314, 14472,
-+ 14624, 14771, 14914, 15052, 15185, 15315, 15441, 15563, 15682,
-+ 15798, 15911, 16021, 16128, 16232, 16335, 16435, 16532, 16628,
-+ 16721, 16812, 16902, 16990, 17076, 17160, 17243, 17324, 17404,
-+ 17482, 17559, 17634, 17709, 17782, 17853, 17924, 17993, 18062,
-+ 18129, 18195, 18261, 18325, 18388, 18451, 18513, 18573, 18633,
-+ 18692, 18751, 18808, 18865, 18921, 18976, 19031
-+ };
-+ struct m88dc2800_state *state = fe->demodulator_priv;
-+ u8 i;
-+ u32 _snr, mse;
-+
-+ if ((ReadReg(state, 0x91) & 0x23) != 0x03) {
-+ *snr = 0;
-+ return 0;
-+ }
-+ mse = 0;
-+ for (i = 0; i < 30; i++) {
-+ mse += (ReadReg(state, 0x08) << 8) + ReadReg(state, 0x07);
-+ }
-+ mse /= 30;
-+ if (mse > 80)
-+ mse = 80;
-+ switch (state->qam) {
-+ case 16:
-+ _snr = 34080;
-+ break; /* 16QAM */
-+ case 32:
-+ _snr = 37600;
-+ break; /* 32QAM */
-+ case 64:
-+ _snr = 40310;
-+ break; /* 64QAM */
-+ case 128:
-+ _snr = 43720;
-+ break; /* 128QAM */
-+ case 256:
-+ _snr = 46390;
-+ break; /* 256QAM */
-+ default:
-+ _snr = 40310;
-+ break;
-+ }
-+ _snr -= mes_log[mse - 1]; /* C - 10*log10(MSE) */
-+ _snr /= 1000;
-+ if (_snr > 0xff)
-+ _snr = 0xff;
-+ *snr = _snr;
-+ return 0;
-+}
-+
-+static int m88dc2800_read_ucblocks(struct dvb_frontend *fe, u32 * ucblocks)
-+{
-+ struct m88dc2800_state *state = fe->demodulator_priv;
-+ u8 u8Value;
-+
-+ u8Value = ReadReg(state, 0xdf);
-+ u8Value |= 0x02; /* Hold */
-+ WriteReg(state, 0xdf, u8Value);
-+
-+ *ucblocks = ReadReg(state, 0xd5);
-+ *ucblocks = (*ucblocks << 8) | ReadReg(state, 0xd4);
-+
-+ u8Value &= 0xfe; /* Clear */
-+ WriteReg(state, 0xdf, u8Value);
-+ u8Value &= 0xfc; /* Update */
-+ u8Value |= 0x01;
-+ WriteReg(state, 0xdf, u8Value);
-+
-+ return 0;
-+}
-+
-+static int m88dc2800_sleep(struct dvb_frontend *fe)
-+{
-+ struct m88dc2800_state *state = fe->demodulator_priv;
-+
-+ mt_fe_tn_sleep_tc2800(state);
-+ state->freq = 0;
-+
-+ return 0;
-+}
-+
-+static void m88dc2800_release(struct dvb_frontend *fe)
-+{
-+ struct m88dc2800_state *state = fe->demodulator_priv;
-+ kfree(state);
-+}
-+
-+static struct dvb_frontend_ops m88dc2800_ops;
-+
-+struct dvb_frontend *m88dc2800_attach(const struct m88dc2800_config
-+ *config, struct i2c_adapter *i2c)
-+{
-+ struct m88dc2800_state *state = NULL;
-+
-+ /* allocate memory for the internal state */
-+ state = kzalloc(sizeof(struct m88dc2800_state), GFP_KERNEL);
-+ if (state == NULL)
-+ goto error;
-+
-+ /* setup the state */
-+ state->config = config;
-+ state->i2c = i2c;
-+ state->xtal = 28800;
-+
-+ WriteReg(state, 0x80, 0x01);
-+ M88DC2000RegInitial_TC2800(state);
-+ M88DC2000SetTsType(state, state->config->ts_mode);
-+ mt_fe_tn_init_tc2800(state);
-+
-+ /* create dvb_frontend */
-+ memcpy(&state->frontend.ops, &m88dc2800_ops,
-+ sizeof(struct dvb_frontend_ops));
-+ state->frontend.demodulator_priv = state;
-+ return &state->frontend;
-+
-+ error:
-+ kfree(state);
-+ return NULL;
-+}
-+
-+EXPORT_SYMBOL(m88dc2800_attach);
-+
-+static struct dvb_frontend_ops m88dc2800_ops = {
-+ .delsys = {SYS_DVBC_ANNEX_A, SYS_DVBC_ANNEX_C},
-+ .info = {
-+ .name = "Montage M88DC2800 DVB-C",
-+ .frequency_stepsize = 62500,
-+ .frequency_min = 48000000,
-+ .frequency_max = 870000000,
-+ .symbol_rate_min = 870000,
-+ .symbol_rate_max = 9000000,
-+ .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
-+ FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO
-+ },
-+ .release = m88dc2800_release,
-+ .init = m88dc2800_init,
-+ .sleep = m88dc2800_sleep,
-+ .set_frontend = m88dc2800_set_parameters,
-+ .read_status = m88dc2800_read_status,
-+ .read_ber = m88dc2800_read_ber,
-+ .read_signal_strength = m88dc2800_read_signal_strength,
-+ .read_snr = m88dc2800_read_snr,
-+ .read_ucblocks = m88dc2800_read_ucblocks,
-+};
-+
-+MODULE_DESCRIPTION("Montage DVB-C demodulator driver");
-+MODULE_AUTHOR("Max Nibble <nibble.max@gmail.com>");
-+MODULE_LICENSE("GPL");
-+MODULE_VERSION("1.00");
-diff --git a/drivers/media/dvb-frontends/m88dc2800.h b/drivers/media/dvb-frontends/m88dc2800.h
-new file mode 100644
-index 0000000..2184322
---- /dev/null
-+++ b/drivers/media/dvb-frontends/m88dc2800.h
-@@ -0,0 +1,44 @@
-+/*
-+ M88DC2800/M88TC2800 - DVB-C demodulator and tuner from Montage
-+
-+ Copyright (C) 2012 Max Nibble <nibble.max@gmail.com>
-+ Copyright (C) 2011 Montage Technology - www.montage-tech.com
-+
-+ This program is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2 of the License, or
-+ (at your option) any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with this program; if not, write to the Free Software
-+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+*/
-+
-+#ifndef M88DC2800_H
-+#define M88DC2800_H
-+
-+#include <linux/kconfig.h>
-+#include <linux/dvb/frontend.h>
-+
-+struct m88dc2800_config {
-+ u8 demod_address;
-+ u8 ts_mode;
-+};
-+
-+#if IS_ENABLED(CONFIG_DVB_M88DC2800)
-+extern struct dvb_frontend* m88dc2800_attach(const struct m88dc2800_config* config,
-+ struct i2c_adapter* i2c);
-+#else
-+static inline struct dvb_frontend* m88dc2800_attach(const struct m88dc2800_config* config,
-+ struct i2c_adapter* i2c)
-+{
-+ printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
-+ return NULL;
-+}
-+#endif /* CONFIG_DVB_M88DC2800 */
-+#endif /* M88DC2800_H */
-diff --git a/drivers/media/pci/cx23885/Kconfig b/drivers/media/pci/cx23885/Kconfig
-index d1dcb1d..285c1ad 100644
---- a/drivers/media/pci/cx23885/Kconfig
-+++ b/drivers/media/pci/cx23885/Kconfig
-@@ -23,6 +23,8 @@ config VIDEO_CX23885
- select DVB_STB6100 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_STV6110 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT
-+ select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
-+ select DVB_M88DC2800 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_CX24117 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_STV0900 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_DS3000 if MEDIA_SUBDRV_AUTOSELECT
-diff --git a/drivers/media/pci/cx23885/cimax2.c b/drivers/media/pci/cx23885/cimax2.c
-index 16fa7ea..2b63f78 100644
---- a/drivers/media/pci/cx23885/cimax2.c
-+++ b/drivers/media/pci/cx23885/cimax2.c
-@@ -426,7 +426,7 @@ int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221,
- return state->status;
- }
-
--int netup_ci_init(struct cx23885_tsport *port)
-+int netup_ci_init(struct cx23885_tsport *port, bool isDVBSky)
- {
- struct netup_ci_state *state;
- u8 cimax_init[34] = {
-@@ -475,6 +475,11 @@ int netup_ci_init(struct cx23885_tsport *port)
- goto err;
- }
-
-+ if(isDVBSky) {
-+ cimax_init[32] = 0x22;
-+ cimax_init[33] = 0x00;
-+ }
-+
- port->port_priv = state;
-
- switch (port->nr) {
-@@ -548,3 +553,19 @@ void netup_ci_exit(struct cx23885_tsport *port)
- dvb_ca_en50221_release(&state->ca);
- kfree(state);
- }
-+
-+/* CI irq handler for DVBSky board*/
-+int dvbsky_ci_slot_status(struct cx23885_dev *dev)
-+{
-+ struct cx23885_tsport *port = NULL;
-+ struct netup_ci_state *state = NULL;
-+
-+ ci_dbg_print("%s:\n", __func__);
-+
-+ port = &dev->ts1;
-+ state = port->port_priv;
-+ schedule_work(&state->work);
-+ ci_dbg_print("%s: Wakeup CI0\n", __func__);
-+
-+ return 1;
-+}
-diff --git a/drivers/media/pci/cx23885/cimax2.h b/drivers/media/pci/cx23885/cimax2.h
-index 518744a..39f3db7 100644
---- a/drivers/media/pci/cx23885/cimax2.h
-+++ b/drivers/media/pci/cx23885/cimax2.h
-@@ -41,7 +41,9 @@ extern int netup_ci_slot_ts_ctl(struct dvb_ca_en50221 *en50221, int slot);
- extern int netup_ci_slot_status(struct cx23885_dev *dev, u32 pci_status);
- extern int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221,
- int slot, int open);
--extern int netup_ci_init(struct cx23885_tsport *port);
-+extern int netup_ci_init(struct cx23885_tsport *port, bool isDVBSky);
- extern void netup_ci_exit(struct cx23885_tsport *port);
-
-+extern int dvbsky_ci_slot_status(struct cx23885_dev *dev);
-+
- #endif
-diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c
-old mode 100644
-new mode 100755
-index 79f20c8..889bd4c
---- a/drivers/media/pci/cx23885/cx23885-cards.c
-+++ b/drivers/media/pci/cx23885/cx23885-cards.c
-@@ -613,6 +613,49 @@ struct cx23885_board cx23885_boards[] = {
- .name = "TeVii S471",
- .portb = CX23885_MPEG_DVB,
- },
-+ [CX23885_BOARD_BST_PS8512] = {
-+ .name = "Bestunar PS8512",
-+ .portb = CX23885_MPEG_DVB,
-+ },
-+ [CX23885_BOARD_DVBSKY_S950] = {
-+ .name = "DVBSKY S950",
-+ .portb = CX23885_MPEG_DVB,
-+ },
-+ [CX23885_BOARD_DVBSKY_S952] = {
-+ .name = "DVBSKY S952",
-+ .portb = CX23885_MPEG_DVB,
-+ .portc = CX23885_MPEG_DVB,
-+ },
-+ [CX23885_BOARD_DVBSKY_S950_CI] = {
-+ .ci_type = 3,
-+ .name = "DVBSKY S950CI DVB-S2 CI",
-+ .portb = CX23885_MPEG_DVB,
-+ },
-+ [CX23885_BOARD_DVBSKY_C2800E_CI] = {
-+ .ci_type = 3,
-+ .name = "DVBSKY C2800E DVB-C CI",
-+ .portb = CX23885_MPEG_DVB,
-+ },
-+ [CX23885_BOARD_DVBSKY_T9580] = {
-+ .name = "DVBSKY T9580",
-+ .portb = CX23885_MPEG_DVB,
-+ .portc = CX23885_MPEG_DVB,
-+ },
-+ [CX23885_BOARD_DVBSKY_T980_CI] = {
-+ .ci_type = 3,
-+ .name = "DVBSKY T980CI DVB-T2/C CI",
-+ .portb = CX23885_MPEG_DVB,
-+ },
-+ [CX23885_BOARD_DVBSKY_T982] = {
-+ .name = "DVBSKY T982",
-+ .portb = CX23885_MPEG_DVB,
-+ .portc = CX23885_MPEG_DVB,
-+ },
-+ [CX23885_BOARD_TT_4500_CI] = {
-+ .ci_type = 3,
-+ .name = "TT-budget CT2-4500 CI",
-+ .portb = CX23885_MPEG_DVB,
-+ },
- [CX23885_BOARD_PROF_8000] = {
- .name = "Prof Revolution DVB-S2 8000",
- .portb = CX23885_MPEG_DVB,
-@@ -874,6 +917,42 @@ struct cx23885_subid cx23885_subids[] = {
- .subdevice = 0x9022,
- .card = CX23885_BOARD_TEVII_S471,
- }, {
-+ .subvendor = 0x14f1,
-+ .subdevice = 0x8512,
-+ .card = CX23885_BOARD_BST_PS8512,
-+ }, {
-+ .subvendor = 0x4254,
-+ .subdevice = 0x0950,
-+ .card = CX23885_BOARD_DVBSKY_S950,
-+ }, {
-+ .subvendor = 0x4254,
-+ .subdevice = 0x0952,
-+ .card = CX23885_BOARD_DVBSKY_S952,
-+ }, {
-+ .subvendor = 0x4254,
-+ .subdevice = 0x950C,
-+ .card = CX23885_BOARD_DVBSKY_S950_CI,
-+ }, {
-+ .subvendor = 0x4254,
-+ .subdevice = 0x2800,
-+ .card = CX23885_BOARD_DVBSKY_C2800E_CI,
-+ }, {
-+ .subvendor = 0x4254,
-+ .subdevice = 0x9580,
-+ .card = CX23885_BOARD_DVBSKY_T9580,
-+ }, {
-+ .subvendor = 0x4254,
-+ .subdevice = 0x980C,
-+ .card = CX23885_BOARD_DVBSKY_T980_CI,
-+ }, {
-+ .subvendor = 0x4254,
-+ .subdevice = 0x0982,
-+ .card = CX23885_BOARD_DVBSKY_T982,
-+ }, {
-+ .subvendor = 0x13C2,
-+ .subdevice = 0x3013,
-+ .card = CX23885_BOARD_TT_4500_CI,
-+ }, {
- .subvendor = 0x8000,
- .subdevice = 0x3034,
- .card = CX23885_BOARD_PROF_8000,
-@@ -1483,9 +1562,75 @@ void cx23885_gpio_setup(struct cx23885_dev *dev)
- cx_set(GP0_IO, 0x00040004);
- mdelay(60);
- break;
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_BST_PS8512:
-+ cx23885_gpio_enable(dev, GPIO_2, 1);
-+ cx23885_gpio_clear(dev, GPIO_2);
-+ msleep(100);
-+ cx23885_gpio_set(dev, GPIO_2);
-+ break;
-+ case CX23885_BOARD_DVBSKY_S952:
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T982:
-+ cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */
-+
-+ cx23885_gpio_enable(dev, GPIO_2, 1);
-+ cx23885_gpio_enable(dev, GPIO_11, 1);
-+
-+ cx23885_gpio_clear(dev, GPIO_2);
-+ cx23885_gpio_clear(dev, GPIO_11);
-+ msleep(100);
-+ cx23885_gpio_set(dev, GPIO_2);
-+ cx23885_gpio_set(dev, GPIO_11);
-+ break;
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_TT_4500_CI:
-+ cx_set(GP0_IO, 0x00060002); /* GPIO 1/2 as output */
-+ cx_clear(GP0_IO, 0x00010004); /*GPIO 0 as input*/
-+ mdelay(100);/* reset delay */
-+ cx_set(GP0_IO, 0x00060004); /* GPIO as out, reset high */
-+ cx_clear(GP0_IO, 0x00010002);
-+ cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */
-+ /* GPIO-15 IN as ~ACK, rest as OUT */
-+ cx_write(MC417_OEN, 0x00001000);
-+ /* ~RD, ~WR high; ADL0, ADL1 low; ~CS0, ~CS1 high */
-+ cx_write(MC417_RWD, 0x0000c300);
-+ /* enable irq */
-+ cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/
-+ break;
- }
- }
-
-+static int cx23885_ir_patch(struct i2c_adapter *i2c, u8 reg, u8 mask)
-+{
-+ struct i2c_msg msgs[2];
-+ u8 tx_buf[2], rx_buf[1];
-+ /* Write register address */
-+ tx_buf[0] = reg;
-+ msgs[0].addr = 0x4c;
-+ msgs[0].flags = 0;
-+ msgs[0].len = 1;
-+ msgs[0].buf = (char *) tx_buf;
-+ /* Read data from register */
-+ msgs[1].addr = 0x4c;
-+ msgs[1].flags = I2C_M_RD;
-+ msgs[1].len = 1;
-+ msgs[1].buf = (char *) rx_buf;
-+
-+ i2c_transfer(i2c, msgs, 2);
-+
-+ tx_buf[0] = reg;
-+ tx_buf[1] = rx_buf[0] | mask;
-+ msgs[0].addr = 0x4c;
-+ msgs[0].flags = 0;
-+ msgs[0].len = 2;
-+ msgs[0].buf = (char *) tx_buf;
-+
-+ return i2c_transfer(i2c, msgs, 1);
-+}
-+
- int cx23885_ir_init(struct cx23885_dev *dev)
- {
- static struct v4l2_subdev_io_pin_config ir_rxtx_pin_cfg[] = {
-@@ -1573,6 +1718,26 @@ int cx23885_ir_init(struct cx23885_dev *dev)
- v4l2_subdev_call(dev->sd_cx25840, core, s_io_pin_config,
- ir_rx_pin_cfg_count, ir_rx_pin_cfg);
- break;
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_DVBSKY_S952:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_DVBSKY_T982:
-+ case CX23885_BOARD_TT_4500_CI:
-+ dev->sd_ir = cx23885_find_hw(dev, CX23885_HW_AV_CORE);
-+ if (dev->sd_ir == NULL) {
-+ ret = -ENODEV;
-+ break;
-+ }
-+ v4l2_subdev_call(dev->sd_cx25840, core, s_io_pin_config,
-+ ir_rx_pin_cfg_count, ir_rx_pin_cfg);
-+
-+ cx23885_ir_patch(&(dev->i2c_bus[2].i2c_adap),0x1f,0x80);
-+ cx23885_ir_patch(&(dev->i2c_bus[2].i2c_adap),0x23,0x80);
-+ break;
- case CX23885_BOARD_HAUPPAUGE_HVR1250:
- if (!enable_885_ir)
- break;
-@@ -1608,13 +1773,22 @@ void cx23885_ir_fini(struct cx23885_dev *dev)
- case CX23885_BOARD_MYGICA_X8507:
- case CX23885_BOARD_TBS_6980:
- case CX23885_BOARD_TBS_6981:
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_DVBSKY_S952:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_DVBSKY_T982:
-+ case CX23885_BOARD_TT_4500_CI:
- cx23885_irq_remove(dev, PCI_MSK_AV_CORE);
- /* sd_ir is a duplicate pointer to the AV Core, just clear it */
- dev->sd_ir = NULL;
- break;
- }
- }
--
-+#if 0
- static int netup_jtag_io(void *device, int tms, int tdi, int read_tdo)
- {
- int data;
-@@ -1639,7 +1813,7 @@ static int netup_jtag_io(void *device, int tms, int tdi, int read_tdo)
-
- return tdo;
- }
--
-+#endif
- void cx23885_ir_pci_int_enable(struct cx23885_dev *dev)
- {
- switch (dev->board) {
-@@ -1655,6 +1829,15 @@ void cx23885_ir_pci_int_enable(struct cx23885_dev *dev)
- case CX23885_BOARD_MYGICA_X8507:
- case CX23885_BOARD_TBS_6980:
- case CX23885_BOARD_TBS_6981:
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_DVBSKY_S952:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_DVBSKY_T982:
-+ case CX23885_BOARD_TT_4500_CI:
- if (dev->sd_ir)
- cx23885_irq_add_enable(dev, PCI_MSK_AV_CORE);
- break;
-@@ -1752,6 +1935,12 @@ void cx23885_card_setup(struct cx23885_dev *dev)
- ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
- ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
- break;
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_TT_4500_CI:
- case CX23885_BOARD_TEVII_S470:
- case CX23885_BOARD_TEVII_S471:
- case CX23885_BOARD_DVBWORLD_2005:
-@@ -1795,6 +1984,23 @@ void cx23885_card_setup(struct cx23885_dev *dev)
- ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
- ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
- break;
-+ case CX23885_BOARD_DVBSKY_S952:
-+ ts1->gen_ctrl_val = 0x5; /* Parallel */
-+ ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-+ ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-+ ts2->gen_ctrl_val = 0xe; /* Serial bus + punctured clock */
-+ ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-+ ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-+ break;
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T982:
-+ ts1->gen_ctrl_val = 0x5; /* Parallel */
-+ ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-+ ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-+ ts2->gen_ctrl_val = 0x8; /* Serial bus */
-+ ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-+ ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-+ break;
- case CX23885_BOARD_HAUPPAUGE_HVR4400:
- ts1->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
- ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-@@ -1860,6 +2066,15 @@ void cx23885_card_setup(struct cx23885_dev *dev)
- case CX23885_BOARD_AVERMEDIA_HC81R:
- case CX23885_BOARD_TBS_6980:
- case CX23885_BOARD_TBS_6981:
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_DVBSKY_S952:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_DVBSKY_T982:
-+ case CX23885_BOARD_TT_4500_CI:
- dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev,
- &dev->i2c_bus[2].i2c_adap,
- "cx25840", 0x88 >> 1, NULL);
-@@ -1879,13 +2094,13 @@ void cx23885_card_setup(struct cx23885_dev *dev)
- int ret;
- const struct firmware *fw;
- const char *filename = "dvb-netup-altera-01.fw";
-- char *action = "configure";
-+// char *action = "configure";
- static struct netup_card_info cinfo;
-- struct altera_config netup_config = {
-- .dev = dev,
-- .action = action,
-- .jtag_io = netup_jtag_io,
-- };
-+// struct altera_config netup_config = {
-+// .dev = dev,
-+// .action = action,
-+// .jtag_io = netup_jtag_io,
-+// };
-
- netup_initialize(dev);
-
-@@ -1909,8 +2124,8 @@ void cx23885_card_setup(struct cx23885_dev *dev)
- printk(KERN_ERR "did not find the firmware file. (%s) "
- "Please see linux/Documentation/dvb/ for more details "
- "on firmware-problems.", filename);
-- else
-- altera_init(&netup_config, fw);
-+ //else
-+ // altera_init(&netup_config, fw);
-
- release_firmware(fw);
- break;
-diff --git a/drivers/media/pci/cx23885/cx23885-core.c b/drivers/media/pci/cx23885/cx23885-core.c
-index edcd79d..c9afeab 100644
---- a/drivers/media/pci/cx23885/cx23885-core.c
-+++ b/drivers/media/pci/cx23885/cx23885-core.c
-@@ -450,9 +450,9 @@ void cx23885_wakeup(struct cx23885_tsport *port,
- del_timer(&q->timeout);
- else
- mod_timer(&q->timeout, jiffies + BUFFER_TIMEOUT);
-- if (bc != 1)
-+/* if (bc != 1)
- printk(KERN_WARNING "%s: %d buffers handled (should be 1)\n",
-- __func__, bc);
-+ __func__, bc);*/
- }
-
- int cx23885_sram_channel_setup(struct cx23885_dev *dev,
-@@ -1909,6 +1909,10 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id)
- (pci_status & PCI_MSK_GPIO0))
- handled += altera_ci_irq(dev);
-
-+ if (cx23885_boards[dev->board].ci_type == 3 &&
-+ (pci_status & PCI_MSK_GPIO0))
-+ handled += dvbsky_ci_slot_status(dev);
-+
- if (ts1_status) {
- if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB)
- handled += cx23885_irq_ts(ts1, ts1_status);
-@@ -2141,6 +2145,10 @@ static int cx23885_initdev(struct pci_dev *pci_dev,
- cx23885_irq_add_enable(dev, PCI_MSK_GPIO1 | PCI_MSK_GPIO0);
- break;
- case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_TT_4500_CI:
- cx23885_irq_add_enable(dev, PCI_MSK_GPIO0);
- break;
- }
-diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
-index 0549205..7816112 100644
---- a/drivers/media/pci/cx23885/cx23885-dvb.c
-+++ b/drivers/media/pci/cx23885/cx23885-dvb.c
-@@ -51,6 +51,8 @@
- #include "stv6110.h"
- #include "lnbh24.h"
- #include "cx24116.h"
-+#include "dvbsky_m88ds3103.h"
-+#include "m88dc2800.h"
- #include "cx24117.h"
- #include "cimax2.h"
- #include "lgs8gxx.h"
-@@ -473,6 +475,7 @@ static struct ds3000_config tevii_ds3000_config = {
- static struct ts2020_config tevii_ts2020_config = {
- .tuner_address = 0x60,
- .clk_out_div = 1,
-+ .frequency_div = 1146000,
- };
-
- static struct cx24116_config dvbworld_cx24116_config = {
-@@ -507,6 +510,93 @@ static struct xc5000_config mygica_x8507_xc5000_config = {
- .if_khz = 4000,
- };
-
-+/* bst control */
-+int bst_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+ struct cx23885_tsport *port = fe->dvb->priv;
-+ struct cx23885_dev *dev = port->dev;
-+
-+ cx23885_gpio_enable(dev, GPIO_1, 1);
-+ cx23885_gpio_enable(dev, GPIO_0, 1);
-+
-+ switch (voltage) {
-+ case SEC_VOLTAGE_13:
-+ cx23885_gpio_set(dev, GPIO_1);
-+ cx23885_gpio_clear(dev, GPIO_0);
-+ break;
-+ case SEC_VOLTAGE_18:
-+ cx23885_gpio_set(dev, GPIO_1);
-+ cx23885_gpio_set(dev, GPIO_0);
-+ break;
-+ case SEC_VOLTAGE_OFF:
-+ cx23885_gpio_clear(dev, GPIO_1);
-+ cx23885_gpio_clear(dev, GPIO_0);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+int dvbsky_set_voltage_sec(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+ struct cx23885_tsport *port = fe->dvb->priv;
-+ struct cx23885_dev *dev = port->dev;
-+
-+ cx23885_gpio_enable(dev, GPIO_12, 1);
-+ cx23885_gpio_enable(dev, GPIO_13, 1);
-+
-+ switch (voltage) {
-+ case SEC_VOLTAGE_13:
-+ cx23885_gpio_set(dev, GPIO_13);
-+ cx23885_gpio_clear(dev, GPIO_12);
-+ break;
-+ case SEC_VOLTAGE_18:
-+ cx23885_gpio_set(dev, GPIO_13);
-+ cx23885_gpio_set(dev, GPIO_12);
-+ break;
-+ case SEC_VOLTAGE_OFF:
-+ cx23885_gpio_clear(dev, GPIO_13);
-+ cx23885_gpio_clear(dev, GPIO_12);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+/* bestunar single dvb-s2 */
-+static struct dvbsky_m88ds3103_config bst_ds3103_config = {
-+ .demod_address = 0x68,
-+ .ci_mode = 0,
-+ .pin_ctrl = 0x82,
-+ .ts_mode = 0,
-+ .set_voltage = bst_set_voltage,
-+};
-+/* DVBSKY dual dvb-s2 */
-+static struct dvbsky_m88ds3103_config dvbsky_ds3103_config_pri = {
-+ .demod_address = 0x68,
-+ .ci_mode = 0,
-+ .pin_ctrl = 0x82,
-+ .ts_mode = 0,
-+ .set_voltage = bst_set_voltage,
-+};
-+static struct dvbsky_m88ds3103_config dvbsky_ds3103_config_sec = {
-+ .demod_address = 0x68,
-+ .ci_mode = 0,
-+ .pin_ctrl = 0x82,
-+ .ts_mode = 1,
-+ .set_voltage = dvbsky_set_voltage_sec,
-+};
-+
-+static struct dvbsky_m88ds3103_config dvbsky_ds3103_ci_config = {
-+ .demod_address = 0x68,
-+ .ci_mode = 2,
-+ .pin_ctrl = 0x82,
-+ .ts_mode = 0,
-+};
-+
-+static struct m88dc2800_config dvbsky_dc2800_config = {
-+ .demod_address = 0x1c,
-+ .ts_mode = 3,
-+};
-+
- static struct stv090x_config prof_8000_stv090x_config = {
- .device = STV0903,
- .demod_mode = STV090x_SINGLE,
-@@ -1311,6 +1401,92 @@ static int dvb_register(struct cx23885_tsport *port)
- &tevii_ts2020_config, &i2c_bus->i2c_adap);
- }
- break;
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ i2c_bus = &dev->i2c_bus[1];
-+ fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+ &bst_ds3103_config,
-+ &i2c_bus->i2c_adap);
-+ break;
-+
-+ case CX23885_BOARD_DVBSKY_S952:
-+ switch (port->nr) {
-+ /* port B */
-+ case 1:
-+ i2c_bus = &dev->i2c_bus[1];
-+ fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+ &dvbsky_ds3103_config_pri,
-+ &i2c_bus->i2c_adap);
-+ break;
-+ /* port C */
-+ case 2:
-+ i2c_bus = &dev->i2c_bus[0];
-+ fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+ &dvbsky_ds3103_config_sec,
-+ &i2c_bus->i2c_adap);
-+ break;
-+ }
-+ break;
-+
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ i2c_bus = &dev->i2c_bus[1];
-+ fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+ &dvbsky_ds3103_ci_config,
-+ &i2c_bus->i2c_adap);
-+ break;
-+
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ i2c_bus = &dev->i2c_bus[1];
-+ fe0->dvb.frontend = dvb_attach(m88dc2800_attach,
-+ &dvbsky_dc2800_config,
-+ &i2c_bus->i2c_adap);
-+ break;
-+
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ switch (port->nr) {
-+ /* port B */
-+ case 1:
-+ i2c_bus = &dev->i2c_bus[1];
-+ fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+ &dvbsky_ds3103_config_pri,
-+ &i2c_bus->i2c_adap);
-+ break;
-+ /* port C */
-+// case 2:
-+// i2c_bus = &dev->i2c_bus[0];
-+// fe0->dvb.frontend = dvb_attach(sit2_attach,
-+// &dvbsky_sit2_config_pci_s,
-+// &i2c_bus->i2c_adap);
-+ break;
-+ }
-+ break;
-+
-+// case CX23885_BOARD_DVBSKY_T980_CI:
-+// case CX23885_BOARD_TT_4500_CI:
-+// i2c_bus = &dev->i2c_bus[1];
-+// fe0->dvb.frontend = dvb_attach(sit2_attach,
-+// &dvbsky_sit2_config_pci_p,
-+// &i2c_bus->i2c_adap);
-+// break;
-+
-+// case CX23885_BOARD_DVBSKY_T982:
-+// switch (port->nr) {
-+// /* port B */
-+// case 1:
-+// i2c_bus = &dev->i2c_bus[1];
-+// fe0->dvb.frontend = dvb_attach(sit2_attach,
-+// &dvbsky_sit2_config_pci_p,
-+// &i2c_bus->i2c_adap);
-+// break;
-+// /* port C */
-+// case 2:
-+// i2c_bus = &dev->i2c_bus[0];
-+// fe0->dvb.frontend = dvb_attach(sit2_attach,
-+// &dvbsky_sit2_config_pci_s,
-+// &i2c_bus->i2c_adap);
-+// break;
-+// }
-+// break;
- case CX23885_BOARD_PROF_8000:
- i2c_bus = &dev->i2c_bus[0];
-
-@@ -1386,7 +1562,7 @@ static int dvb_register(struct cx23885_tsport *port)
- printk(KERN_INFO "NetUP Dual DVB-S2 CI card port%d MAC=%pM\n",
- port->nr, port->frontends.adapter.proposed_mac);
-
-- netup_ci_init(port);
-+ netup_ci_init(port, false);
- break;
- }
- case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF: {
-@@ -1413,6 +1589,44 @@ static int dvb_register(struct cx23885_tsport *port)
- memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xa0, 6);
- break;
- }
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_DVBSKY_S952:
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T982:{
-+ u8 eeprom[256]; /* 24C02 i2c eeprom */
-+
-+ if(port->nr > 2)
-+ break;
-+
-+ dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
-+ tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom));
-+ printk(KERN_INFO "DVBSKY PCIe MAC= %pM\n", eeprom + 0xc0+(port->nr-1)*8);
-+ memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0 +
-+ (port->nr-1)*8, 6);
-+ break;
-+ }
-+ case CX23885_BOARD_DVBSKY_S950_CI: {
-+ u8 eeprom[256]; /* 24C02 i2c eeprom */
-+
-+ if(port->nr > 2)
-+ break;
-+
-+ dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
-+ tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom));
-+ printk(KERN_INFO "DVBSKY PCIe MAC= %pM\n", eeprom + 0xc0+(port->nr-1)*8);
-+ memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0 +
-+ (port->nr-1)*8, 6);
-+
-+ netup_ci_init(port, true);
-+ break;
-+ }
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_TT_4500_CI: {
-+ netup_ci_init(port, true);
-+ break;
-+ }
- }
-
- return ret;
-@@ -1495,6 +1709,10 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port)
-
- switch (port->dev->board) {
- case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_TT_4500_CI:
- netup_ci_exit(port);
- break;
- case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF:
-diff --git a/drivers/media/pci/cx23885/cx23885-input.c b/drivers/media/pci/cx23885/cx23885-input.c
-index 8a49e7c..1642ae8 100644
---- a/drivers/media/pci/cx23885/cx23885-input.c
-+++ b/drivers/media/pci/cx23885/cx23885-input.c
-@@ -92,6 +92,15 @@ void cx23885_input_rx_work_handler(struct cx23885_dev *dev, u32 events)
- case CX23885_BOARD_MYGICA_X8507:
- case CX23885_BOARD_TBS_6980:
- case CX23885_BOARD_TBS_6981:
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_DVBSKY_S952:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_DVBSKY_T982:
-+ case CX23885_BOARD_TT_4500_CI:
- /*
- * The only boards we handle right now. However other boards
- * using the CX2388x integrated IR controller should be similar
-@@ -144,6 +153,15 @@ static int cx23885_input_ir_start(struct cx23885_dev *dev)
- case CX23885_BOARD_HAUPPAUGE_HVR1290:
- case CX23885_BOARD_HAUPPAUGE_HVR1250:
- case CX23885_BOARD_MYGICA_X8507:
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_DVBSKY_S952:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_DVBSKY_T982:
-+ case CX23885_BOARD_TT_4500_CI:
- /*
- * The IR controller on this board only returns pulse widths.
- * Any other mode setting will fail to set up the device.
-@@ -302,6 +320,26 @@ int cx23885_input_init(struct cx23885_dev *dev)
- /* A guess at the remote */
- rc_map = RC_MAP_TOTAL_MEDIA_IN_HAND_02;
- break;
-+ case CX23885_BOARD_BST_PS8512:
-+ case CX23885_BOARD_DVBSKY_S950:
-+ case CX23885_BOARD_DVBSKY_S952:
-+ case CX23885_BOARD_DVBSKY_S950_CI:
-+ case CX23885_BOARD_DVBSKY_C2800E_CI:
-+ case CX23885_BOARD_DVBSKY_T9580:
-+ case CX23885_BOARD_DVBSKY_T980_CI:
-+ case CX23885_BOARD_DVBSKY_T982:
-+ /* Integrated CX2388[58] IR controller */
-+ driver_type = RC_DRIVER_IR_RAW;
-+ allowed_protos = RC_BIT_ALL;
-+ /* A guess at the remote */
-+ rc_map = RC_MAP_DVBSKY;
-+ break;
-+ case CX23885_BOARD_TT_4500_CI:
-+ /* Integrated CX2388[58] IR controller */
-+ driver_type = RC_DRIVER_IR_RAW;
-+ allowed_protos = RC_BIT_ALL;
-+ rc_map = RC_MAP_TT_1500;
-+ break;
- case CX23885_BOARD_TBS_6980:
- case CX23885_BOARD_TBS_6981:
- /* Integrated CX23885 IR controller */
-diff --git a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h
-index 0fa4048..7a39d82 100644
---- a/drivers/media/pci/cx23885/cx23885.h
-+++ b/drivers/media/pci/cx23885/cx23885.h
-@@ -97,6 +97,17 @@
- #define CX23885_BOARD_TBS_6980 41
- #define CX23885_BOARD_LEADTEK_WINFAST_PXPVR2200 42
-
-+#define CX23885_BOARD_DVBSKY_PCIE 43
-+#define CX23885_BOARD_BST_PS8512 (CX23885_BOARD_DVBSKY_PCIE+0)
-+#define CX23885_BOARD_DVBSKY_S952 (CX23885_BOARD_DVBSKY_PCIE+1)
-+#define CX23885_BOARD_DVBSKY_S950 (CX23885_BOARD_DVBSKY_PCIE+2)
-+#define CX23885_BOARD_DVBSKY_S950_CI (CX23885_BOARD_DVBSKY_PCIE+3)
-+#define CX23885_BOARD_DVBSKY_C2800E_CI (CX23885_BOARD_DVBSKY_PCIE+4)
-+#define CX23885_BOARD_DVBSKY_T9580 (CX23885_BOARD_DVBSKY_PCIE+5)
-+#define CX23885_BOARD_DVBSKY_T980_CI (CX23885_BOARD_DVBSKY_PCIE+6)
-+#define CX23885_BOARD_DVBSKY_T982 (CX23885_BOARD_DVBSKY_PCIE+7)
-+#define CX23885_BOARD_TT_4500_CI (CX23885_BOARD_DVBSKY_PCIE+8)
-+
- #define GPIO_0 0x00000001
- #define GPIO_1 0x00000002
- #define GPIO_2 0x00000004
-@@ -234,7 +245,7 @@ struct cx23885_board {
- */
- u32 clk_freq;
- struct cx23885_input input[MAX_CX23885_INPUT];
-- int ci_type; /* for NetUP */
-+ int ci_type; /* 1 and 2 for NetUP, 3 for DVBSky. */
- /* Force bottom field first during DMA (888 workaround) */
- u32 force_bff;
- };
-diff --git a/drivers/media/pci/cx88/Kconfig b/drivers/media/pci/cx88/Kconfig
-index a63a9ad..7deb300 100644
---- a/drivers/media/pci/cx88/Kconfig
-+++ b/drivers/media/pci/cx88/Kconfig
-@@ -57,6 +57,7 @@ config VIDEO_CX88_DVB
- select DVB_ISL6421 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT
-+ select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_STV0288 if MEDIA_SUBDRV_AUTOSELECT
- select DVB_STB6000 if MEDIA_SUBDRV_AUTOSELECT
-diff --git a/drivers/media/pci/cx88/cx88-cards.c b/drivers/media/pci/cx88/cx88-cards.c
-index e18a7ac..317511d 100644
---- a/drivers/media/pci/cx88/cx88-cards.c
-+++ b/drivers/media/pci/cx88/cx88-cards.c
-@@ -2314,6 +2314,18 @@ static const struct cx88_board cx88_boards[] = {
- } },
- .mpeg = CX88_MPEG_DVB,
- },
-+ [CX88_BOARD_BST_PS8312] = {
-+ .name = "Bestunar PS8312 DVB-S/S2",
-+ .tuner_type = UNSET,
-+ .radio_type = UNSET,
-+ .tuner_addr = ADDR_UNSET,
-+ .radio_addr = ADDR_UNSET,
-+ .input = { {
-+ .type = CX88_VMUX_DVB,
-+ .vmux = 0,
-+ } },
-+ .mpeg = CX88_MPEG_DVB,
-+ },
- };
-
- /* ------------------------------------------------------------------ */
-@@ -2818,6 +2830,10 @@ static const struct cx88_subid cx88_subids[] = {
- .subvendor = 0x1822,
- .subdevice = 0x0023,
- .card = CX88_BOARD_TWINHAN_VP1027_DVBS,
-+ }, {
-+ .subvendor = 0x14f1,
-+ .subdevice = 0x8312,
-+ .card = CX88_BOARD_BST_PS8312,
- },
- };
-
-@@ -3551,6 +3567,12 @@ static void cx88_card_setup(struct cx88_core *core)
- cx_write(MO_SRST_IO, 1);
- msleep(100);
- break;
-+ case CX88_BOARD_BST_PS8312:
-+ cx_write(MO_GP1_IO, 0x808000);
-+ msleep(100);
-+ cx_write(MO_GP1_IO, 0x808080);
-+ msleep(100);
-+ break;
- } /*end switch() */
-
-
-diff --git a/drivers/media/pci/cx88/cx88-dvb.c b/drivers/media/pci/cx88/cx88-dvb.c
-index 053ed1b..955b916 100644
---- a/drivers/media/pci/cx88/cx88-dvb.c
-+++ b/drivers/media/pci/cx88/cx88-dvb.c
-@@ -54,6 +54,7 @@
- #include "stv0288.h"
- #include "stb6000.h"
- #include "cx24116.h"
-+#include "dvbsky_m88ds3103.h"
- #include "stv0900.h"
- #include "stb6100.h"
- #include "stb6100_proc.h"
-@@ -459,6 +460,56 @@ static int tevii_dvbs_set_voltage(struct dvb_frontend *fe,
- return core->prev_set_voltage(fe, voltage);
- return 0;
- }
-+/*CX88_BOARD_BST_PS8312*/
-+static int bst_dvbs_set_voltage(struct dvb_frontend *fe,
-+ fe_sec_voltage_t voltage)
-+{
-+ struct cx8802_dev *dev= fe->dvb->priv;
-+ struct cx88_core *core = dev->core;
-+
-+ cx_write(MO_GP1_IO, 0x111111);
-+ switch (voltage) {
-+ case SEC_VOLTAGE_13:
-+ cx_write(MO_GP1_IO, 0x020200);
-+ break;
-+ case SEC_VOLTAGE_18:
-+ cx_write(MO_GP1_IO, 0x020202);
-+ break;
-+ case SEC_VOLTAGE_OFF:
-+ cx_write(MO_GP1_IO, 0x111100);
-+ break;
-+ }
-+
-+ if (core->prev_set_voltage)
-+ return core->prev_set_voltage(fe, voltage);
-+ return 0;
-+}
-+
-+static int bst_dvbs_set_voltage_v2(struct dvb_frontend *fe,
-+ fe_sec_voltage_t voltage)
-+{
-+ struct cx8802_dev *dev= fe->dvb->priv;
-+ struct cx88_core *core = dev->core;
-+
-+ cx_write(MO_GP1_IO, 0x111101);
-+ switch (voltage) {
-+ case SEC_VOLTAGE_13:
-+ cx_write(MO_GP1_IO, 0x020200);
-+ break;
-+ case SEC_VOLTAGE_18:
-+
-+ cx_write(MO_GP1_IO, 0x020202);
-+ break;
-+ case SEC_VOLTAGE_OFF:
-+
-+ cx_write(MO_GP1_IO, 0x111110);
-+ break;
-+ }
-+
-+ if (core->prev_set_voltage)
-+ return core->prev_set_voltage(fe, voltage);
-+ return 0;
-+}
-
- static int vp1027_set_voltage(struct dvb_frontend *fe,
- fe_sec_voltage_t voltage)
-@@ -706,6 +757,11 @@ static struct ts2020_config tevii_ts2020_config = {
- .clk_out_div = 1,
- };
-
-+static struct dvbsky_m88ds3103_config dvbsky_ds3103_config = {
-+ .demod_address = 0x68,
-+ .set_ts_params = ds3000_set_ts_param,
-+};
-+
- static const struct stv0900_config prof_7301_stv0900_config = {
- .demod_address = 0x6a,
- /* demod_mode = 0,*/
-@@ -1487,6 +1543,35 @@ static int dvb_register(struct cx8802_dev *dev)
- tevii_dvbs_set_voltage;
- }
- break;
-+ case CX88_BOARD_BST_PS8312:
-+ fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+ &dvbsky_ds3103_config,
-+ &core->i2c_adap);
-+ if (fe0->dvb.frontend != NULL){
-+ int ret;
-+ u8 b0[] = { 0x60 };
-+ u8 b1[2] = { 0 };
-+ struct i2c_msg msg[] = {
-+ {
-+ .addr = 0x50,
-+ .flags = 0,
-+ .buf = b0,
-+ .len = 1
-+ }, {
-+ .addr = 0x50,
-+ .flags = I2C_M_RD,
-+ .buf = b1,
-+ .len = 2
-+ }
-+ };
-+ ret = i2c_transfer(&core->i2c_adap, msg, 2);
-+ printk("PS8312: config = %02x, %02x", b1[0],b1[1]);
-+ if(b1[0] == 0xaa)
-+ fe0->dvb.frontend->ops.set_voltage = bst_dvbs_set_voltage_v2;
-+ else
-+ fe0->dvb.frontend->ops.set_voltage = bst_dvbs_set_voltage;
-+ }
-+ break;
- case CX88_BOARD_OMICOM_SS4_PCI:
- case CX88_BOARD_TBS_8920:
- case CX88_BOARD_PROF_7300:
-diff --git a/drivers/media/pci/cx88/cx88-input.c b/drivers/media/pci/cx88/cx88-input.c
-index f29e18c..9581f4e 100644
---- a/drivers/media/pci/cx88/cx88-input.c
-+++ b/drivers/media/pci/cx88/cx88-input.c
-@@ -129,7 +129,7 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
- u32 gpio_key = cx_read(MO_GP0_IO);
-
- data = (data << 4) | ((gpio_key & 0xf0) >> 4);
--
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
- rc_keydown(ir->dev, data, 0);
-
- } else if (ir->mask_keydown) {
-@@ -151,6 +151,45 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
- rc_keydown_notimeout(ir->dev, data, 0);
- rc_keyup(ir->dev);
- }
-+#else
-+ rc_keydown(ir->dev, RC_TYPE_UNKNOWN, data, 0);
-+
-+ } else if (ir->core->boardnr == CX88_BOARD_PROLINK_PLAYTVPVR ||
-+ ir->core->boardnr == CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO) {
-+ /* bit cleared on keydown, NEC scancode, 0xAAAACC, A = 0x866b */
-+ u16 addr;
-+ u8 cmd;
-+ u32 scancode;
-+
-+ addr = (data >> 8) & 0xffff;
-+ cmd = (data >> 0) & 0x00ff;
-+ scancode = RC_SCANCODE_NECX(addr, cmd);
-+
-+ if (0 == (gpio & ir->mask_keyup))
-+ rc_keydown_notimeout(ir->dev, RC_TYPE_NEC, scancode, 0);
-+ else
-+ rc_keyup(ir->dev);
-+
-+ } else if (ir->mask_keydown) {
-+ /* bit set on keydown */
-+ if (gpio & ir->mask_keydown)
-+ rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0);
-+ else
-+ rc_keyup(ir->dev);
-+
-+ } else if (ir->mask_keyup) {
-+ /* bit cleared on keydown */
-+ if (0 == (gpio & ir->mask_keyup))
-+ rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0);
-+ else
-+ rc_keyup(ir->dev);
-+
-+ } else {
-+ /* can't distinguish keydown/up :-/ */
-+ rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0);
-+ rc_keyup(ir->dev);
-+ }
-+#endif
- }
-
- static enum hrtimer_restart cx88_ir_work(struct hrtimer *timer)
-@@ -419,6 +458,10 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
- rc_type = RC_BIT_NEC;
- ir->sampling = 0xff00; /* address */
- break;
-+ case CX88_BOARD_BST_PS8312:
-+ ir_codes = RC_MAP_DVBSKY;
-+ ir->sampling = 0xff00; /* address */
-+ break;
- }
-
- if (!ir_codes) {
-@@ -471,7 +514,6 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
- dev->driver_type = RC_DRIVER_SCANCODE;
- dev->allowed_protos = rc_type;
- }
--
- ir->core = core;
- core->ir = ir;
-
-@@ -538,8 +580,12 @@ void cx88_ir_irq(struct cx88_core *core)
- }
- ir_raw_event_handle(ir->dev);
- }
--
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
- static int get_key_pvr2000(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
-+#else
-+static int get_key_pvr2000(struct IR_i2c *ir, enum rc_type *protocol,
-+ u32 *scancode, u8 *toggle)
-+#endif
- {
- int flags, code;
-
-@@ -562,9 +608,14 @@ static int get_key_pvr2000(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
-
- dprintk("IR Key/Flags: (0x%02x/0x%02x)\n",
- code & 0xff, flags & 0xff);
--
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
- *ir_key = code & 0xff;
- *ir_raw = code;
-+#else
-+ *protocol = RC_TYPE_UNKNOWN;
-+ *scancode = code & 0xff;
-+ *toggle = 0;
-+#endif
- return 1;
- }
-
-diff --git a/drivers/media/pci/cx88/cx88.h b/drivers/media/pci/cx88/cx88.h
-index 28893a6..5fa5f48 100644
---- a/drivers/media/pci/cx88/cx88.h
-+++ b/drivers/media/pci/cx88/cx88.h
-@@ -237,6 +237,7 @@ extern const struct sram_channel cx88_sram_channels[];
- #define CX88_BOARD_WINFAST_DTV1800H_XC4000 88
- #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36 89
- #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43 90
-+#define CX88_BOARD_BST_PS8312 91
-
- enum cx88_itype {
- CX88_VMUX_COMPOSITE1 = 1,
-diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
-index 0b8c549..abf6079 100644
---- a/drivers/media/rc/keymaps/Makefile
-+++ b/drivers/media/rc/keymaps/Makefile
-@@ -28,6 +28,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
- rc-dm1105-nec.o \
- rc-dntv-live-dvb-t.o \
- rc-dntv-live-dvbt-pro.o \
-+ rc-dvbsky.o \
- rc-em-terratec.o \
- rc-encore-enltv2.o \
- rc-encore-enltv.o \
-diff --git a/drivers/media/rc/keymaps/rc-dvbsky.c b/drivers/media/rc/keymaps/rc-dvbsky.c
-new file mode 100644
-index 0000000..bfc41fb
---- /dev/null
-+++ b/drivers/media/rc/keymaps/rc-dvbsky.c
-@@ -0,0 +1,78 @@
-+/* rc-dvbsky.c - Keytable for Dvbsky Remote Controllers
-+ *
-+ * keymap imported from ir-keymaps.c
-+ *
-+ *
-+ * Copyright (c) 2010-2012 by Nibble Max <nibble.max@gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ */
-+
-+#include <media/rc-map.h>
-+#include <linux/module.h>
-+/*
-+ * This table contains the complete RC5 code, instead of just the data part
-+ */
-+
-+static struct rc_map_table rc5_dvbsky[] = {
-+ { 0x0000, KEY_0 },
-+ { 0x0001, KEY_1 },
-+ { 0x0002, KEY_2 },
-+ { 0x0003, KEY_3 },
-+ { 0x0004, KEY_4 },
-+ { 0x0005, KEY_5 },
-+ { 0x0006, KEY_6 },
-+ { 0x0007, KEY_7 },
-+ { 0x0008, KEY_8 },
-+ { 0x0009, KEY_9 },
-+ { 0x000a, KEY_MUTE },
-+ { 0x000d, KEY_OK },
-+ { 0x000b, KEY_STOP },
-+ { 0x000c, KEY_EXIT },
-+ { 0x000e, KEY_CAMERA }, /*Snap shot*/
-+ { 0x000f, KEY_SUBTITLE }, /*PIP*/
-+ { 0x0010, KEY_VOLUMEUP },
-+ { 0x0011, KEY_VOLUMEDOWN },
-+ { 0x0012, KEY_FAVORITES },
-+ { 0x0013, KEY_LIST }, /*Info*/
-+ { 0x0016, KEY_PAUSE },
-+ { 0x0017, KEY_PLAY },
-+ { 0x001f, KEY_RECORD },
-+ { 0x0020, KEY_CHANNELDOWN },
-+ { 0x0021, KEY_CHANNELUP },
-+ { 0x0025, KEY_POWER2 },
-+ { 0x0026, KEY_REWIND },
-+ { 0x0027, KEY_FASTFORWARD },
-+ { 0x0029, KEY_LAST },
-+ { 0x002b, KEY_MENU },
-+ { 0x002c, KEY_EPG },
-+ { 0x002d, KEY_ZOOM },
-+};
-+
-+static struct rc_map_list rc5_dvbsky_map = {
-+ .map = {
-+ .scan = rc5_dvbsky,
-+ .size = ARRAY_SIZE(rc5_dvbsky),
-+ .rc_type = RC_TYPE_RC5,
-+ .name = RC_MAP_DVBSKY,
-+ }
-+};
-+
-+static int __init init_rc_map_rc5_dvbsky(void)
-+{
-+ return rc_map_register(&rc5_dvbsky_map);
-+}
-+
-+static void __exit exit_rc_map_rc5_dvbsky(void)
-+{
-+ rc_map_unregister(&rc5_dvbsky_map);
-+}
-+
-+module_init(init_rc_map_rc5_dvbsky)
-+module_exit(exit_rc_map_rc5_dvbsky)
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Nibble Max <nibble.max@gmail.com>");
-diff --git a/drivers/media/usb/dvb-usb-v2/Kconfig b/drivers/media/usb/dvb-usb-v2/Kconfig
-index 2059d0c..5ff51aa 100644
---- a/drivers/media/usb/dvb-usb-v2/Kconfig
-+++ b/drivers/media/usb/dvb-usb-v2/Kconfig
-@@ -147,3 +147,11 @@ config DVB_USB_RTL28XXU
- help
- Say Y here to support the Realtek RTL28xxU DVB USB receiver.
-
-+config DVB_USB_DVBSKY
-+ tristate "DVBSky USB2.0 support"
-+ depends on DVB_USB_V2
-+ select DVB_SIT2 if MEDIA_SUBDRV_AUTOSELECT
-+ select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
-+ help
-+ Say Y here to support the USB receivers from DVBSky.
-+
-diff --git a/drivers/media/usb/dvb-usb-v2/Makefile b/drivers/media/usb/dvb-usb-v2/Makefile
-index 2c06714..926f12d 100644
---- a/drivers/media/usb/dvb-usb-v2/Makefile
-+++ b/drivers/media/usb/dvb-usb-v2/Makefile
-@@ -40,6 +40,9 @@ obj-$(CONFIG_DVB_USB_MXL111SF) += mxl111sf-tuner.o
- dvb-usb-rtl28xxu-objs := rtl28xxu.o
- obj-$(CONFIG_DVB_USB_RTL28XXU) += dvb-usb-rtl28xxu.o
-
-+dvb-usb-dvbsky-objs := dvbsky.o
-+obj-$(CONFIG_DVB_USB_DVBSKY) += dvb-usb-dvbsky.o
-+
- ccflags-y += -I$(srctree)/drivers/media/dvb-core
- ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
- ccflags-y += -I$(srctree)/drivers/media/tuners
-diff --git a/drivers/media/usb/dvb-usb-v2/dvbsky.c b/drivers/media/usb/dvb-usb-v2/dvbsky.c
-new file mode 100644
-index 0000000..cd9c039
---- /dev/null
-+++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c
-@@ -0,0 +1,892 @@
-+/*
-+ * Driver for DVBSky receiver
-+ *
-+ * Copyright (C) 2013 Max nibble <nibble.max@gmail.com>
-+ *
-+ * CIMax code is copied and modified from:
-+ * CIMax2(R) SP2 driver in conjunction with NetUp Dual DVB-S2 CI card
-+ * Copyright (C) 2009 NetUP Inc.
-+ * Copyright (C) 2009 Igor M. Liplianin <liplianin@netup.ru>
-+ * Copyright (C) 2009 Abylay Ospan <aospan@netup.ru>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include "dvb_ca_en50221.h"
-+#include "dvb_usb.h"
-+#include "dvbsky_m88ds3103.h"
-+
-+static int dvbsky_debug;
-+module_param(dvbsky_debug, int, 0644);
-+MODULE_PARM_DESC(dvbsky_debug, "Activates dvbsky usb debugging (default:0)");
-+
-+#define DVBSKY_MSG_DELAY 0/*2000*/
-+#define DVBSKY_CI_CTL 0x04
-+#define DVBSKY_CI_RD 1
-+#define DVBSKY_BUF_LEN 64
-+
-+#define dprintk(args...) \
-+ do { \
-+ if (dvbsky_debug) \
-+ printk(KERN_INFO "dvbsky_usb: " args); \
-+ } while (0)
-+
-+DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
-+
-+struct dvbsky_state {
-+ struct mutex stream_mutex;
-+ u8 ibuf[DVBSKY_BUF_LEN];
-+ u8 obuf[DVBSKY_BUF_LEN];
-+ u8 has_ci;
-+ u8 ci_attached;
-+ struct dvb_ca_en50221 ci;
-+ unsigned long next_status_checked_time;
-+ u8 ci_i2c_addr;
-+ u8 current_ci_flag;
-+ int ci_status;
-+};
-+
-+static int dvbsky_usb_generic_rw(struct dvb_usb_device *d,
-+ u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
-+{
-+ int ret;
-+ struct dvbsky_state *state = d_to_priv(d);
-+
-+ mutex_lock(&d->usb_mutex);
-+ if (wlen != 0)
-+ memcpy(state->obuf, wbuf, wlen);
-+
-+ ret = dvb_usbv2_generic_rw_locked(d, state->obuf, wlen,
-+ state->ibuf, rlen);
-+
-+ if (!ret && (rlen != 0))
-+ memcpy(rbuf, state->ibuf, rlen);
-+
-+ mutex_unlock(&d->usb_mutex);
-+ return ret;
-+}
-+
-+static int dvbsky_stream_ctrl(struct dvb_usb_device *d, u8 onoff)
-+{
-+ struct dvbsky_state *state = d_to_priv(d);
-+ int ret;
-+ u8 obuf_pre[3] = { 0x37, 0, 0 };
-+ u8 obuf_post[3] = { 0x36, 3, 0 };
-+ dprintk("%s() -off \n", __func__);
-+ mutex_lock(&state->stream_mutex);
-+ ret = dvbsky_usb_generic_rw(d, obuf_pre, 3, NULL, 0);
-+ if (!ret && onoff) {
-+ msleep(20);
-+ ret = dvbsky_usb_generic_rw(d, obuf_post, 3, NULL, 0);
-+ dprintk("%s() -on \n", __func__);
-+ }
-+ mutex_unlock(&state->stream_mutex);
-+ return ret;
-+}
-+
-+/* CI opertaions */
-+static int dvbsky_ci_read_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg,
-+ u8 *buf, int len)
-+{
-+ int ret;
-+ struct i2c_msg msg[] = {
-+ {
-+ .addr = addr,
-+ .flags = 0,
-+ .buf = ®,
-+ .len = 1
-+ }, {
-+ .addr = addr,
-+ .flags = I2C_M_RD,
-+ .buf = buf,
-+ .len = len
-+ }
-+ };
-+
-+ ret = i2c_transfer(i2c_adap, msg, 2);
-+
-+ if (ret != 2) {
-+ dprintk("%s: error, Reg = 0x%02x, Status = %d\n", __func__, reg, ret);
-+ return -1;
-+ }
-+ return 0;
-+}
-+
-+static int dvbsky_ci_write_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg,
-+ u8 *buf, int len)
-+{
-+ int ret;
-+ u8 buffer[64];
-+
-+ struct i2c_msg msg = {
-+ .addr = addr,
-+ .flags = 0,
-+ .buf = &buffer[0],
-+ .len = len + 1
-+ };
-+
-+ if(len + 1 > sizeof(buffer)) {
-+ dprintk("%s: len overflow.\n", __func__);
-+ return -1;
-+ }
-+
-+ buffer[0] = reg;
-+ memcpy(&buffer[1], buf, len);
-+
-+ ret = i2c_transfer(i2c_adap, &msg, 1);
-+
-+ if (ret != 1) {
-+ dprintk("%s: error, Reg=[0x%02x], Status=%d\n", __func__, reg, ret);
-+ return -1;
-+ }
-+ return 0;
-+}
-+
-+static int dvbsky_ci_op_cam(struct dvb_ca_en50221 *ci, int slot,
-+ u8 flag, u8 read, int addr, u8 data)
-+{
-+ struct dvb_usb_device *d = ci->data;
-+ struct dvbsky_state *state = d_to_priv(d);
-+ u8 store;
-+ int ret;
-+ u8 command[4], respond[2], command_size, respond_size;
-+
-+ /*dprintk("%s()\n", __func__);*/
-+ if (0 != slot)
-+ return -EINVAL;
-+
-+ if (state->current_ci_flag != flag) {
-+ ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0, &store, 1);
-+ if (ret != 0)
-+ return ret;
-+
-+ store &= ~0x0c;
-+ store |= flag;
-+
-+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0, &store, 1);
-+ if (ret != 0)
-+ return ret;
-+ }
-+ state->current_ci_flag = flag;
-+
-+ command[1] = (u8)((addr >> 8) & 0xff); /*high part of address*/
-+ command[2] = (u8)(addr & 0xff); /*low part of address*/
-+ if (read) {
-+ command[0] = 0x71;
-+ command_size = 3;
-+ respond_size = 2;
-+ } else {
-+ command[0] = 0x70;
-+ command[3] = data;
-+ command_size = 4;
-+ respond_size = 1;
-+ }
-+ ret = dvbsky_usb_generic_rw(d, command, command_size, respond, respond_size);
-+ if(ret)
-+ dev_err(&d->udev->dev, "%s: %s() " \
-+ "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+
-+ return (read) ? respond[1] : 0;
-+}
-+
-+static int dvbsky_ci_read_attribute_mem(struct dvb_ca_en50221 *ci,
-+ int slot, int addr)
-+{
-+ return dvbsky_ci_op_cam(ci, slot, 0, DVBSKY_CI_RD, addr, 0);
-+}
-+
-+static int dvbsky_ci_write_attribute_mem(struct dvb_ca_en50221 *ci,
-+ int slot, int addr, u8 data)
-+{
-+ return dvbsky_ci_op_cam(ci, slot, 0, 0, addr, data);
-+}
-+
-+static int dvbsky_ci_read_cam_ctl(struct dvb_ca_en50221 *ci, int slot, u8 addr)
-+{
-+ return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, DVBSKY_CI_RD, addr, 0);
-+}
-+
-+static int dvbsky_ci_write_cam_ctl(struct dvb_ca_en50221 *ci, int slot,
-+ u8 addr, u8 data)
-+{
-+ return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, 0, addr, data);
-+}
-+
-+static int dvbsky_ci_slot_reset(struct dvb_ca_en50221 *ci, int slot)
-+{
-+ struct dvb_usb_device *d = ci->data;
-+ struct dvbsky_state *state = d_to_priv(d);
-+ u8 buf = 0x80;
-+ int ret;
-+ dprintk("%s() slot=%d\n", __func__, slot);
-+
-+ if (0 != slot)
-+ return -EINVAL;
-+
-+ udelay(500);
-+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0, &buf, 1);
-+
-+ if (ret != 0)
-+ return ret;
-+
-+ udelay(500);
-+
-+ buf = 0x00;
-+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0, &buf, 1);
-+ msleep(1000);
-+ dprintk("%s() slot=%d complete\n", __func__, slot);
-+ return 0;
-+
-+}
-+
-+static int dvbsky_ci_slot_shutdown(struct dvb_ca_en50221 *ci, int slot)
-+{
-+ /* not implemented */
-+ dprintk("%s()\n", __func__);
-+ return 0;
-+}
-+
-+static int dvbsky_ci_slot_ts_enable(struct dvb_ca_en50221 *ci, int slot)
-+{
-+ struct dvb_usb_device *d = ci->data;
-+ struct dvbsky_state *state = d_to_priv(d);
-+ u8 buf;
-+ int ret;
-+
-+ dprintk("%s()\n", __func__);
-+ if (0 != slot)
-+ return -EINVAL;
-+
-+ dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0, &buf, 1);
-+ buf |= 0x60;
-+
-+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0, &buf, 1);
-+ return ret;
-+}
-+
-+static int dvbsky_ci_poll_slot_status(struct dvb_ca_en50221 *ci, int slot,
-+ int open)
-+{
-+ struct dvb_usb_device *d = ci->data;
-+ struct dvbsky_state *state = d_to_priv(d);
-+ int ret = 0;
-+ u8 buf = 0;
-+ /*dprintk("%s()\n", __func__);*/
-+
-+ /* CAM module INSERT/REMOVE processing. slow operation because of i2c
-+ * transfers */
-+ if (time_after(jiffies, state->next_status_checked_time)) {
-+ ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0, &buf, 1);
-+
-+ /*dprintk("%s() status=%x\n", __func__, buf);*/
-+
-+ state->next_status_checked_time = jiffies
-+ + msecs_to_jiffies(1000);
-+
-+ if (ret != 0)
-+ return 0;
-+
-+ if (buf & 1) {
-+ state->ci_status = DVB_CA_EN50221_POLL_CAM_PRESENT |
-+ DVB_CA_EN50221_POLL_CAM_READY;
-+ }
-+ else
-+ state->ci_status = 0;
-+ }
-+ /*dprintk("%s() ret=%x\n", __func__, state->ci_status);*/
-+ return state->ci_status;
-+}
-+
-+static int dvbsky_ci_init(struct dvb_usb_device *d)
-+{
-+ struct dvbsky_state *state = d_to_priv(d);
-+ int ret;
-+ u8 cimax_init[34] = {
-+ 0x00, /* module A control*/
-+ 0x00, /* auto select mask high A */
-+ 0x00, /* auto select mask low A */
-+ 0x00, /* auto select pattern high A */
-+ 0x00, /* auto select pattern low A */
-+ 0x44, /* memory access time A */
-+ 0x00, /* invert input A */
-+ 0x00, /* RFU */
-+ 0x00, /* RFU */
-+ 0x00, /* module B control*/
-+ 0x00, /* auto select mask high B */
-+ 0x00, /* auto select mask low B */
-+ 0x00, /* auto select pattern high B */
-+ 0x00, /* auto select pattern low B */
-+ 0x44, /* memory access time B */
-+ 0x00, /* invert input B */
-+ 0x00, /* RFU */
-+ 0x00, /* RFU */
-+ 0x00, /* auto select mask high Ext */
-+ 0x00, /* auto select mask low Ext */
-+ 0x00, /* auto select pattern high Ext */
-+ 0x00, /* auto select pattern low Ext */
-+ 0x00, /* RFU */
-+ 0x02, /* destination - module A */
-+ 0x01, /* power on (use it like store place) */
-+ 0x00, /* RFU */
-+ 0x00, /* int status read only */
-+ 0x00, /* Max: Disable the interrupt in USB solution.*/
-+ 0x05, /* EXTINT=active-high, INT=push-pull */
-+ 0x00, /* USCG1 */
-+ 0x04, /* ack active low */
-+ 0x00, /* LOCK = 0 */
-+ 0x22, /* serial mode, rising in, rising out, MSB first*/
-+ 0x00 /* synchronization */
-+ };
-+ dprintk("%s()\n", __func__);
-+ state->current_ci_flag = 0xff;
-+ state->ci_status = 0;
-+ state->next_status_checked_time = jiffies + msecs_to_jiffies(1000);
-+ state->ci_i2c_addr = 0x40;
-+
-+ state->ci.owner = THIS_MODULE;
-+ state->ci.read_attribute_mem = dvbsky_ci_read_attribute_mem;
-+ state->ci.write_attribute_mem = dvbsky_ci_write_attribute_mem;
-+ state->ci.read_cam_control = dvbsky_ci_read_cam_ctl;
-+ state->ci.write_cam_control = dvbsky_ci_write_cam_ctl;
-+ state->ci.slot_reset = dvbsky_ci_slot_reset;
-+ state->ci.slot_shutdown = dvbsky_ci_slot_shutdown;
-+ state->ci.slot_ts_enable = dvbsky_ci_slot_ts_enable;
-+ state->ci.poll_slot_status = dvbsky_ci_poll_slot_status;
-+ state->ci.data = d;
-+
-+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0, &cimax_init[0], 34);
-+ /* lock registers */
-+ ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0x1f, &cimax_init[0x18], 1);
-+ /* power on slots */
-+ ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+ 0x18, &cimax_init[0x18], 1);
-+ if (0 != ret)
-+ return ret;
-+
-+ ret = dvb_ca_en50221_init(&d->adapter[0].dvb_adap, &state->ci, 0, 1);
-+ if (ret)
-+ return ret;
-+ state->ci_attached = 1;
-+ dprintk("%s() complete.\n", __func__);
-+ return 0;
-+}
-+
-+static void dvbsky_ci_release(struct dvb_usb_device *d)
-+{
-+ struct dvbsky_state *state = d_to_priv(d);
-+
-+ /* detach CI */
-+ if (state->ci_attached)
-+ dvb_ca_en50221_release(&state->ci);
-+
-+ return;
-+}
-+
-+static int dvbsky_streaming_ctrl(struct dvb_frontend *fe, int onoff)
-+{
-+ struct dvb_usb_device *d = fe_to_d(fe);
-+ /*dprintk("%s() %d\n", __func__, onoff);*/
-+ return dvbsky_stream_ctrl(d, (onoff == 0) ? 0 : 1);
-+}
-+
-+/* GPIO */
-+static int dvbsky_gpio_ctrl(struct dvb_usb_device *d, u8 gport, u8 value)
-+{
-+ int ret;
-+ u8 obuf[64], ibuf[64];
-+ obuf[0] = 0x0e;
-+ obuf[1] = gport;
-+ obuf[2] = value;
-+ ret = dvbsky_usb_generic_rw(d, obuf, 3, ibuf, 1);
-+ if(ret)
-+ dev_err(&d->udev->dev, "%s: %s() " \
-+ "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+ return ret;
-+}
-+
-+/* I2C */
-+static int dvbsky_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[],
-+ int num)
-+{
-+ struct dvb_usb_device *d = i2c_get_adapdata(adap);
-+ int ret = 0;
-+ u8 ibuf[64], obuf[64];
-+
-+ if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
-+ return -EAGAIN;
-+
-+ if (num > 2) {
-+ printk(KERN_ERR "dvbsky_usb: too many i2c messages[%d] than 2.", num);
-+ ret = -EOPNOTSUPP;
-+ goto i2c_error;
-+ }
-+
-+ if(num == 1) {
-+ if (msg[0].len > 60) {
-+ printk(KERN_ERR "dvbsky_usb: too many i2c bytes[%d] than 60.", msg[0].len);
-+ ret = -EOPNOTSUPP;
-+ goto i2c_error;
-+ }
-+ if (msg[0].flags & I2C_M_RD) {
-+ /* single read */
-+ obuf[0] = 0x09;
-+ obuf[1] = 0;
-+ obuf[2] = msg[0].len;
-+ obuf[3] = msg[0].addr;
-+ ret = dvbsky_usb_generic_rw(d, obuf, 4, ibuf, msg[0].len + 1);
-+ if(ret)
-+ dev_err(&d->udev->dev, "%s: %s() " \
-+ "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+ /*dprintk("%s(): read status = %d\n", __func__, ibuf[0]);*/
-+ if (!ret)
-+ memcpy(msg[0].buf, &ibuf[1], msg[0].len);
-+ } else {
-+ /* write */
-+ obuf[0] = 0x08;
-+ obuf[1] = msg[0].addr;
-+ obuf[2] = msg[0].len;
-+ memcpy(&obuf[3], msg[0].buf, msg[0].len);
-+ ret = dvbsky_usb_generic_rw(d, obuf, msg[0].len + 3, ibuf, 1);
-+ if(ret)
-+ dev_err(&d->udev->dev, "%s: %s() " \
-+ "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+ /*dprintk("%s(): write status = %d\n", __func__, ibuf[0]);*/
-+ }
-+ } else {
-+ if ((msg[0].len > 60) || (msg[1].len > 60)) {
-+ printk(KERN_ERR "dvbsky_usb: too many i2c bytes[w-%d][r-%d] than 60.", msg[0].len, msg[1].len);
-+ ret = -EOPNOTSUPP;
-+ goto i2c_error;
-+ }
-+ /* write then read */
-+ obuf[0] = 0x09;
-+ obuf[1] = msg[0].len;
-+ obuf[2] = msg[1].len;
-+ obuf[3] = msg[0].addr;
-+ memcpy(&obuf[4], msg[0].buf, msg[0].len);
-+ ret = dvbsky_usb_generic_rw(d, obuf, msg[0].len + 4, ibuf, msg[1].len + 1);
-+ if(ret)
-+ dev_err(&d->udev->dev, "%s: %s() " \
-+ "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+ /*dprintk("%s(): write then read status = %d\n", __func__, ibuf[0]);*/
-+ if (!ret)
-+ memcpy(msg[1].buf, &ibuf[1], msg[1].len);
-+ }
-+i2c_error:
-+ mutex_unlock(&d->i2c_mutex);
-+ return (ret) ? ret : num;
-+}
-+
-+static u32 dvbsky_i2c_func(struct i2c_adapter *adapter)
-+{
-+ return I2C_FUNC_I2C;
-+}
-+
-+static struct i2c_algorithm dvbsky_i2c_algo = {
-+ .master_xfer = dvbsky_i2c_xfer,
-+ .functionality = dvbsky_i2c_func,
-+};
-+
-+#if IS_ENABLED(CONFIG_RC_CORE)
-+static int dvbsky_rc_query(struct dvb_usb_device *d)
-+{
-+
-+ u32 code = 0xffff, scancode;\r
-+ u8 rc5_command, rc5_system;\r
-+ u8 obuf[2], ibuf[2], toggle;\r
-+ int ret;
-+ obuf[0] = 0x10;\r
-+ ret = dvbsky_usb_generic_rw(d, obuf, 1, ibuf, 2);
-+ if(ret)
-+ dev_err(&d->udev->dev, "%s: %s() " \
-+ "failed=%d\n", KBUILD_MODNAME, __func__, ret);\r
-+ if(ret == 0)\r
-+ code = (ibuf[0] << 8) | ibuf[1];\r
-+\r
-+ if (code != 0xffff) {\r
-+ dprintk("rc code: %x \n", code);\r
-+ rc5_command = code & 0x3F;\r
-+ rc5_system = (code & 0x7C0) >> 6;\r
-+ toggle = (code & 0x800) ? 1 : 0; \r
-+ scancode = rc5_system << 8 | rc5_command;\r
-+ rc_keydown(d->rc_dev, scancode, toggle);\r
-+ }\r
-+ return 0;
-+}
-+
-+static int dvbsky_get_rc_config(struct dvb_usb_device *d, struct dvb_usb_rc *rc)
-+{
-+ rc->allowed_protos = RC_BIT_RC5;
-+ rc->query = dvbsky_rc_query;
-+ rc->interval = 300;
-+ return 0;
-+}
-+#else
-+ #define dvbsky_get_rc_config NULL
-+#endif
-+
-+static int dvbsky_sync_ctrl(struct dvb_frontend *fe)
-+{
-+ struct dvb_usb_device *d = fe_to_d(fe);
-+ return dvbsky_stream_ctrl(d, 1);
-+}
-+
-+static int dvbsky_usb_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+ struct dvb_usb_device *d = fe_to_d(fe);
-+ u8 value;
-+
-+ if (voltage == SEC_VOLTAGE_OFF)
-+ value = 0;
-+ else
-+ value = 1;
-+ return dvbsky_gpio_ctrl(d, 0x80, value);
-+}
-+
-+static int dvbsky_usb_ci_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+ struct dvb_usb_device *d = fe_to_d(fe);
-+ u8 value;
-+
-+ if (voltage == SEC_VOLTAGE_OFF)
-+ value = 0;
-+ else
-+ value = 1;
-+ return dvbsky_gpio_ctrl(d, 0x00, value);
-+}
-+
-+static int dvbsky_t680c_attach(struct dvb_usb_adapter *adap)
-+{
-+ struct dvbsky_state *state = adap_to_priv(adap);
-+ struct dvb_usb_device *d = adap_to_d(adap);
-+ int ret = 0;
-+
-+ /*dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);*/
-+
-+// adap->fe[0] = dvb_attach(sit2_attach,
-+// &dvbsky_usb_sit2_config,
-+// &d->i2c_adap);
-+ if (!adap->fe[0]) {
-+ printk(KERN_ERR "dvbsky_t680c_attach fail.");
-+ ret = -ENODEV;
-+ }
-+
-+ state->has_ci = 1;
-+
-+ return ret;
-+}
-+
-+static int dvbsky_t330_attach(struct dvb_usb_adapter *adap)
-+{
-+ struct dvbsky_state *state = adap_to_priv(adap);
-+ struct dvb_usb_device *d = adap_to_d(adap);
-+ int ret = 0;
-+
-+ /*dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);*/
-+
-+// adap->fe[0] = dvb_attach(sit2_attach,
-+// &dvbsky_t330_sit2_config,
-+// &d->i2c_adap);
-+ if (!adap->fe[0]) {
-+ printk(KERN_ERR "dvbsky_t330_attach fail.");
-+ ret = -ENODEV;
-+ }
-+
-+ state->has_ci = 0;
-+
-+ return ret;
-+}
-+
-+static int dvbsky_read_mac_addr(struct dvb_usb_adapter *adap, u8 mac[6])
-+{
-+ struct dvb_usb_device *d = adap_to_d(adap);
-+ u8 obuf[] = { 0x1e, 0x00 };
-+ u8 ibuf[6] = { 0 };
-+ struct i2c_msg msg[] = {
-+ {
-+ .addr = 0x51,
-+ .flags = 0,
-+ .buf = obuf,
-+ .len = 2,
-+ }, {
-+ .addr = 0x51,
-+ .flags = I2C_M_RD,
-+ .buf = ibuf,
-+ .len = 6,
-+
-+ }
-+ };
-+
-+ if (i2c_transfer(&d->i2c_adap, msg, 2) == 2)
-+ memcpy(mac, ibuf, 6);
-+
-+ printk(KERN_INFO "dvbsky_usb MAC address=%pM\n", mac);
-+
-+ return 0;
-+}
-+
-+static struct dvbsky_m88ds3103_config dvbsky_usb_ds3103_config = {
-+ .demod_address = 0x68,
-+ .ci_mode = 1,
-+ .pin_ctrl = 0x83,
-+ .ts_mode = 0,
-+ .start_ctrl = dvbsky_sync_ctrl,
-+ .set_voltage = dvbsky_usb_set_voltage,
-+};
-+
-+static int dvbsky_s960_attach(struct dvb_usb_adapter *adap)
-+{
-+ struct dvbsky_state *state = adap_to_priv(adap);
-+ struct dvb_usb_device *d = adap_to_d(adap);
-+ int ret = 0;
-+
-+ dprintk("%s()\n", __func__);
-+
-+ adap->fe[0] = dvb_attach(dvbsky_m88ds3103_attach,
-+ &dvbsky_usb_ds3103_config,
-+ &d->i2c_adap);
-+ if (!adap->fe[0]) {
-+ printk(KERN_ERR "dvbsky_s960_attach fail.");
-+ ret = -ENODEV;
-+ }
-+
-+ state->has_ci = 0;
-+
-+ return ret;
-+}
-+
-+static struct dvbsky_m88ds3103_config dvbsky_usb_ds3103_ci_config = {
-+ .demod_address = 0x68,
-+ .ci_mode = 2,
-+ .pin_ctrl = 0x82,
-+ .ts_mode = 0,
-+ .start_ctrl = dvbsky_sync_ctrl,
-+ .set_voltage = dvbsky_usb_ci_set_voltage,
-+};
-+static int dvbsky_s960c_attach(struct dvb_usb_adapter *adap)
-+{
-+ struct dvbsky_state *state = adap_to_priv(adap);
-+ struct dvb_usb_device *d = adap_to_d(adap);
-+ int ret = 0;
-+
-+ /*dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);*/
-+
-+ adap->fe[0] = dvb_attach(dvbsky_m88ds3103_attach,
-+ &dvbsky_usb_ds3103_ci_config,
-+ &d->i2c_adap);
-+ if (!adap->fe[0]) {
-+ printk(KERN_ERR "dvbsky_s960c_attach fail.");
-+ ret = -ENODEV;
-+ }
-+
-+ state->has_ci = 1;
-+
-+ return ret;
-+}
-+
-+static int dvbsky_identify_state(struct dvb_usb_device *d, const char **name)
-+{
-+ /*
-+ printk(KERN_INFO "%s, build on %s %s(),delay=%d\n",
-+ __func__, __DATE__,__TIME__,d->props->generic_bulk_ctrl_delay);
-+ */
-+ dvbsky_gpio_ctrl(d, 0x04, 1);
-+ msleep(20);
-+ dvbsky_gpio_ctrl(d, 0x83, 0);
-+ dvbsky_gpio_ctrl(d, 0xc0, 1);
-+ msleep(100);
-+ dvbsky_gpio_ctrl(d, 0x83, 1);
-+ dvbsky_gpio_ctrl(d, 0xc0, 0);
-+ msleep(50);
-+
-+ return WARM;
-+}
-+
-+static int dvbsky_init(struct dvb_usb_device *d)
-+{
-+ struct dvbsky_state *state = d_to_priv(d);
-+ int ret;
-+
-+ /* use default interface */
-+ /*
-+ ret = usb_set_interface(d->udev, 0, 0);
-+ if (ret)
-+ return ret;
-+ */
-+ mutex_init(&state->stream_mutex);
-+
-+ /* attach CI */
-+ if (state->has_ci) {
-+ state->ci_attached = 0;
-+ ret = dvbsky_ci_init(d);
-+ if (ret)
-+ return ret;
-+ }
-+ return 0;
-+}
-+
-+static void dvbsky_exit(struct dvb_usb_device *d)
-+{
-+ return dvbsky_ci_release(d);
-+}
-+
-+/* DVB USB Driver stuff */
-+static struct dvb_usb_device_properties dvbsky_t330_props = {
-+ .driver_name = KBUILD_MODNAME,
-+ .owner = THIS_MODULE,
-+ .adapter_nr = adapter_nr,
-+ .size_of_priv = sizeof(struct dvbsky_state),
-+
-+ .generic_bulk_ctrl_endpoint = 0x01,
-+ .generic_bulk_ctrl_endpoint_response = 0x81,
-+ .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
-+
-+ .i2c_algo = &dvbsky_i2c_algo,
-+ .frontend_attach = dvbsky_t330_attach,
-+ .init = dvbsky_init,
-+ .get_rc_config = dvbsky_get_rc_config,
-+ .streaming_ctrl = dvbsky_streaming_ctrl,
-+ .identify_state = dvbsky_identify_state,
-+ .exit = dvbsky_exit,
-+ .read_mac_address = dvbsky_read_mac_addr,
-+
-+ .num_adapters = 1,
-+ .adapter = {
-+ {
-+ .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
-+ }
-+ }
-+};
-+
-+static struct dvb_usb_device_properties dvbsky_s960c_props = {
-+ .driver_name = KBUILD_MODNAME,
-+ .owner = THIS_MODULE,
-+ .adapter_nr = adapter_nr,
-+ .size_of_priv = sizeof(struct dvbsky_state),
-+
-+ .generic_bulk_ctrl_endpoint = 0x01,
-+ .generic_bulk_ctrl_endpoint_response = 0x81,
-+ .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
-+
-+ .i2c_algo = &dvbsky_i2c_algo,
-+ .frontend_attach = dvbsky_s960c_attach,
-+ .init = dvbsky_init,
-+ .get_rc_config = dvbsky_get_rc_config,
-+ .streaming_ctrl = dvbsky_streaming_ctrl,
-+ .identify_state = dvbsky_identify_state,
-+ .exit = dvbsky_exit,
-+ .read_mac_address = dvbsky_read_mac_addr,
-+
-+ .num_adapters = 1,
-+ .adapter = {
-+ {
-+ .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
-+ }
-+ }
-+};
-+
-+static struct dvb_usb_device_properties dvbsky_t680c_props = {
-+ .driver_name = KBUILD_MODNAME,
-+ .owner = THIS_MODULE,
-+ .adapter_nr = adapter_nr,
-+ .size_of_priv = sizeof(struct dvbsky_state),
-+
-+ .generic_bulk_ctrl_endpoint = 0x01,
-+ .generic_bulk_ctrl_endpoint_response = 0x81,
-+ .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
-+
-+ .i2c_algo = &dvbsky_i2c_algo,
-+ .frontend_attach = dvbsky_t680c_attach,
-+ .init = dvbsky_init,
-+ .get_rc_config = dvbsky_get_rc_config,
-+ .streaming_ctrl = dvbsky_streaming_ctrl,
-+ .identify_state = dvbsky_identify_state,
-+ .exit = dvbsky_exit,
-+ .read_mac_address = dvbsky_read_mac_addr,
-+
-+ .num_adapters = 1,
-+ .adapter = {
-+ {
-+ .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
-+ }
-+ }
-+};
-+
-+static struct dvb_usb_device_properties dvbsky_s960_props = {
-+ .driver_name = KBUILD_MODNAME,
-+ .owner = THIS_MODULE,
-+ .adapter_nr = adapter_nr,
-+ .size_of_priv = sizeof(struct dvbsky_state),
-+
-+ .generic_bulk_ctrl_endpoint = 0x01,
-+ .generic_bulk_ctrl_endpoint_response = 0x81,
-+ .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
-+
-+ .i2c_algo = &dvbsky_i2c_algo,
-+ .frontend_attach = dvbsky_s960_attach,
-+ .init = dvbsky_init,
-+ .get_rc_config = dvbsky_get_rc_config,
-+ .streaming_ctrl = dvbsky_streaming_ctrl,
-+ .identify_state = dvbsky_identify_state,
-+ .exit = dvbsky_exit,
-+ .read_mac_address = dvbsky_read_mac_addr,
-+
-+ .num_adapters = 1,
-+ .adapter = {
-+ {
-+ .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
-+ }
-+ }
-+};
-+
-+static const struct usb_device_id dvbsky_id_table[] = {
-+ { DVB_USB_DEVICE(0x0572, 0x0320,
-+ &dvbsky_t330_props, "DVBSky T330 USB Stick", RC_MAP_DVBSKY) },
-+ { DVB_USB_DEVICE(0x0572, 0x960c,
-+ &dvbsky_s960c_props, "DVBSky S960CI", RC_MAP_DVBSKY) },
-+ { DVB_USB_DEVICE(0x0572, 0x680c,
-+ &dvbsky_t680c_props, "DVBSky T680CI", RC_MAP_DVBSKY) },
-+ { DVB_USB_DEVICE(0x0572, 0x6831,
-+ &dvbsky_s960_props, "DVBSky S960/S860", RC_MAP_DVBSKY) },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(usb, dvbsky_id_table);
-+
-+static struct usb_driver dvbsky_usb_driver = {
-+ .name = KBUILD_MODNAME,
-+ .id_table = dvbsky_id_table,
-+ .probe = dvb_usbv2_probe,
-+ .disconnect = dvb_usbv2_disconnect,
-+ .suspend = dvb_usbv2_suspend,
-+ .resume = dvb_usbv2_resume,
-+ .reset_resume = dvb_usbv2_reset_resume,
-+ .no_dynamic_id = 1,
-+ .soft_unbind = 1,
-+};
-+
-+module_usb_driver(dvbsky_usb_driver);
-+
-+MODULE_AUTHOR("Max nibble <nibble.max@gmail.com>");
-+MODULE_DESCRIPTION("Driver for DVBSky USB2.0");
-+MODULE_LICENSE("GPL");
-diff --git a/include/media/rc-map.h b/include/media/rc-map.h
-index a20ed97..73f8c92 100644
---- a/include/media/rc-map.h
-+++ b/include/media/rc-map.h
-@@ -119,6 +119,7 @@ void rc_map_init(void);
- #define RC_MAP_DM1105_NEC "rc-dm1105-nec"
- #define RC_MAP_DNTV_LIVE_DVBT_PRO "rc-dntv-live-dvbt-pro"
- #define RC_MAP_DNTV_LIVE_DVB_T "rc-dntv-live-dvb-t"
-+#define RC_MAP_DVBSKY "rc-dvbsky"
- #define RC_MAP_EMPTY "rc-empty"
- #define RC_MAP_EM_TERRATEC "rc-em-terratec"
- #define RC_MAP_ENCORE_ENLTV2 "rc-encore-enltv2"
+++ /dev/null
-diff -Naur linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c
---- linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c 2014-11-21 18:23:44.000000000 +0100
-+++ linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c 2014-12-03 11:30:58.813355413 +0100
-@@ -4847,7 +4847,8 @@
- rt2x00_set_field32(®, TXOP_CTRL_CFG_EXT_CWMIN, 0);
- rt2800_register_write(rt2x00dev, TXOP_CTRL_CFG, reg);
-
-- reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
-+// reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
-+ reg = 0x00000002;
- rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg);
-
- rt2800_register_read(rt2x00dev, TX_RTS_CFG, ®);
+++ /dev/null
-diff -Naur linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c
---- linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c 2014-12-03 11:30:58.000000000 +0100
-+++ linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c 2014-12-03 12:15:45.743454351 +0100
-@@ -1557,7 +1557,7 @@
- if (!is_zero_ether_addr((const u8 *)conf->bssid)) {
- reg = le32_to_cpu(conf->bssid[1]);
- rt2x00_set_field32(®, MAC_BSSID_DW1_BSS_ID_MASK, 3);
-- rt2x00_set_field32(®, MAC_BSSID_DW1_BSS_BCN_NUM, 7);
-+ rt2x00_set_field32(®, MAC_BSSID_DW1_BSS_BCN_NUM, 0);
- conf->bssid[1] = cpu_to_le32(reg);
- }
-
+++ /dev/null
-From 77e3b7f055f824e4d6587faa73bd4aacd0c307e8 Mon Sep 17 00:00:00 2001
-From: hayeswang <hayeswang@realtek.com>
-Date: Wed, 9 Jul 2014 14:52:51 +0800
-Subject: [PATCH] r8169: disable L23
-
-For RTL8411, RTL8111G, RTL8402, RTL8105, and RTL8106, disable the feature
-of entering the L2/L3 link state of the PCIe. When the nic starts the process
-of entering the L2/L3 link state and the PCI reset occurs before the work
-is finished, the work would be queued and continue after the next the PCI
-reset occurs. This causes the device stays in L2/L3 link state, and the system
-couldn't find the device.
-
-Signed-off-by: Hayes Wang <hayeswang@realtek.com>
-Acked-by: Francois Romieu <romieu@fr.zoreil.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/realtek/r8169.c | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index 3ff7bc3..b94f658 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -538,6 +538,7 @@ enum rtl_register_content {
- MagicPacket = (1 << 5), /* Wake up when receives a Magic Packet */
- LinkUp = (1 << 4), /* Wake up when the cable connection is re-established */
- Jumbo_En0 = (1 << 2), /* 8168 only. Reserved in the 8168b */
-+ Rdy_to_L23 = (1 << 1), /* L23 Enable */
- Beacon_en = (1 << 0), /* 8168 only. Reserved in the 8168b */
-
- /* Config4 register */
-@@ -4897,6 +4898,21 @@ static void rtl_enable_clock_request(struct pci_dev *pdev)
- PCI_EXP_LNKCTL_CLKREQ_EN);
- }
-
-+static void rtl_pcie_state_l2l3_enable(struct rtl8169_private *tp, bool enable)
-+{
-+ void __iomem *ioaddr = tp->mmio_addr;
-+ u8 data;
-+
-+ data = RTL_R8(Config3);
-+
-+ if (enable)
-+ data |= Rdy_to_L23;
-+ else
-+ data &= ~Rdy_to_L23;
-+
-+ RTL_W8(Config3, data);
-+}
-+
- #define R8168_CPCMD_QUIRK_MASK (\
- EnableBist | \
- Mac_dbgo_oe | \
-@@ -5246,6 +5262,7 @@ static void rtl_hw_start_8411(struct rtl8169_private *tp)
- };
-
- rtl_hw_start_8168f(tp);
-+ rtl_pcie_state_l2l3_enable(tp, false);
-
- rtl_ephy_init(tp, e_info_8168f_1, ARRAY_SIZE(e_info_8168f_1));
-
-@@ -5284,6 +5301,8 @@ static void rtl_hw_start_8168g_1(struct rtl8169_private *tp)
-
- rtl_w1w0_eri(tp, 0x2fc, ERIAR_MASK_0001, 0x01, 0x06, ERIAR_EXGMAC);
- rtl_w1w0_eri(tp, 0x1b0, ERIAR_MASK_0011, 0x0000, 0x1000, ERIAR_EXGMAC);
-+
-+ rtl_pcie_state_l2l3_enable(tp, false);
- }
-
- static void rtl_hw_start_8168g_2(struct rtl8169_private *tp)
-@@ -5536,6 +5555,8 @@ static void rtl_hw_start_8105e_1(struct rtl8169_private *tp)
- RTL_W8(DLLPR, RTL_R8(DLLPR) | PFM_EN);
-
- rtl_ephy_init(tp, e_info_8105e_1, ARRAY_SIZE(e_info_8105e_1));
-+
-+ rtl_pcie_state_l2l3_enable(tp, false);
- }
-
- static void rtl_hw_start_8105e_2(struct rtl8169_private *tp)
-@@ -5571,6 +5592,8 @@ static void rtl_hw_start_8402(struct rtl8169_private *tp)
- rtl_eri_write(tp, 0xc0, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC);
- rtl_eri_write(tp, 0xb8, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC);
- rtl_w1w0_eri(tp, 0x0d4, ERIAR_MASK_0011, 0x0e00, 0xff00, ERIAR_EXGMAC);
-+
-+ rtl_pcie_state_l2l3_enable(tp, false);
- }
-
- static void rtl_hw_start_8106(struct rtl8169_private *tp)
-@@ -5583,6 +5606,8 @@ static void rtl_hw_start_8106(struct rtl8169_private *tp)
- RTL_W32(MISC, (RTL_R32(MISC) | DISABLE_LAN_EN) & ~EARLY_TALLY_EN);
- RTL_W8(MCU, RTL_R8(MCU) | EN_NDP | EN_OOB_RESET);
- RTL_W8(DLLPR, RTL_R8(DLLPR) & ~PFM_EN);
-+
-+ rtl_pcie_state_l2l3_enable(tp, false);
- }
-
- static void rtl_hw_start_8101(struct net_device *dev)
---
-1.8.5.2
-
+++ /dev/null
-diff -Naur linux-3.14.43.org/drivers/ata/libata-core.c linux-3.14.43/drivers/ata/libata-core.c
---- linux-3.14.43.org/drivers/ata/libata-core.c 2015-05-17 18:54:01.000000000 +0200
-+++ linux-3.14.43/drivers/ata/libata-core.c 2015-07-11 19:15:01.450041507 +0200
-@@ -4229,6 +4229,9 @@
- { "Micron_M550*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
- { "Crucial_CT*M550SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
-
-+ /* devices that don't properly handle TRIM commands */
-+ { "SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM, },
-+
- /*
- * Some WD SATA-I drives spin up and down erratically when the link
- * is put into the slumber mode. We don't have full list of the
-diff -Naur linux-3.14.43.org/drivers/ata/libata-scsi.c linux-3.14.43/drivers/ata/libata-scsi.c
---- linux-3.14.43.org/drivers/ata/libata-scsi.c 2015-05-17 18:54:01.000000000 +0200
-+++ linux-3.14.43/drivers/ata/libata-scsi.c 2015-07-11 20:47:22.570021716 +0200
-@@ -2510,11 +2513,15 @@
- rbuf[14] = (lowest_aligned >> 8) & 0x3f;
- rbuf[15] = lowest_aligned;
-
-- if (ata_id_has_trim(args->id)) {
-- rbuf[14] |= 0x80; /* TPE */
-
-- if (ata_id_has_zero_after_trim(args->id))
-- rbuf[14] |= 0x40; /* TPRZ */
-+
-+ if (!(dev->horkage & ATA_HORKAGE_NOTRIM)) {
-+ if (ata_id_has_trim(args->id)) {
-+ rbuf[14] |= 0x80; /* TPE */
-+
-+ if (ata_id_has_zero_after_trim(args->id))
-+ rbuf[14] |= 0x40; /* TPRZ */
-+ }
- }
- }
-
-diff -Naur linux-3.14.43.org/include/linux/libata.h linux-3.14.43/include/linux/libata.h
---- linux-3.14.43.org/include/linux/libata.h 2015-05-17 18:54:01.000000000 +0200
-+++ linux-3.14.43/include/linux/libata.h 2015-07-11 19:13:03.190682173 +0200
-@@ -421,6 +421,7 @@
- ATA_HORKAGE_NO_NCQ_TRIM = (1 << 19), /* don't use queued TRIM */
- ATA_HORKAGE_NOLPM = (1 << 20), /* don't use LPM */
- ATA_HORKAGE_WD_BROKEN_LPM = (1 << 21), /* some WDs have broken LPM */
-+ ATA_HORKAGE_NOTRIM = (1 << 22), /* don't use TRIM */
-
- /* DMA mask for user DMA control: User visible values; DO NOT
- renumber */
+++ /dev/null
-diff -Naur linux-3.14.43.org/drivers/ata/libata-core.c linux-3.14.43/drivers/ata/libata-core.c
---- linux-3.14.43.org/drivers/ata/libata-core.c 2015-07-13 17:58:28.126607225 +0200
-+++ linux-3.14.43/drivers/ata/libata-core.c 2015-07-13 18:06:07.430782102 +0200
-@@ -4225,9 +4225,11 @@
-
- /* devices that don't properly handle queued TRIM commands */
- { "Micron_M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
-- { "Crucial_CT???M500SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
-- { "Micron_M550*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
-- { "Crucial_CT*M550SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
-+ { "Crucial_CT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
-+ { "Micron_M5[15]0*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM, },
-+ { "Crucial_CT*M550*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM, },
-+ { "Crucial_CT*MX100*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM, },
-+ { "Samsung SSD 8*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
-
- /* devices that don't properly handle TRIM commands */
- { "SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM, },
+++ /dev/null
-diff -Naur linux-3.14.65.org/drivers/hwmon/k10temp.c linux-3.14.65/drivers/hwmon/k10temp.c
---- linux-3.14.65.org/drivers/hwmon/k10temp.c 2016-03-16 16:42:30.000000000 +0100
-+++ linux-3.14.65/drivers/hwmon/k10temp.c 2016-03-25 15:52:21.920190727 +0100
-@@ -212,6 +212,8 @@
- { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M10H_F3) },
- { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M30H_NB_F3) },
- { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) },
-+// { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F3) },
-+ { PCI_VDEVICE(AMD, 0x1583) },
- {}
- };
- MODULE_DEVICE_TABLE(pci, k10temp_id_table);
+++ /dev/null
-diff -Naur linux-3.14.77.org/net/ipv4/tcp_input.c linux-3.14.77/net/ipv4/tcp_input.c
---- linux-3.14.77.org/net/ipv4/tcp_input.c 2016-08-21 19:58:45.000000000 +0200
-+++ linux-3.14.77/net/ipv4/tcp_input.c 2016-08-21 21:11:24.336757369 +0200
-@@ -3299,12 +3299,12 @@
- u32 half = (sysctl_tcp_challenge_ack_limit + 1) >> 1;
-
- challenge_timestamp = now;
-- ACCESS_ONCE(challenge_count) = half +
-+ ACCESS_ONCE_RW(challenge_count) = half +
- prandom_u32_max(sysctl_tcp_challenge_ack_limit);
- }
- count = ACCESS_ONCE(challenge_count);
- if (count > 0) {
-- ACCESS_ONCE(challenge_count) = count - 1;
-+ ACCESS_ONCE_RW(challenge_count) = count - 1;
- NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPCHALLENGEACK);
- tcp_send_ack(sk);
- }
+++ /dev/null
-diff -Naur linux-3.14.79.org/drivers/mmc/core/mmc.c linux-3.14.79/drivers/mmc/core/mmc.c
---- linux-3.14.79.org/drivers/mmc/core/mmc.c 2016-09-11 10:00:18.000000000 +0200
-+++ linux-3.14.79/drivers/mmc/core/mmc.c 2017-01-19 18:15:07.940781595 +0100
-@@ -297,12 +297,6 @@
- }
-
- card->ext_csd.rev = ext_csd[EXT_CSD_REV];
-- if (card->ext_csd.rev > 7) {
-- pr_err("%s: unrecognised EXT_CSD revision %d\n",
-- mmc_hostname(card->host), card->ext_csd.rev);
-- err = -EINVAL;
-- goto out;
-- }
-
- card->ext_csd.raw_sectors[0] = ext_csd[EXT_CSD_SEC_CNT + 0];
- card->ext_csd.raw_sectors[1] = ext_csd[EXT_CSD_SEC_CNT + 1];
+++ /dev/null
-Patch by Arne Fitzenreiter <arne_f@ipfire.org>
-Fix PHYSDEVDRIVER from "Sundance IPG ..." to the modulname (ipg)
-
-diff -Naur linux-3.2.33.org/drivers/net/ethernet/icplus/ipg.c linux-3.2.33/drivers/net/ethernet/icplus/ipg.c
---- linux-3.2.33.org/drivers/net/ethernet/icplus/ipg.c 2012-10-31 00:27:11.000000000 +0100
-+++ linux-3.2.33/drivers/net/ethernet/icplus/ipg.c 2012-11-05 20:02:36.529101528 +0100
-@@ -2304,7 +2304,7 @@
- }
-
- static struct pci_driver ipg_pci_driver = {
-- .name = IPG_DRIVER_NAME,
-+ .name = DRV_NAME,
- .id_table = ipg_pci_tbl,
- .probe = ipg_probe,
- .remove = __devexit_p(ipg_remove),
+++ /dev/null
-No need to wrap vdso calls as gentoo does not use any version of
-glibc <=2.3.3
----
-From: Gordon Malm <gengor@gentoo.org>
-From: Kerin Millar <kerframil@gmail.com>
-From: Jory A. Pratt <anarchy@gentoo.org>
-
-COMPAT_VDSO is inappropriate for any modern Hardened Gentoo system. It
-conflicts with various parts of PaX, crashing the system if enabled
-while PaX's NOEXEC or UDEREF features are active. Moreover, it prevents
-a number of important PaX options from appearing in the configuration
-menu, including all PaX NOEXEC implementations. Unfortunately, the
-reason for the disappearance of these PaX configuration options is
-often far from obvious to inexperienced users.
-
-Therefore, we disable the COMPAT_VDSO menu entry entirely. However,
-COMPAT_VDSO operation can still be enabled via bootparam and sysctl
-interfaces. Consequently, we must also disable the ability to select
-COMPAT_VDSO operation at boot or runtime. Here we patch the kernel so
-that selecting COMPAT_VDSO operation at boot/runtime has no effect if
-conflicting PaX options are enabled, leaving VDSO_ENABLED operation
-intact.
-
-Closes bug: http://bugs.gentoo.org/show_bug.cgi?id=210138
-
-diff -urp a/arch/x86/Kconfig b/arch/x86/Kconfig
---- a/arch/x86/Kconfig 2009-07-31 01:36:57.323857684 +0100
-+++ b/arch/x86/Kconfig 2009-07-31 01:51:39.395749681 +0100
-@@ -1651,17 +1651,8 @@
-
- config COMPAT_VDSO
- def_bool n
-- prompt "Compat VDSO support"
- depends on X86_32 || IA32_EMULATION
- depends on !PAX_PAGEEXEC && !PAX_SEGMEXEC && !PAX_KERNEXEC && !PAX_MEMORY_UDEREF
-- ---help---
-- Map the 32-bit VDSO to the predictable old-style address too.
--
-- Say N here if you are running a sufficiently recent glibc
-- version (2.3.3 or later), to remove the high-mapped
-- VDSO mapping and to exclusively use the randomized VDSO.
--
-- If unsure, say Y.
-
- config CMDLINE_BOOL
- bool "Built-in kernel command line"
+++ /dev/null
-From dc53324060f324e8af6867f57bf4891c13c6ef18 Mon Sep 17 00:00:00 2001
-From: Jan Beulich <JBeulich@suse.com>
-Date: Thu, 3 Apr 2014 14:46:37 -0700
-Subject: genksyms: fix typeof() handling
-
-Recent increased use of typeof() throughout the tree resulted in a
-number of symbols (25 in a typical distro config of ours) not getting a
-proper CRC calculated for them anymore, due to the parser in genksyms
-not coping with several of these uses (interestingly in the majority of
-[if not all] cases the problem is due to the use of typeof() in code
-preceding a certain export, not in the declaration/definition of the
-exported function/object itself; I wasn't able to find a way to address
-this more general parser shortcoming).
-
-The use of parameter_declaration is a little more relaxed than would be
-ideal (permitting not just a bare type specification, but also one with
-identifier), but since the same code is being passed through an actual
-compiler, there's no apparent risk of allowing through any broken code.
-
-Otoh using parameter_declaration instead of the ad hoc
-"decl_specifier_seq '*'" / "decl_specifier_seq" pair allows all types to
-be handled rather than just plain ones and pointers to plain ones.
-
-Signed-off-by: Jan Beulich <jbeulich@suse.com>
-Cc: Michal Marek <mmarek@suse.cz>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
----
- scripts/genksyms/keywords.gperf | 5 +-
- scripts/genksyms/keywords.hash.c_shipped | 133 +++----
- scripts/genksyms/lex.l | 51 ++-
- scripts/genksyms/lex.lex.c_shipped | 51 ++-
- scripts/genksyms/parse.tab.c_shipped | 608 ++++++++++++++++---------------
- scripts/genksyms/parse.tab.h_shipped | 29 +-
- scripts/genksyms/parse.y | 5 +-
- 7 files changed, 498 insertions(+), 384 deletions(-)
-
-diff --git a/scripts/genksyms/keywords.gperf b/scripts/genksyms/keywords.gperf
-index 3e77a94..a9096d9 100644
---- a/scripts/genksyms/keywords.gperf
-+++ b/scripts/genksyms/keywords.gperf
-@@ -23,6 +23,8 @@ __inline, INLINE_KEYW
- __inline__, INLINE_KEYW
- __signed, SIGNED_KEYW
- __signed__, SIGNED_KEYW
-+__typeof, TYPEOF_KEYW
-+__typeof__, TYPEOF_KEYW
- __volatile, VOLATILE_KEYW
- __volatile__, VOLATILE_KEYW
- # According to rth, c99 defines _Bool, __restrict, __restrict__, restrict. KAO
-@@ -51,9 +53,8 @@ signed, SIGNED_KEYW
- static, STATIC_KEYW
- struct, STRUCT_KEYW
- typedef, TYPEDEF_KEYW
-+typeof, TYPEOF_KEYW
- union, UNION_KEYW
- unsigned, UNSIGNED_KEYW
- void, VOID_KEYW
- volatile, VOLATILE_KEYW
--typeof, TYPEOF_KEYW
--__typeof__, TYPEOF_KEYW
-diff --git a/scripts/genksyms/keywords.hash.c_shipped b/scripts/genksyms/keywords.hash.c_shipped
-index 8206260..e9452482 100644
---- a/scripts/genksyms/keywords.hash.c_shipped
-+++ b/scripts/genksyms/keywords.hash.c_shipped
-@@ -34,7 +34,7 @@ struct resword;
- static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
- #line 8 "scripts/genksyms/keywords.gperf"
- struct resword { const char *name; int token; };
--/* maximum key range = 64, duplicates = 0 */
-+/* maximum key range = 98, duplicates = 0 */
-
- #ifdef __GNUC__
- __inline
-@@ -48,32 +48,32 @@ is_reserved_hash (register const char *str, register unsigned int len)
- {
- static const unsigned char asso_values[] =
- {
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 0,
-- 67, 67, 67, 67, 67, 67, 15, 67, 67, 67,
-- 0, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 0, 67, 0, 67, 5,
-- 25, 20, 15, 30, 67, 15, 67, 67, 10, 0,
-- 10, 40, 20, 67, 10, 5, 0, 10, 15, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
-- 67, 67, 67, 67, 67, 67
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 0,
-+ 101, 101, 101, 101, 101, 101, 15, 101, 101, 101,
-+ 0, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 0, 101, 0, 101, 5,
-+ 25, 20, 55, 30, 101, 15, 101, 101, 10, 0,
-+ 10, 40, 10, 101, 10, 5, 0, 10, 15, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+ 101, 101, 101, 101, 101, 101
- };
- return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]];
- }
-@@ -89,17 +89,17 @@ is_reserved_word (register const char *str, register unsigned int len)
- {
- enum
- {
-- TOTAL_KEYWORDS = 45,
-+ TOTAL_KEYWORDS = 46,
- MIN_WORD_LENGTH = 3,
- MAX_WORD_LENGTH = 24,
- MIN_HASH_VALUE = 3,
-- MAX_HASH_VALUE = 66
-+ MAX_HASH_VALUE = 100
- };
-
- static const struct resword wordlist[] =
- {
- {""}, {""}, {""},
--#line 33 "scripts/genksyms/keywords.gperf"
-+#line 35 "scripts/genksyms/keywords.gperf"
- {"asm", ASM_KEYW},
- {""},
- #line 15 "scripts/genksyms/keywords.gperf"
-@@ -108,7 +108,7 @@ is_reserved_word (register const char *str, register unsigned int len)
- #line 16 "scripts/genksyms/keywords.gperf"
- {"__asm__", ASM_KEYW},
- {""}, {""},
--#line 59 "scripts/genksyms/keywords.gperf"
-+#line 27 "scripts/genksyms/keywords.gperf"
- {"__typeof__", TYPEOF_KEYW},
- {""},
- #line 19 "scripts/genksyms/keywords.gperf"
-@@ -119,31 +119,31 @@ is_reserved_word (register const char *str, register unsigned int len)
- {"__const__", CONST_KEYW},
- #line 25 "scripts/genksyms/keywords.gperf"
- {"__signed__", SIGNED_KEYW},
--#line 51 "scripts/genksyms/keywords.gperf"
-+#line 53 "scripts/genksyms/keywords.gperf"
- {"static", STATIC_KEYW},
- {""},
--#line 46 "scripts/genksyms/keywords.gperf"
-+#line 48 "scripts/genksyms/keywords.gperf"
- {"int", INT_KEYW},
--#line 39 "scripts/genksyms/keywords.gperf"
-+#line 41 "scripts/genksyms/keywords.gperf"
- {"char", CHAR_KEYW},
--#line 40 "scripts/genksyms/keywords.gperf"
-+#line 42 "scripts/genksyms/keywords.gperf"
- {"const", CONST_KEYW},
--#line 52 "scripts/genksyms/keywords.gperf"
-+#line 54 "scripts/genksyms/keywords.gperf"
- {"struct", STRUCT_KEYW},
--#line 31 "scripts/genksyms/keywords.gperf"
-+#line 33 "scripts/genksyms/keywords.gperf"
- {"__restrict__", RESTRICT_KEYW},
--#line 32 "scripts/genksyms/keywords.gperf"
-+#line 34 "scripts/genksyms/keywords.gperf"
- {"restrict", RESTRICT_KEYW},
- #line 12 "scripts/genksyms/keywords.gperf"
- {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW},
- #line 23 "scripts/genksyms/keywords.gperf"
- {"__inline__", INLINE_KEYW},
- {""},
--#line 27 "scripts/genksyms/keywords.gperf"
-+#line 29 "scripts/genksyms/keywords.gperf"
- {"__volatile__", VOLATILE_KEYW},
- #line 10 "scripts/genksyms/keywords.gperf"
- {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
--#line 30 "scripts/genksyms/keywords.gperf"
-+#line 32 "scripts/genksyms/keywords.gperf"
- {"_restrict", RESTRICT_KEYW},
- {""},
- #line 17 "scripts/genksyms/keywords.gperf"
-@@ -152,56 +152,65 @@ is_reserved_word (register const char *str, register unsigned int len)
- {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
- #line 21 "scripts/genksyms/keywords.gperf"
- {"__extension__", EXTENSION_KEYW},
--#line 42 "scripts/genksyms/keywords.gperf"
-+#line 44 "scripts/genksyms/keywords.gperf"
- {"enum", ENUM_KEYW},
- #line 13 "scripts/genksyms/keywords.gperf"
- {"EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW},
--#line 43 "scripts/genksyms/keywords.gperf"
-+#line 45 "scripts/genksyms/keywords.gperf"
- {"extern", EXTERN_KEYW},
- {""},
- #line 24 "scripts/genksyms/keywords.gperf"
- {"__signed", SIGNED_KEYW},
- #line 14 "scripts/genksyms/keywords.gperf"
- {"EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
--#line 54 "scripts/genksyms/keywords.gperf"
-+#line 57 "scripts/genksyms/keywords.gperf"
- {"union", UNION_KEYW},
--#line 58 "scripts/genksyms/keywords.gperf"
-- {"typeof", TYPEOF_KEYW},
--#line 53 "scripts/genksyms/keywords.gperf"
-- {"typedef", TYPEDEF_KEYW},
-+ {""}, {""},
- #line 22 "scripts/genksyms/keywords.gperf"
- {"__inline", INLINE_KEYW},
--#line 38 "scripts/genksyms/keywords.gperf"
-+#line 40 "scripts/genksyms/keywords.gperf"
- {"auto", AUTO_KEYW},
--#line 26 "scripts/genksyms/keywords.gperf"
-+#line 28 "scripts/genksyms/keywords.gperf"
- {"__volatile", VOLATILE_KEYW},
- {""}, {""},
--#line 55 "scripts/genksyms/keywords.gperf"
-+#line 58 "scripts/genksyms/keywords.gperf"
- {"unsigned", UNSIGNED_KEYW},
- {""},
--#line 49 "scripts/genksyms/keywords.gperf"
-+#line 51 "scripts/genksyms/keywords.gperf"
- {"short", SHORT_KEYW},
--#line 45 "scripts/genksyms/keywords.gperf"
-+#line 47 "scripts/genksyms/keywords.gperf"
- {"inline", INLINE_KEYW},
- {""},
--#line 57 "scripts/genksyms/keywords.gperf"
-+#line 60 "scripts/genksyms/keywords.gperf"
- {"volatile", VOLATILE_KEYW},
--#line 47 "scripts/genksyms/keywords.gperf"
-+#line 49 "scripts/genksyms/keywords.gperf"
- {"long", LONG_KEYW},
--#line 29 "scripts/genksyms/keywords.gperf"
-+#line 31 "scripts/genksyms/keywords.gperf"
- {"_Bool", BOOL_KEYW},
- {""}, {""},
--#line 48 "scripts/genksyms/keywords.gperf"
-+#line 50 "scripts/genksyms/keywords.gperf"
- {"register", REGISTER_KEYW},
--#line 56 "scripts/genksyms/keywords.gperf"
-+#line 59 "scripts/genksyms/keywords.gperf"
- {"void", VOID_KEYW},
--#line 44 "scripts/genksyms/keywords.gperf"
-- {"float", FLOAT_KEYW},
--#line 41 "scripts/genksyms/keywords.gperf"
-+ {""},
-+#line 43 "scripts/genksyms/keywords.gperf"
- {"double", DOUBLE_KEYW},
-+ {""},
-+#line 26 "scripts/genksyms/keywords.gperf"
-+ {"__typeof", TYPEOF_KEYW},
-+ {""}, {""},
-+#line 52 "scripts/genksyms/keywords.gperf"
-+ {"signed", SIGNED_KEYW},
- {""}, {""}, {""}, {""},
--#line 50 "scripts/genksyms/keywords.gperf"
-- {"signed", SIGNED_KEYW}
-+#line 56 "scripts/genksyms/keywords.gperf"
-+ {"typeof", TYPEOF_KEYW},
-+#line 55 "scripts/genksyms/keywords.gperf"
-+ {"typedef", TYPEDEF_KEYW},
-+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-+#line 46 "scripts/genksyms/keywords.gperf"
-+ {"float", FLOAT_KEYW}
- };
-
- if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
-diff --git a/scripts/genksyms/lex.l b/scripts/genksyms/lex.l
-index f770071..e583565 100644
---- a/scripts/genksyms/lex.l
-+++ b/scripts/genksyms/lex.l
-@@ -129,8 +129,9 @@ int
- yylex(void)
- {
- static enum {
-- ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_BRACKET, ST_BRACE,
-- ST_EXPRESSION, ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
-+ ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_TYPEOF, ST_TYPEOF_1,
-+ ST_BRACKET, ST_BRACE, ST_EXPRESSION,
-+ ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
- ST_TABLE_5, ST_TABLE_6
- } lexstate = ST_NOTSTARTED;
-
-@@ -198,6 +199,10 @@ repeat:
- lexstate = ST_ASM;
- count = 0;
- goto repeat;
-+ case TYPEOF_KEYW:
-+ lexstate = ST_TYPEOF;
-+ count = 0;
-+ goto repeat;
-
- case STRUCT_KEYW:
- case UNION_KEYW:
-@@ -284,6 +289,48 @@ repeat:
- }
- break;
-
-+ case ST_TYPEOF:
-+ switch (token)
-+ {
-+ case '(':
-+ if ( ++count == 1 )
-+ lexstate = ST_TYPEOF_1;
-+ else
-+ APP;
-+ goto repeat;
-+ case ')':
-+ APP;
-+ if (--count == 0)
-+ {
-+ lexstate = ST_NORMAL;
-+ token = TYPEOF_PHRASE;
-+ break;
-+ }
-+ goto repeat;
-+ default:
-+ APP;
-+ goto repeat;
-+ }
-+ break;
-+
-+ case ST_TYPEOF_1:
-+ if (token == IDENT)
-+ {
-+ if (is_reserved_word(yytext, yyleng)
-+ || find_symbol(yytext, SYM_TYPEDEF, 1))
-+ {
-+ yyless(0);
-+ unput('(');
-+ lexstate = ST_NORMAL;
-+ token = TYPEOF_KEYW;
-+ break;
-+ }
-+ _APP("(", 1);
-+ }
-+ APP;
-+ lexstate = ST_TYPEOF;
-+ goto repeat;
-+
- case ST_BRACKET:
- APP;
- switch (token)
-diff --git a/scripts/genksyms/lex.lex.c_shipped b/scripts/genksyms/lex.lex.c_shipped
-index 0bf4157..f82740a 100644
---- a/scripts/genksyms/lex.lex.c_shipped
-+++ b/scripts/genksyms/lex.lex.c_shipped
-@@ -1938,8 +1938,9 @@ int
- yylex(void)
- {
- static enum {
-- ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_BRACKET, ST_BRACE,
-- ST_EXPRESSION, ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
-+ ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_TYPEOF, ST_TYPEOF_1,
-+ ST_BRACKET, ST_BRACE, ST_EXPRESSION,
-+ ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
- ST_TABLE_5, ST_TABLE_6
- } lexstate = ST_NOTSTARTED;
-
-@@ -2007,6 +2008,10 @@ repeat:
- lexstate = ST_ASM;
- count = 0;
- goto repeat;
-+ case TYPEOF_KEYW:
-+ lexstate = ST_TYPEOF;
-+ count = 0;
-+ goto repeat;
-
- case STRUCT_KEYW:
- case UNION_KEYW:
-@@ -2093,6 +2098,48 @@ repeat:
- }
- break;
-
-+ case ST_TYPEOF:
-+ switch (token)
-+ {
-+ case '(':
-+ if ( ++count == 1 )
-+ lexstate = ST_TYPEOF_1;
-+ else
-+ APP;
-+ goto repeat;
-+ case ')':
-+ APP;
-+ if (--count == 0)
-+ {
-+ lexstate = ST_NORMAL;
-+ token = TYPEOF_PHRASE;
-+ break;
-+ }
-+ goto repeat;
-+ default:
-+ APP;
-+ goto repeat;
-+ }
-+ break;
-+
-+ case ST_TYPEOF_1:
-+ if (token == IDENT)
-+ {
-+ if (is_reserved_word(yytext, yyleng)
-+ || find_symbol(yytext, SYM_TYPEDEF, 1))
-+ {
-+ yyless(0);
-+ unput('(');
-+ lexstate = ST_NORMAL;
-+ token = TYPEOF_KEYW;
-+ break;
-+ }
-+ _APP("(", 1);
-+ }
-+ APP;
-+ lexstate = ST_TYPEOF;
-+ goto repeat;
-+
- case ST_BRACKET:
- APP;
- switch (token)
-diff --git a/scripts/genksyms/parse.tab.c_shipped b/scripts/genksyms/parse.tab.c_shipped
-index ece53c7..c9f0f0ce 100644
---- a/scripts/genksyms/parse.tab.c_shipped
-+++ b/scripts/genksyms/parse.tab.c_shipped
-@@ -1,8 +1,8 @@
--/* A Bison parser, made by GNU Bison 2.5. */
-+/* A Bison parser, made by GNU Bison 2.5.1. */
-
- /* Bison implementation for Yacc-like parsers in C
-
-- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
-+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
-@@ -44,7 +44,7 @@
- #define YYBISON 1
-
- /* Bison version. */
--#define YYBISON_VERSION "2.5"
-+#define YYBISON_VERSION "2.5.1"
-
- /* Skeleton name. */
- #define YYSKELETON_NAME "yacc.c"
-@@ -117,6 +117,14 @@ static void record_compound(struct string_list **keyw,
-
-
-
-+# ifndef YY_NULL
-+# if defined __cplusplus && 201103L <= __cplusplus
-+# define YY_NULL nullptr
-+# else
-+# define YY_NULL 0
-+# endif
-+# endif
-+
- /* Enabling traces. */
- #ifndef YYDEBUG
- # define YYDEBUG 1
-@@ -171,18 +179,19 @@ static void record_compound(struct string_list **keyw,
- EXPORT_SYMBOL_KEYW = 284,
- ASM_PHRASE = 285,
- ATTRIBUTE_PHRASE = 286,
-- BRACE_PHRASE = 287,
-- BRACKET_PHRASE = 288,
-- EXPRESSION_PHRASE = 289,
-- CHAR = 290,
-- DOTS = 291,
-- IDENT = 292,
-- INT = 293,
-- REAL = 294,
-- STRING = 295,
-- TYPE = 296,
-- OTHER = 297,
-- FILENAME = 298
-+ TYPEOF_PHRASE = 287,
-+ BRACE_PHRASE = 288,
-+ BRACKET_PHRASE = 289,
-+ EXPRESSION_PHRASE = 290,
-+ CHAR = 291,
-+ DOTS = 292,
-+ IDENT = 293,
-+ INT = 294,
-+ REAL = 295,
-+ STRING = 296,
-+ TYPE = 297,
-+ OTHER = 298,
-+ FILENAME = 299
- };
- #endif
-
-@@ -304,6 +313,7 @@ YYID (yyi)
- # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
- # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
- # ifndef EXIT_SUCCESS
- # define EXIT_SUCCESS 0
- # endif
-@@ -395,20 +405,20 @@ union yyalloc
- #endif
-
- #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
--/* Copy COUNT objects from FROM to TO. The source and destination do
-+/* Copy COUNT objects from SRC to DST. The source and destination do
- not overlap. */
- # ifndef YYCOPY
- # if defined __GNUC__ && 1 < __GNUC__
--# define YYCOPY(To, From, Count) \
-- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-+# define YYCOPY(Dst, Src, Count) \
-+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
- # else
--# define YYCOPY(To, From, Count) \
-- do \
-- { \
-- YYSIZE_T yyi; \
-- for (yyi = 0; yyi < (Count); yyi++) \
-- (To)[yyi] = (From)[yyi]; \
-- } \
-+# define YYCOPY(Dst, Src, Count) \
-+ do \
-+ { \
-+ YYSIZE_T yyi; \
-+ for (yyi = 0; yyi < (Count); yyi++) \
-+ (Dst)[yyi] = (Src)[yyi]; \
-+ } \
- while (YYID (0))
- # endif
- # endif
-@@ -417,20 +427,20 @@ union yyalloc
- /* YYFINAL -- State number of the termination state. */
- #define YYFINAL 4
- /* YYLAST -- Last index in YYTABLE. */
--#define YYLAST 532
-+#define YYLAST 514
-
- /* YYNTOKENS -- Number of terminals. */
--#define YYNTOKENS 53
-+#define YYNTOKENS 54
- /* YYNNTS -- Number of nonterminals. */
- #define YYNNTS 49
- /* YYNRULES -- Number of rules. */
- #define YYNRULES 132
- /* YYNRULES -- Number of states. */
--#define YYNSTATES 188
-+#define YYNSTATES 187
-
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
- #define YYUNDEFTOK 2
--#define YYMAXUTOK 298
-+#define YYMAXUTOK 299
-
- #define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-@@ -442,15 +452,15 @@ static const yytype_uint8 yytranslate[] =
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-- 47, 49, 48, 2, 46, 2, 2, 2, 2, 2,
-- 2, 2, 2, 2, 2, 2, 2, 2, 52, 44,
-- 2, 50, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 48, 49, 50, 2, 47, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 53, 45,
-+ 2, 51, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-- 2, 2, 2, 51, 2, 45, 2, 2, 2, 2,
-+ 2, 2, 2, 52, 2, 46, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-@@ -467,7 +477,7 @@ static const yytype_uint8 yytranslate[] =
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
-- 35, 36, 37, 38, 39, 40, 41, 42, 43
-+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44
- };
-
- #if YYDEBUG
-@@ -478,78 +488,77 @@ static const yytype_uint16 yyprhs[] =
- 0, 0, 3, 5, 8, 9, 12, 13, 18, 19,
- 23, 25, 27, 29, 31, 34, 37, 41, 42, 44,
- 46, 50, 55, 56, 58, 60, 63, 65, 67, 69,
-- 71, 73, 75, 77, 79, 81, 87, 92, 95, 98,
-- 101, 105, 109, 113, 116, 119, 122, 124, 126, 128,
-- 130, 132, 134, 136, 138, 140, 142, 144, 147, 148,
-- 150, 152, 155, 157, 159, 161, 163, 166, 168, 170,
-- 175, 180, 183, 187, 191, 194, 196, 198, 200, 205,
-- 210, 213, 217, 221, 224, 226, 230, 231, 233, 235,
-- 239, 242, 245, 247, 248, 250, 252, 257, 262, 265,
-- 269, 273, 277, 278, 280, 283, 287, 291, 292, 294,
-- 296, 299, 303, 306, 307, 309, 311, 315, 318, 321,
-- 323, 326, 327, 330, 334, 339, 341, 345, 347, 351,
-- 354, 355, 357
-+ 71, 73, 75, 77, 79, 81, 86, 88, 91, 94,
-+ 97, 101, 105, 109, 112, 115, 118, 120, 122, 124,
-+ 126, 128, 130, 132, 134, 136, 138, 140, 143, 144,
-+ 146, 148, 151, 153, 155, 157, 159, 162, 164, 166,
-+ 171, 176, 179, 183, 187, 190, 192, 194, 196, 201,
-+ 206, 209, 213, 217, 220, 222, 226, 227, 229, 231,
-+ 235, 238, 241, 243, 244, 246, 248, 253, 258, 261,
-+ 265, 269, 273, 274, 276, 279, 283, 287, 288, 290,
-+ 292, 295, 299, 302, 303, 305, 307, 311, 314, 317,
-+ 319, 322, 323, 326, 330, 335, 337, 341, 343, 347,
-+ 350, 351, 353
- };
-
- /* YYRHS -- A `-1'-separated list of the rules' RHS. */
- static const yytype_int8 yyrhs[] =
- {
-- 54, 0, -1, 55, -1, 54, 55, -1, -1, 56,
-- 57, -1, -1, 12, 23, 58, 60, -1, -1, 23,
-- 59, 60, -1, 60, -1, 84, -1, 99, -1, 101,
-- -1, 1, 44, -1, 1, 45, -1, 64, 61, 44,
-- -1, -1, 62, -1, 63, -1, 62, 46, 63, -1,
-- 74, 100, 95, 85, -1, -1, 65, -1, 66, -1,
-- 65, 66, -1, 67, -1, 68, -1, 5, -1, 17,
-- -1, 21, -1, 11, -1, 14, -1, 69, -1, 73,
-- -1, 28, 47, 65, 48, 49, -1, 28, 47, 65,
-- 49, -1, 22, 37, -1, 24, 37, -1, 10, 37,
-- -1, 22, 37, 87, -1, 24, 37, 87, -1, 10,
-- 37, 96, -1, 10, 96, -1, 22, 87, -1, 24,
-- 87, -1, 7, -1, 19, -1, 15, -1, 16, -1,
-- 20, -1, 25, -1, 13, -1, 9, -1, 26, -1,
-- 6, -1, 41, -1, 48, 71, -1, -1, 72, -1,
-- 73, -1, 72, 73, -1, 8, -1, 27, -1, 31,
-- -1, 18, -1, 70, 74, -1, 75, -1, 37, -1,
-- 75, 47, 78, 49, -1, 75, 47, 1, 49, -1,
-- 75, 33, -1, 47, 74, 49, -1, 47, 1, 49,
-- -1, 70, 76, -1, 77, -1, 37, -1, 41, -1,
-- 77, 47, 78, 49, -1, 77, 47, 1, 49, -1,
-- 77, 33, -1, 47, 76, 49, -1, 47, 1, 49,
-- -1, 79, 36, -1, 79, -1, 80, 46, 36, -1,
-- -1, 80, -1, 81, -1, 80, 46, 81, -1, 65,
-- 82, -1, 70, 82, -1, 83, -1, -1, 37, -1,
-- 41, -1, 83, 47, 78, 49, -1, 83, 47, 1,
-- 49, -1, 83, 33, -1, 47, 82, 49, -1, 47,
-- 1, 49, -1, 64, 74, 32, -1, -1, 86, -1,
-- 50, 34, -1, 51, 88, 45, -1, 51, 1, 45,
-- -1, -1, 89, -1, 90, -1, 89, 90, -1, 64,
-- 91, 44, -1, 1, 44, -1, -1, 92, -1, 93,
-- -1, 92, 46, 93, -1, 76, 95, -1, 37, 94,
-- -1, 94, -1, 52, 34, -1, -1, 95, 31, -1,
-- 51, 97, 45, -1, 51, 97, 46, 45, -1, 98,
-- -1, 97, 46, 98, -1, 37, -1, 37, 50, 34,
-- -1, 30, 44, -1, -1, 30, -1, 29, 47, 37,
-- 49, 44, -1
-+ 55, 0, -1, 56, -1, 55, 56, -1, -1, 57,
-+ 58, -1, -1, 12, 23, 59, 61, -1, -1, 23,
-+ 60, 61, -1, 61, -1, 85, -1, 100, -1, 102,
-+ -1, 1, 45, -1, 1, 46, -1, 65, 62, 45,
-+ -1, -1, 63, -1, 64, -1, 63, 47, 64, -1,
-+ 75, 101, 96, 86, -1, -1, 66, -1, 67, -1,
-+ 66, 67, -1, 68, -1, 69, -1, 5, -1, 17,
-+ -1, 21, -1, 11, -1, 14, -1, 70, -1, 74,
-+ -1, 28, 48, 82, 49, -1, 32, -1, 22, 38,
-+ -1, 24, 38, -1, 10, 38, -1, 22, 38, 88,
-+ -1, 24, 38, 88, -1, 10, 38, 97, -1, 10,
-+ 97, -1, 22, 88, -1, 24, 88, -1, 7, -1,
-+ 19, -1, 15, -1, 16, -1, 20, -1, 25, -1,
-+ 13, -1, 9, -1, 26, -1, 6, -1, 42, -1,
-+ 50, 72, -1, -1, 73, -1, 74, -1, 73, 74,
-+ -1, 8, -1, 27, -1, 31, -1, 18, -1, 71,
-+ 75, -1, 76, -1, 38, -1, 76, 48, 79, 49,
-+ -1, 76, 48, 1, 49, -1, 76, 34, -1, 48,
-+ 75, 49, -1, 48, 1, 49, -1, 71, 77, -1,
-+ 78, -1, 38, -1, 42, -1, 78, 48, 79, 49,
-+ -1, 78, 48, 1, 49, -1, 78, 34, -1, 48,
-+ 77, 49, -1, 48, 1, 49, -1, 80, 37, -1,
-+ 80, -1, 81, 47, 37, -1, -1, 81, -1, 82,
-+ -1, 81, 47, 82, -1, 66, 83, -1, 71, 83,
-+ -1, 84, -1, -1, 38, -1, 42, -1, 84, 48,
-+ 79, 49, -1, 84, 48, 1, 49, -1, 84, 34,
-+ -1, 48, 83, 49, -1, 48, 1, 49, -1, 65,
-+ 75, 33, -1, -1, 87, -1, 51, 35, -1, 52,
-+ 89, 46, -1, 52, 1, 46, -1, -1, 90, -1,
-+ 91, -1, 90, 91, -1, 65, 92, 45, -1, 1,
-+ 45, -1, -1, 93, -1, 94, -1, 93, 47, 94,
-+ -1, 77, 96, -1, 38, 95, -1, 95, -1, 53,
-+ 35, -1, -1, 96, 31, -1, 52, 98, 46, -1,
-+ 52, 98, 47, 46, -1, 99, -1, 98, 47, 99,
-+ -1, 38, -1, 38, 51, 35, -1, 30, 45, -1,
-+ -1, 30, -1, 29, 48, 38, 49, 45, -1
- };
-
- /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
- static const yytype_uint16 yyrline[] =
- {
-- 0, 123, 123, 124, 128, 128, 134, 134, 136, 136,
-- 138, 139, 140, 141, 142, 143, 147, 161, 162, 166,
-- 174, 187, 193, 194, 198, 199, 203, 209, 213, 214,
-- 215, 216, 217, 221, 222, 223, 224, 228, 230, 232,
-- 236, 238, 240, 245, 248, 249, 253, 254, 255, 256,
-- 257, 258, 259, 260, 261, 262, 263, 267, 272, 273,
-- 277, 278, 282, 282, 282, 283, 291, 292, 296, 305,
-- 307, 309, 311, 313, 320, 321, 325, 326, 327, 329,
-- 331, 333, 335, 340, 341, 342, 346, 347, 351, 352,
-- 357, 362, 364, 368, 369, 377, 381, 383, 385, 387,
-- 389, 394, 403, 404, 409, 414, 415, 419, 420, 424,
-- 425, 429, 431, 436, 437, 441, 442, 446, 447, 448,
-- 452, 456, 457, 461, 462, 466, 467, 470, 475, 483,
-- 487, 488, 492
-+ 0, 124, 124, 125, 129, 129, 135, 135, 137, 137,
-+ 139, 140, 141, 142, 143, 144, 148, 162, 163, 167,
-+ 175, 188, 194, 195, 199, 200, 204, 210, 214, 215,
-+ 216, 217, 218, 222, 223, 224, 225, 229, 231, 233,
-+ 237, 239, 241, 246, 249, 250, 254, 255, 256, 257,
-+ 258, 259, 260, 261, 262, 263, 264, 268, 273, 274,
-+ 278, 279, 283, 283, 283, 284, 292, 293, 297, 306,
-+ 308, 310, 312, 314, 321, 322, 326, 327, 328, 330,
-+ 332, 334, 336, 341, 342, 343, 347, 348, 352, 353,
-+ 358, 363, 365, 369, 370, 378, 382, 384, 386, 388,
-+ 390, 395, 404, 405, 410, 415, 416, 420, 421, 425,
-+ 426, 430, 432, 437, 438, 442, 443, 447, 448, 449,
-+ 453, 457, 458, 462, 463, 467, 468, 471, 476, 484,
-+ 488, 489, 493
- };
- #endif
-
-@@ -565,9 +574,9 @@ static const char *const yytname[] =
- "SHORT_KEYW", "SIGNED_KEYW", "STATIC_KEYW", "STRUCT_KEYW",
- "TYPEDEF_KEYW", "UNION_KEYW", "UNSIGNED_KEYW", "VOID_KEYW",
- "VOLATILE_KEYW", "TYPEOF_KEYW", "EXPORT_SYMBOL_KEYW", "ASM_PHRASE",
-- "ATTRIBUTE_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE",
-+ "ATTRIBUTE_PHRASE", "TYPEOF_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE",
- "EXPRESSION_PHRASE", "CHAR", "DOTS", "IDENT", "INT", "REAL", "STRING",
-- "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "'*'", "')'",
-+ "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "')'", "'*'",
- "'='", "'{'", "':'", "$accept", "declaration_seq", "declaration", "$@1",
- "declaration1", "$@2", "$@3", "simple_declaration",
- "init_declarator_list_opt", "init_declarator_list", "init_declarator",
-@@ -584,7 +593,7 @@ static const char *const yytname[] =
- "member_declarator_list_opt", "member_declarator_list",
- "member_declarator", "member_bitfield_declarator", "attribute_opt",
- "enum_body", "enumerator_list", "enumerator", "asm_definition",
-- "asm_phrase_opt", "export_definition", 0
-+ "asm_phrase_opt", "export_definition", YY_NULL
- };
- #endif
-
-@@ -597,28 +606,28 @@ static const yytype_uint16 yytoknum[] =
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
-- 295, 296, 297, 298, 59, 125, 44, 40, 42, 41,
-- 61, 123, 58
-+ 295, 296, 297, 298, 299, 59, 125, 44, 40, 41,
-+ 42, 61, 123, 58
- };
- # endif
-
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
- static const yytype_uint8 yyr1[] =
- {
-- 0, 53, 54, 54, 56, 55, 58, 57, 59, 57,
-- 57, 57, 57, 57, 57, 57, 60, 61, 61, 62,
-- 62, 63, 64, 64, 65, 65, 66, 66, 67, 67,
-- 67, 67, 67, 68, 68, 68, 68, 68, 68, 68,
-- 68, 68, 68, 68, 68, 68, 69, 69, 69, 69,
-- 69, 69, 69, 69, 69, 69, 69, 70, 71, 71,
-- 72, 72, 73, 73, 73, 73, 74, 74, 75, 75,
-- 75, 75, 75, 75, 76, 76, 77, 77, 77, 77,
-- 77, 77, 77, 78, 78, 78, 79, 79, 80, 80,
-- 81, 82, 82, 83, 83, 83, 83, 83, 83, 83,
-- 83, 84, 85, 85, 86, 87, 87, 88, 88, 89,
-- 89, 90, 90, 91, 91, 92, 92, 93, 93, 93,
-- 94, 95, 95, 96, 96, 97, 97, 98, 98, 99,
-- 100, 100, 101
-+ 0, 54, 55, 55, 57, 56, 59, 58, 60, 58,
-+ 58, 58, 58, 58, 58, 58, 61, 62, 62, 63,
-+ 63, 64, 65, 65, 66, 66, 67, 67, 68, 68,
-+ 68, 68, 68, 69, 69, 69, 69, 69, 69, 69,
-+ 69, 69, 69, 69, 69, 69, 70, 70, 70, 70,
-+ 70, 70, 70, 70, 70, 70, 70, 71, 72, 72,
-+ 73, 73, 74, 74, 74, 74, 75, 75, 76, 76,
-+ 76, 76, 76, 76, 77, 77, 78, 78, 78, 78,
-+ 78, 78, 78, 79, 79, 79, 80, 80, 81, 81,
-+ 82, 83, 83, 84, 84, 84, 84, 84, 84, 84,
-+ 84, 85, 86, 86, 87, 88, 88, 89, 89, 90,
-+ 90, 91, 91, 92, 92, 93, 93, 94, 94, 94,
-+ 95, 96, 96, 97, 97, 98, 98, 99, 99, 100,
-+ 101, 101, 102
- };
-
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-@@ -627,7 +636,7 @@ static const yytype_uint8 yyr2[] =
- 0, 2, 1, 2, 0, 2, 0, 4, 0, 3,
- 1, 1, 1, 1, 2, 2, 3, 0, 1, 1,
- 3, 4, 0, 1, 1, 2, 1, 1, 1, 1,
-- 1, 1, 1, 1, 1, 5, 4, 2, 2, 2,
-+ 1, 1, 1, 1, 1, 4, 1, 2, 2, 2,
- 3, 3, 3, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 2, 0, 1,
- 1, 2, 1, 1, 1, 1, 2, 1, 1, 4,
-@@ -648,68 +657,68 @@ static const yytype_uint8 yydefact[] =
- 4, 4, 2, 0, 1, 3, 0, 28, 55, 46,
- 62, 53, 0, 31, 0, 52, 32, 48, 49, 29,
- 65, 47, 50, 30, 0, 8, 0, 51, 54, 63,
-- 0, 0, 0, 64, 56, 5, 10, 17, 23, 24,
-- 26, 27, 33, 34, 11, 12, 13, 14, 15, 39,
-- 0, 43, 6, 37, 0, 44, 22, 38, 45, 0,
-- 0, 129, 68, 0, 58, 0, 18, 19, 0, 130,
-- 67, 25, 42, 127, 0, 125, 22, 40, 0, 113,
-- 0, 0, 109, 9, 17, 41, 0, 0, 0, 0,
-- 57, 59, 60, 16, 0, 66, 131, 101, 121, 71,
-- 0, 0, 123, 0, 7, 112, 106, 76, 77, 0,
-- 0, 0, 121, 75, 0, 114, 115, 119, 105, 0,
-- 110, 130, 0, 36, 0, 73, 72, 61, 20, 102,
-- 0, 93, 0, 84, 87, 88, 128, 124, 126, 118,
-- 0, 76, 0, 120, 74, 117, 80, 0, 111, 0,
-- 35, 132, 122, 0, 21, 103, 70, 94, 56, 0,
-- 93, 90, 92, 69, 83, 0, 82, 81, 0, 0,
-- 116, 104, 0, 95, 0, 91, 98, 0, 85, 89,
-- 79, 78, 100, 99, 0, 0, 97, 96
-+ 0, 0, 0, 64, 36, 56, 5, 10, 17, 23,
-+ 24, 26, 27, 33, 34, 11, 12, 13, 14, 15,
-+ 39, 0, 43, 6, 37, 0, 44, 22, 38, 45,
-+ 0, 0, 129, 68, 0, 58, 0, 18, 19, 0,
-+ 130, 67, 25, 42, 127, 0, 125, 22, 40, 0,
-+ 113, 0, 0, 109, 9, 17, 41, 93, 0, 0,
-+ 0, 0, 57, 59, 60, 16, 0, 66, 131, 101,
-+ 121, 71, 0, 0, 123, 0, 7, 112, 106, 76,
-+ 77, 0, 0, 0, 121, 75, 0, 114, 115, 119,
-+ 105, 0, 110, 130, 94, 56, 0, 93, 90, 92,
-+ 35, 0, 73, 72, 61, 20, 102, 0, 0, 84,
-+ 87, 88, 128, 124, 126, 118, 0, 76, 0, 120,
-+ 74, 117, 80, 0, 111, 0, 0, 95, 0, 91,
-+ 98, 0, 132, 122, 0, 21, 103, 70, 69, 83,
-+ 0, 82, 81, 0, 0, 116, 100, 99, 0, 0,
-+ 104, 85, 89, 79, 78, 97, 96
- };
-
- /* YYDEFGOTO[NTERM-NUM]. */
- static const yytype_int16 yydefgoto[] =
- {
-- -1, 1, 2, 3, 35, 76, 56, 36, 65, 66,
-- 67, 79, 38, 39, 40, 41, 42, 68, 90, 91,
-- 43, 121, 70, 112, 113, 132, 133, 134, 135, 161,
-- 162, 44, 154, 155, 55, 80, 81, 82, 114, 115,
-- 116, 117, 129, 51, 74, 75, 45, 98, 46
-+ -1, 1, 2, 3, 36, 77, 57, 37, 66, 67,
-+ 68, 80, 39, 40, 41, 42, 43, 69, 92, 93,
-+ 44, 123, 71, 114, 115, 138, 139, 140, 141, 128,
-+ 129, 45, 165, 166, 56, 81, 82, 83, 116, 117,
-+ 118, 119, 136, 52, 75, 76, 46, 100, 47
- };
-
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
--#define YYPACT_NINF -135
-+#define YYPACT_NINF -140
- static const yytype_int16 yypact[] =
- {
-- -135, 20, -135, 321, -135, -135, 30, -135, -135, -135,
-- -135, -135, -28, -135, 2, -135, -135, -135, -135, -135,
-- -135, -135, -135, -135, -6, -135, 9, -135, -135, -135,
-- -5, 15, -17, -135, -135, -135, -135, 18, 491, -135,
-- -135, -135, -135, -135, -135, -135, -135, -135, -135, -22,
-- 31, -135, -135, 19, 106, -135, 491, 19, -135, 491,
-- 50, -135, -135, 11, -3, 51, 57, -135, 18, -14,
-- 14, -135, -135, 48, 46, -135, 491, -135, 33, 32,
-- 59, 154, -135, -135, 18, -135, 365, 56, 60, 61,
-- -135, -3, -135, -135, 18, -135, -135, -135, -135, -135,
-- 202, 74, -135, -23, -135, -135, -135, 77, -135, 16,
-- 101, 49, -135, 34, 92, 93, -135, -135, -135, 94,
-- -135, 110, 95, -135, 97, -135, -135, -135, -135, -20,
-- 96, 410, 99, 113, 100, -135, -135, -135, -135, -135,
-- 103, -135, 107, -135, -135, 111, -135, 239, -135, 32,
-- -135, -135, -135, 123, -135, -135, -135, -135, -135, 3,
-- 52, -135, 38, -135, -135, 454, -135, -135, 117, 128,
-- -135, -135, 134, -135, 135, -135, -135, 276, -135, -135,
-- -135, -135, -135, -135, 137, 138, -135, -135
-+ -140, 29, -140, 207, -140, -140, 40, -140, -140, -140,
-+ -140, -140, -27, -140, 44, -140, -140, -140, -140, -140,
-+ -140, -140, -140, -140, -22, -140, -18, -140, -140, -140,
-+ -9, 22, 28, -140, -140, -140, -140, -140, 42, 472,
-+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
-+ 46, 43, -140, -140, 47, 107, -140, 472, 47, -140,
-+ 472, 62, -140, -140, 16, -3, 57, 56, -140, 42,
-+ 35, -11, -140, -140, 53, 48, -140, 472, -140, 51,
-+ 21, 59, 157, -140, -140, 42, -140, 388, 58, 60,
-+ 70, 81, -140, -3, -140, -140, 42, -140, -140, -140,
-+ -140, -140, 253, 71, -140, -20, -140, -140, -140, 83,
-+ -140, 5, 102, 34, -140, 12, 95, 94, -140, -140,
-+ -140, 97, -140, 113, -140, -140, 2, 41, -140, 27,
-+ -140, 99, -140, -140, -140, -140, -24, 98, 101, 109,
-+ 104, -140, -140, -140, -140, -140, 105, -140, 110, -140,
-+ -140, 117, -140, 298, -140, 21, 112, -140, 120, -140,
-+ -140, 343, -140, -140, 121, -140, -140, -140, -140, -140,
-+ 434, -140, -140, 131, 137, -140, -140, -140, 138, 141,
-+ -140, -140, -140, -140, -140, -140, -140
- };
-
- /* YYPGOTO[NTERM-NUM]. */
- static const yytype_int16 yypgoto[] =
- {
-- -135, -135, 187, -135, -135, -135, -135, -50, -135, -135,
-- 98, 0, -59, -37, -135, -135, -135, -77, -135, -135,
-- -54, -30, -135, -90, -135, -134, -135, -135, 24, -58,
-- -135, -135, -135, -135, -18, -135, -135, 109, -135, -135,
-- 44, 87, 84, 148, -135, 102, -135, -135, -135
-+ -140, -140, 190, -140, -140, -140, -140, -45, -140, -140,
-+ 96, 1, -60, -31, -140, -140, -140, -78, -140, -140,
-+ -55, -7, -140, -92, -140, -139, -140, -140, -59, -39,
-+ -140, -140, -140, -140, -13, -140, -140, 111, -140, -140,
-+ 39, 87, 84, 147, -140, 106, -140, -140, -140
- };
-
- /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
-@@ -718,149 +727,145 @@ static const yytype_int16 yypgoto[] =
- #define YYTABLE_NINF -109
- static const yytype_int16 yytable[] =
- {
-- 86, 71, 111, 37, 172, 10, 83, 69, 58, 49,
-- 92, 152, 88, 169, 73, 20, 96, 140, 97, 142,
-- 4, 144, 137, 50, 29, 52, 104, 61, 33, 50,
-- 153, 53, 111, 89, 111, 77, -93, 127, 95, 85,
-- 157, 131, 59, 185, 173, 54, 57, 99, 62, 71,
-- 159, 64, -93, 141, 160, 62, 84, 108, 63, 64,
-- 54, 100, 60, 109, 64, 63, 64, 146, 73, 107,
-- 54, 176, 111, 108, 47, 48, 84, 105, 106, 109,
-- 64, 147, 160, 160, 110, 177, 141, 87, 131, 157,
-- 108, 102, 103, 173, 71, 93, 109, 64, 101, 159,
-- 64, 174, 175, 94, 118, 124, 131, 78, 136, 125,
-- 126, 7, 8, 9, 10, 11, 12, 13, 131, 15,
-- 16, 17, 18, 19, 20, 21, 22, 23, 24, 110,
-- 26, 27, 28, 29, 30, 143, 148, 33, 105, 149,
-- 96, 151, 152, -22, 150, 156, 165, 34, 163, 164,
-- -22, -107, 166, -22, -22, 119, 167, 171, -22, 7,
-- 8, 9, 10, 11, 12, 13, 180, 15, 16, 17,
-- 18, 19, 20, 21, 22, 23, 24, 181, 26, 27,
-- 28, 29, 30, 182, 183, 33, 186, 187, 5, 179,
-- 120, -22, 128, 170, 139, 34, 145, 72, -22, -108,
-- 0, -22, -22, 130, 0, 138, -22, 7, 8, 9,
-- 10, 11, 12, 13, 0, 15, 16, 17, 18, 19,
-- 20, 21, 22, 23, 24, 0, 26, 27, 28, 29,
-- 30, 0, 0, 33, 0, 0, 0, 0, -86, 0,
-- 168, 0, 0, 34, 7, 8, 9, 10, 11, 12,
-- 13, -86, 15, 16, 17, 18, 19, 20, 21, 22,
-- 23, 24, 0, 26, 27, 28, 29, 30, 0, 0,
-- 33, 0, 0, 0, 0, -86, 0, 184, 0, 0,
-- 34, 7, 8, 9, 10, 11, 12, 13, -86, 15,
-- 16, 17, 18, 19, 20, 21, 22, 23, 24, 0,
-- 26, 27, 28, 29, 30, 0, 0, 33, 0, 0,
-- 0, 0, -86, 0, 0, 0, 0, 34, 0, 0,
-- 0, 0, 6, 0, 0, -86, 7, 8, 9, 10,
-- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
-- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
-- 31, 32, 33, 0, 0, 0, 0, 0, -22, 0,
-- 0, 0, 34, 0, 0, -22, 0, 0, -22, -22,
-- 7, 8, 9, 10, 11, 12, 13, 0, 15, 16,
-- 17, 18, 19, 20, 21, 22, 23, 24, 0, 26,
-- 27, 28, 29, 30, 0, 0, 33, 0, 0, 0,
-- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
-- 0, 0, 0, 122, 123, 7, 8, 9, 10, 11,
-- 12, 13, 0, 15, 16, 17, 18, 19, 20, 21,
-- 22, 23, 24, 0, 26, 27, 28, 29, 30, 0,
-- 0, 33, 0, 0, 0, 0, 0, 157, 0, 0,
-- 0, 158, 0, 0, 0, 0, 0, 159, 64, 7,
-+ 87, 88, 113, 156, 38, 10, 146, 163, 72, 127,
-+ 94, 50, 84, 59, 174, 20, 54, 90, 74, 148,
-+ 58, 150, 179, 101, 29, 51, 143, 164, 33, 4,
-+ 55, 70, 106, 113, 55, 113, -93, 102, 134, 60,
-+ 124, 78, 87, 147, 157, 86, 152, 110, 127, 127,
-+ 126, -93, 65, 111, 63, 65, 72, 91, 85, 109,
-+ 153, 160, 97, 110, 64, 98, 65, 53, 99, 111,
-+ 61, 65, 147, 62, 112, 161, 110, 113, 85, 124,
-+ 63, 74, 111, 157, 65, 48, 49, 158, 159, 126,
-+ 64, 65, 65, 87, 104, 105, 107, 108, 51, 55,
-+ 89, 87, 95, 96, 103, 120, 142, 130, 79, 131,
-+ 87, 182, 7, 8, 9, 10, 11, 12, 13, 132,
-+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
-+ 133, 26, 27, 28, 29, 30, 112, 149, 33, 34,
-+ 154, 155, 107, 98, 162, -22, 169, 167, 163, 35,
-+ 168, 170, -22, -107, 171, -22, 180, -22, 121, 172,
-+ -22, 176, 7, 8, 9, 10, 11, 12, 13, 177,
-+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
-+ 183, 26, 27, 28, 29, 30, 184, 185, 33, 34,
-+ 186, 5, 135, 122, 175, -22, 145, 73, 151, 35,
-+ 0, 0, -22, -108, 0, -22, 0, -22, 6, 0,
-+ -22, 144, 7, 8, 9, 10, 11, 12, 13, 14,
-+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
-+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
-+ 0, 0, 0, 0, 0, -22, 0, 0, 0, 35,
-+ 0, 0, -22, 0, 137, -22, 0, -22, 7, 8,
-+ 9, 10, 11, 12, 13, 0, 15, 16, 17, 18,
-+ 19, 20, 21, 22, 23, 24, 0, 26, 27, 28,
-+ 29, 30, 0, 0, 33, 34, 0, 0, 0, 0,
-+ -86, 0, 0, 0, 0, 35, 0, 0, 0, 173,
-+ 0, 0, -86, 7, 8, 9, 10, 11, 12, 13,
-+ 0, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-+ 24, 0, 26, 27, 28, 29, 30, 0, 0, 33,
-+ 34, 0, 0, 0, 0, -86, 0, 0, 0, 0,
-+ 35, 0, 0, 0, 178, 0, 0, -86, 7, 8,
-+ 9, 10, 11, 12, 13, 0, 15, 16, 17, 18,
-+ 19, 20, 21, 22, 23, 24, 0, 26, 27, 28,
-+ 29, 30, 0, 0, 33, 34, 0, 0, 0, 0,
-+ -86, 0, 0, 0, 0, 35, 0, 0, 0, 0,
-+ 0, 0, -86, 7, 8, 9, 10, 11, 12, 13,
-+ 0, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-+ 24, 0, 26, 27, 28, 29, 30, 0, 0, 33,
-+ 34, 0, 0, 0, 0, 0, 124, 0, 0, 0,
-+ 125, 0, 0, 0, 0, 0, 126, 0, 65, 7,
- 8, 9, 10, 11, 12, 13, 0, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 0, 26, 27,
-- 28, 29, 30, 0, 0, 33, 0, 0, 0, 0,
-- 178, 0, 0, 0, 0, 34, 7, 8, 9, 10,
-- 11, 12, 13, 0, 15, 16, 17, 18, 19, 20,
-- 21, 22, 23, 24, 0, 26, 27, 28, 29, 30,
-- 0, 0, 33, 0, 0, 0, 0, 0, 0, 0,
-- 0, 0, 34
-+ 28, 29, 30, 0, 0, 33, 34, 0, 0, 0,
-+ 0, 181, 0, 0, 0, 0, 35, 7, 8, 9,
-+ 10, 11, 12, 13, 0, 15, 16, 17, 18, 19,
-+ 20, 21, 22, 23, 24, 0, 26, 27, 28, 29,
-+ 30, 0, 0, 33, 34, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 35
- };
-
- #define yypact_value_is_default(yystate) \
-- ((yystate) == (-135))
-+ ((yystate) == (-140))
-
- #define yytable_value_is_error(yytable_value) \
- YYID (0)
-
- static const yytype_int16 yycheck[] =
- {
-- 59, 38, 79, 3, 1, 8, 56, 37, 26, 37,
-- 64, 31, 1, 147, 37, 18, 30, 1, 32, 109,
-- 0, 111, 45, 51, 27, 23, 76, 44, 31, 51,
-- 50, 37, 109, 63, 111, 53, 33, 91, 68, 57,
-- 37, 100, 47, 177, 41, 51, 37, 33, 37, 86,
-- 47, 48, 49, 37, 131, 37, 56, 41, 47, 48,
-- 51, 47, 47, 47, 48, 47, 48, 33, 37, 37,
-- 51, 33, 149, 41, 44, 45, 76, 44, 45, 47,
-- 48, 47, 159, 160, 52, 47, 37, 37, 147, 37,
-- 41, 45, 46, 41, 131, 44, 47, 48, 50, 47,
-- 48, 159, 160, 46, 45, 49, 165, 1, 34, 49,
-- 49, 5, 6, 7, 8, 9, 10, 11, 177, 13,
-- 14, 15, 16, 17, 18, 19, 20, 21, 22, 52,
-- 24, 25, 26, 27, 28, 34, 44, 31, 44, 46,
-- 30, 44, 31, 37, 49, 49, 46, 41, 49, 36,
-- 44, 45, 49, 47, 48, 1, 49, 34, 52, 5,
-- 6, 7, 8, 9, 10, 11, 49, 13, 14, 15,
-- 16, 17, 18, 19, 20, 21, 22, 49, 24, 25,
-- 26, 27, 28, 49, 49, 31, 49, 49, 1, 165,
-- 81, 37, 94, 149, 107, 41, 112, 49, 44, 45,
-- -1, 47, 48, 1, -1, 103, 52, 5, 6, 7,
-- 8, 9, 10, 11, -1, 13, 14, 15, 16, 17,
-- 18, 19, 20, 21, 22, -1, 24, 25, 26, 27,
-- 28, -1, -1, 31, -1, -1, -1, -1, 36, -1,
-- 1, -1, -1, 41, 5, 6, 7, 8, 9, 10,
-- 11, 49, 13, 14, 15, 16, 17, 18, 19, 20,
-- 21, 22, -1, 24, 25, 26, 27, 28, -1, -1,
-- 31, -1, -1, -1, -1, 36, -1, 1, -1, -1,
-- 41, 5, 6, 7, 8, 9, 10, 11, 49, 13,
-- 14, 15, 16, 17, 18, 19, 20, 21, 22, -1,
-- 24, 25, 26, 27, 28, -1, -1, 31, -1, -1,
-- -1, -1, 36, -1, -1, -1, -1, 41, -1, -1,
-- -1, -1, 1, -1, -1, 49, 5, 6, 7, 8,
-- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
-- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
-- 29, 30, 31, -1, -1, -1, -1, -1, 37, -1,
-- -1, -1, 41, -1, -1, 44, -1, -1, 47, 48,
-- 5, 6, 7, 8, 9, 10, 11, -1, 13, 14,
-- 15, 16, 17, 18, 19, 20, 21, 22, -1, 24,
-- 25, 26, 27, 28, -1, -1, 31, -1, -1, -1,
-- -1, -1, -1, -1, -1, -1, 41, -1, -1, -1,
-- -1, -1, -1, 48, 49, 5, 6, 7, 8, 9,
-- 10, 11, -1, 13, 14, 15, 16, 17, 18, 19,
-- 20, 21, 22, -1, 24, 25, 26, 27, 28, -1,
-- -1, 31, -1, -1, -1, -1, -1, 37, -1, -1,
-- -1, 41, -1, -1, -1, -1, -1, 47, 48, 5,
-+ 60, 60, 80, 1, 3, 8, 1, 31, 39, 87,
-+ 65, 38, 57, 26, 153, 18, 38, 1, 38, 111,
-+ 38, 113, 161, 34, 27, 52, 46, 51, 31, 0,
-+ 52, 38, 77, 111, 52, 113, 34, 48, 93, 48,
-+ 38, 54, 102, 38, 42, 58, 34, 42, 126, 127,
-+ 48, 49, 50, 48, 38, 50, 87, 64, 57, 38,
-+ 48, 34, 69, 42, 48, 30, 50, 23, 33, 48,
-+ 48, 50, 38, 45, 53, 48, 42, 155, 77, 38,
-+ 38, 38, 48, 42, 50, 45, 46, 126, 127, 48,
-+ 48, 50, 50, 153, 46, 47, 45, 46, 52, 52,
-+ 38, 161, 45, 47, 51, 46, 35, 49, 1, 49,
-+ 170, 170, 5, 6, 7, 8, 9, 10, 11, 49,
-+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
-+ 49, 24, 25, 26, 27, 28, 53, 35, 31, 32,
-+ 45, 47, 45, 30, 45, 38, 37, 49, 31, 42,
-+ 49, 47, 45, 46, 49, 48, 35, 50, 1, 49,
-+ 53, 49, 5, 6, 7, 8, 9, 10, 11, 49,
-+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
-+ 49, 24, 25, 26, 27, 28, 49, 49, 31, 32,
-+ 49, 1, 96, 82, 155, 38, 109, 50, 114, 42,
-+ -1, -1, 45, 46, -1, 48, -1, 50, 1, -1,
-+ 53, 105, 5, 6, 7, 8, 9, 10, 11, 12,
-+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
-+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
-+ -1, -1, -1, -1, -1, 38, -1, -1, -1, 42,
-+ -1, -1, 45, -1, 1, 48, -1, 50, 5, 6,
-+ 7, 8, 9, 10, 11, -1, 13, 14, 15, 16,
-+ 17, 18, 19, 20, 21, 22, -1, 24, 25, 26,
-+ 27, 28, -1, -1, 31, 32, -1, -1, -1, -1,
-+ 37, -1, -1, -1, -1, 42, -1, -1, -1, 1,
-+ -1, -1, 49, 5, 6, 7, 8, 9, 10, 11,
-+ -1, 13, 14, 15, 16, 17, 18, 19, 20, 21,
-+ 22, -1, 24, 25, 26, 27, 28, -1, -1, 31,
-+ 32, -1, -1, -1, -1, 37, -1, -1, -1, -1,
-+ 42, -1, -1, -1, 1, -1, -1, 49, 5, 6,
-+ 7, 8, 9, 10, 11, -1, 13, 14, 15, 16,
-+ 17, 18, 19, 20, 21, 22, -1, 24, 25, 26,
-+ 27, 28, -1, -1, 31, 32, -1, -1, -1, -1,
-+ 37, -1, -1, -1, -1, 42, -1, -1, -1, -1,
-+ -1, -1, 49, 5, 6, 7, 8, 9, 10, 11,
-+ -1, 13, 14, 15, 16, 17, 18, 19, 20, 21,
-+ 22, -1, 24, 25, 26, 27, 28, -1, -1, 31,
-+ 32, -1, -1, -1, -1, -1, 38, -1, -1, -1,
-+ 42, -1, -1, -1, -1, -1, 48, -1, 50, 5,
- 6, 7, 8, 9, 10, 11, -1, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, -1, 24, 25,
-- 26, 27, 28, -1, -1, 31, -1, -1, -1, -1,
-- 36, -1, -1, -1, -1, 41, 5, 6, 7, 8,
-- 9, 10, 11, -1, 13, 14, 15, 16, 17, 18,
-- 19, 20, 21, 22, -1, 24, 25, 26, 27, 28,
-- -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-- -1, -1, 41
-+ 26, 27, 28, -1, -1, 31, 32, -1, -1, -1,
-+ -1, 37, -1, -1, -1, -1, 42, 5, 6, 7,
-+ 8, 9, 10, 11, -1, 13, 14, 15, 16, 17,
-+ 18, 19, 20, 21, 22, -1, 24, 25, 26, 27,
-+ 28, -1, -1, 31, 32, -1, -1, -1, -1, -1,
-+ -1, -1, -1, -1, 42
- };
-
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
- static const yytype_uint8 yystos[] =
- {
-- 0, 54, 55, 56, 0, 55, 1, 5, 6, 7,
-+ 0, 55, 56, 57, 0, 56, 1, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
-- 28, 29, 30, 31, 41, 57, 60, 64, 65, 66,
-- 67, 68, 69, 73, 84, 99, 101, 44, 45, 37,
-- 51, 96, 23, 37, 51, 87, 59, 37, 87, 47,
-- 47, 44, 37, 47, 48, 61, 62, 63, 70, 74,
-- 75, 66, 96, 37, 97, 98, 58, 87, 1, 64,
-- 88, 89, 90, 60, 64, 87, 65, 37, 1, 74,
-- 71, 72, 73, 44, 46, 74, 30, 32, 100, 33,
-- 47, 50, 45, 46, 60, 44, 45, 37, 41, 47,
-- 52, 70, 76, 77, 91, 92, 93, 94, 45, 1,
-- 90, 74, 48, 49, 49, 49, 49, 73, 63, 95,
-- 1, 65, 78, 79, 80, 81, 34, 45, 98, 94,
-- 1, 37, 76, 34, 76, 95, 33, 47, 44, 46,
-- 49, 44, 31, 50, 85, 86, 49, 37, 41, 47,
-- 70, 82, 83, 49, 36, 46, 49, 49, 1, 78,
-- 93, 34, 1, 41, 82, 82, 33, 47, 36, 81,
-- 49, 49, 49, 49, 1, 78, 49, 49
-+ 28, 29, 30, 31, 32, 42, 58, 61, 65, 66,
-+ 67, 68, 69, 70, 74, 85, 100, 102, 45, 46,
-+ 38, 52, 97, 23, 38, 52, 88, 60, 38, 88,
-+ 48, 48, 45, 38, 48, 50, 62, 63, 64, 71,
-+ 75, 76, 67, 97, 38, 98, 99, 59, 88, 1,
-+ 65, 89, 90, 91, 61, 65, 88, 66, 82, 38,
-+ 1, 75, 72, 73, 74, 45, 47, 75, 30, 33,
-+ 101, 34, 48, 51, 46, 47, 61, 45, 46, 38,
-+ 42, 48, 53, 71, 77, 78, 92, 93, 94, 95,
-+ 46, 1, 91, 75, 38, 42, 48, 71, 83, 84,
-+ 49, 49, 49, 49, 74, 64, 96, 1, 79, 80,
-+ 81, 82, 35, 46, 99, 95, 1, 38, 77, 35,
-+ 77, 96, 34, 48, 45, 47, 1, 42, 83, 83,
-+ 34, 48, 45, 31, 51, 86, 87, 49, 49, 37,
-+ 47, 49, 49, 1, 79, 94, 49, 49, 1, 79,
-+ 35, 37, 82, 49, 49, 49, 49
- };
-
- #define yyerrok (yyerrstatus = 0)
-@@ -890,17 +895,18 @@ static const yytype_uint8 yystos[] =
-
- #define YYRECOVERING() (!!yyerrstatus)
-
--#define YYBACKUP(Token, Value) \
--do \
-- if (yychar == YYEMPTY && yylen == 1) \
-- { \
-- yychar = (Token); \
-- yylval = (Value); \
-- YYPOPSTACK (1); \
-- goto yybackup; \
-- } \
-- else \
-- { \
-+#define YYBACKUP(Token, Value) \
-+do \
-+ if (yychar == YYEMPTY) \
-+ { \
-+ yychar = (Token); \
-+ yylval = (Value); \
-+ YYPOPSTACK (yylen); \
-+ yystate = *yyssp; \
-+ goto yybackup; \
-+ } \
-+ else \
-+ { \
- yyerror (YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-@@ -995,6 +1001,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
- YYSTYPE const * const yyvaluep;
- #endif
- {
-+ FILE *yyo = yyoutput;
-+ YYUSE (yyo);
- if (!yyvaluep)
- return;
- # ifdef YYPRINT
-@@ -1246,12 +1254,12 @@ static int
- yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- yytype_int16 *yyssp, int yytoken)
- {
-- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
-+ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
-- const char *yyformat = 0;
-+ const char *yyformat = YY_NULL;
- /* Arguments of yyformat. */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
-@@ -1311,7 +1319,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- break;
- }
- yyarg[yycount++] = yytname[yyx];
-- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-+ yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
-@@ -1463,7 +1471,7 @@ yyparse ()
- `yyss': related to states.
- `yyvs': related to semantic values.
-
-- Refer to the stacks thru separate pointers, to allow yyoverflow
-+ Refer to the stacks through separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
-@@ -2346,7 +2354,7 @@ yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
--#if !defined(yyoverflow) || YYERROR_VERBOSE
-+#if !defined yyoverflow || YYERROR_VERBOSE
- /*-------------------------------------------------.
- | yyexhaustedlab -- memory exhaustion comes here. |
- `-------------------------------------------------*/
-diff --git a/scripts/genksyms/parse.tab.h_shipped b/scripts/genksyms/parse.tab.h_shipped
-index 93240a3..a4737de 100644
---- a/scripts/genksyms/parse.tab.h_shipped
-+++ b/scripts/genksyms/parse.tab.h_shipped
-@@ -1,8 +1,8 @@
--/* A Bison parser, made by GNU Bison 2.5. */
-+/* A Bison parser, made by GNU Bison 2.5.1. */
-
- /* Bison interface for Yacc-like parsers in C
-
-- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
-+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
-@@ -66,18 +66,19 @@
- EXPORT_SYMBOL_KEYW = 284,
- ASM_PHRASE = 285,
- ATTRIBUTE_PHRASE = 286,
-- BRACE_PHRASE = 287,
-- BRACKET_PHRASE = 288,
-- EXPRESSION_PHRASE = 289,
-- CHAR = 290,
-- DOTS = 291,
-- IDENT = 292,
-- INT = 293,
-- REAL = 294,
-- STRING = 295,
-- TYPE = 296,
-- OTHER = 297,
-- FILENAME = 298
-+ TYPEOF_PHRASE = 287,
-+ BRACE_PHRASE = 288,
-+ BRACKET_PHRASE = 289,
-+ EXPRESSION_PHRASE = 290,
-+ CHAR = 291,
-+ DOTS = 292,
-+ IDENT = 293,
-+ INT = 294,
-+ REAL = 295,
-+ STRING = 296,
-+ TYPE = 297,
-+ OTHER = 298,
-+ FILENAME = 299
- };
- #endif
-
-diff --git a/scripts/genksyms/parse.y b/scripts/genksyms/parse.y
-index 23c3999..b9f4cf2 100644
---- a/scripts/genksyms/parse.y
-+++ b/scripts/genksyms/parse.y
-@@ -103,6 +103,7 @@ static void record_compound(struct string_list **keyw,
-
- %token ASM_PHRASE
- %token ATTRIBUTE_PHRASE
-+%token TYPEOF_PHRASE
- %token BRACE_PHRASE
- %token BRACKET_PHRASE
- %token EXPRESSION_PHRASE
-@@ -220,8 +221,8 @@ storage_class_specifier:
- type_specifier:
- simple_type_specifier
- | cvar_qualifier
-- | TYPEOF_KEYW '(' decl_specifier_seq '*' ')'
-- | TYPEOF_KEYW '(' decl_specifier_seq ')'
-+ | TYPEOF_KEYW '(' parameter_declaration ')'
-+ | TYPEOF_PHRASE
-
- /* References to s/u/e's defined elsewhere. Rearrange things
- so that it is easier to expand the definition fully later. */
---
-cgit v0.11.2
-
+++ /dev/null
-From 88c9281a9fba67636ab26c1fd6afbc78a632374f Mon Sep 17 00:00:00 2001
-From: Vitaly Kuznetsov <vkuznets@redhat.com>
-Date: Wed, 19 Aug 2015 09:54:24 -0700
-Subject: x86/hyperv: Mark the Hyper-V TSC as unstable
-
-The Hyper-V top-level functional specification states, that
-"algorithms should be resilient to sudden jumps forward or
-backward in the TSC value", this means that we should consider
-TSC as unstable. In some cases tsc tests are able to detect the
-instability, it was detected in 543 out of 646 boots in my
-testing:
-
- Measured 6277 cycles TSC warp between CPUs, turning off TSC clock.
- tsc: Marking TSC unstable due to check_tsc_sync_source failed
-
-This is, however, just a heuristic. On Hyper-V platform there
-are two good clocksources: MSR-based hyperv_clocksource and
-recently introduced TSC page.
-
-Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
-Cc: Haiyang Zhang <haiyangz@microsoft.com>
-Cc: K. Y. Srinivasan <kys@microsoft.com>
-Cc: Linus Torvalds <torvalds@linux-foundation.org>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Cc: Thomas Gleixner <tglx@linutronix.de>
-Cc: devel@linuxdriverproject.org
-Link: http://lkml.kernel.org/r/1440003264-9949-1-git-send-email-vkuznets@redhat.com
-Signed-off-by: Ingo Molnar <mingo@kernel.org>
----
- arch/x86/kernel/cpu/mshyperv.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
-index aad4bd8..6fd023d 100644
---- a/arch/x86/kernel/cpu/mshyperv.c
-+++ b/arch/x86/kernel/cpu/mshyperv.c
-@@ -141,6 +141,7 @@ static void __init ms_hyperv_init_platform(void)
- no_timer_check = 1;
- #endif
-
-+ mark_tsc_unstable("running on Hyper-V");
- }
-
- const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = {
---
-cgit v0.12
-
+++ /dev/null
-From f3f885fa684ff18fa4d223dc22b782f5e5d32560 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 16 Feb 2014 16:38:43 -0800
-Subject: [PATCH 01/25] Drivers: net: hyperv: Get rid of the
- rndis_filter_packet structure
-
-This structure is redundant; get rid of it make the code little more efficient -
-get rid of the unnecessary indirection.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 6 ------
- drivers/net/hyperv/netvsc_drv.c | 2 +-
- drivers/net/hyperv/rndis_filter.c | 41 +++------------------------------------
- 3 files changed, 4 insertions(+), 45 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 7b594ce3f21d..7645ba38bde8 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -846,12 +846,6 @@ struct rndis_message {
- };
-
-
--struct rndis_filter_packet {
-- void *completion_ctx;
-- void (*completion)(void *context);
-- struct rndis_message msg;
--};
--
- /* Handy macros */
-
- /* get the size of an RNDIS message. Pass in the message type, */
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 3c1c33ceffba..28020f83ba6f 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -156,7 +156,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- /* Allocate a netvsc packet based on # of frags. */
- packet = kzalloc(sizeof(struct hv_netvsc_packet) +
- (num_pages * sizeof(struct hv_page_buffer)) +
-- sizeof(struct rndis_filter_packet) +
-+ sizeof(struct rndis_message) +
- NDIS_VLAN_PPI_SIZE, GFP_ATOMIC);
- if (!packet) {
- /* out of memory, drop packet */
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index b54fd257652b..6a9f6021f09c 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -58,9 +58,6 @@ struct rndis_request {
- u8 request_ext[RNDIS_EXT_LEN];
- };
-
--static void rndis_filter_send_completion(void *ctx);
--
--
- static struct rndis_device *get_rndis_device(void)
- {
- struct rndis_device *device;
-@@ -297,7 +294,7 @@ static void rndis_filter_receive_response(struct rndis_device *dev,
- "rndis response buffer overflow "
- "detected (size %u max %zu)\n",
- resp->msg_len,
-- sizeof(struct rndis_filter_packet));
-+ sizeof(struct rndis_message));
-
- if (resp->ndis_msg_type ==
- RNDIS_MSG_RESET_C) {
-@@ -917,17 +914,14 @@ int rndis_filter_close(struct hv_device *dev)
- int rndis_filter_send(struct hv_device *dev,
- struct hv_netvsc_packet *pkt)
- {
-- int ret;
-- struct rndis_filter_packet *filter_pkt;
- struct rndis_message *rndis_msg;
- struct rndis_packet *rndis_pkt;
- u32 rndis_msg_size;
- bool isvlan = pkt->vlan_tci & VLAN_TAG_PRESENT;
-
- /* Add the rndis header */
-- filter_pkt = (struct rndis_filter_packet *)pkt->extension;
-+ rndis_msg = (struct rndis_message *)pkt->extension;
-
-- rndis_msg = &filter_pkt->msg;
- rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
- if (isvlan)
- rndis_msg_size += NDIS_VLAN_PPI_SIZE;
-@@ -980,34 +974,5 @@ int rndis_filter_send(struct hv_device *dev,
- pkt->page_buf[1].len = rndis_msg_size - pkt->page_buf[0].len;
- }
-
-- /* Save the packet send completion and context */
-- filter_pkt->completion = pkt->completion.send.send_completion;
-- filter_pkt->completion_ctx =
-- pkt->completion.send.send_completion_ctx;
--
-- /* Use ours */
-- pkt->completion.send.send_completion = rndis_filter_send_completion;
-- pkt->completion.send.send_completion_ctx = filter_pkt;
--
-- ret = netvsc_send(dev, pkt);
-- if (ret != 0) {
-- /*
-- * Reset the completion to originals to allow retries from
-- * above
-- */
-- pkt->completion.send.send_completion =
-- filter_pkt->completion;
-- pkt->completion.send.send_completion_ctx =
-- filter_pkt->completion_ctx;
-- }
--
-- return ret;
--}
--
--static void rndis_filter_send_completion(void *ctx)
--{
-- struct rndis_filter_packet *filter_pkt = ctx;
--
-- /* Pass it back to the original handler */
-- filter_pkt->completion(filter_pkt->completion_ctx);
-+ return netvsc_send(dev, pkt);
- }
---
-2.4.3
-
+++ /dev/null
-From 5b54dac856cb5bd6f33f4159012773e4a33704f7 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 10:20:28 -0700
-Subject: [PATCH 01/11] hyperv: Add support for virtual Receive Side Scaling
- (vRSS)
-
-This feature allows multiple channels to be used by each virtual NIC.
-It is available on Hyper-V host 2012 R2.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 110 +++++++++++++++++++++-
- drivers/net/hyperv/netvsc.c | 136 +++++++++++++++++++++------
- drivers/net/hyperv/netvsc_drv.c | 103 ++++++++++++++++++++-
- drivers/net/hyperv/rndis_filter.c | 189 +++++++++++++++++++++++++++++++++++++-
- 4 files changed, 504 insertions(+), 34 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index d18f711d0b0c..57eb3f906d64 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -28,6 +28,96 @@
- #include <linux/hyperv.h>
- #include <linux/rndis.h>
-
-+/* RSS related */
-+#define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203 /* query only */
-+#define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204 /* query and set */
-+
-+#define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88
-+#define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89
-+
-+#define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 2
-+#define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 2
-+
-+struct ndis_obj_header {
-+ u8 type;
-+ u8 rev;
-+ u16 size;
-+} __packed;
-+
-+/* ndis_recv_scale_cap/cap_flag */
-+#define NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000
-+#define NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR 0x02000000
-+#define NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC 0x04000000
-+#define NDIS_RSS_CAPS_USING_MSI_X 0x08000000
-+#define NDIS_RSS_CAPS_RSS_AVAILABLE_ON_PORTS 0x10000000
-+#define NDIS_RSS_CAPS_SUPPORTS_MSI_X 0x20000000
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4 0x00000100
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6 0x00000200
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX 0x00000400
-+
-+struct ndis_recv_scale_cap { /* NDIS_RECEIVE_SCALE_CAPABILITIES */
-+ struct ndis_obj_header hdr;
-+ u32 cap_flag;
-+ u32 num_int_msg;
-+ u32 num_recv_que;
-+ u16 num_indirect_tabent;
-+} __packed;
-+
-+
-+/* ndis_recv_scale_param flags */
-+#define NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED 0x0001
-+#define NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED 0x0002
-+#define NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED 0x0004
-+#define NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED 0x0008
-+#define NDIS_RSS_PARAM_FLAG_DISABLE_RSS 0x0010
-+
-+/* Hash info bits */
-+#define NDIS_HASH_FUNC_TOEPLITZ 0x00000001
-+#define NDIS_HASH_IPV4 0x00000100
-+#define NDIS_HASH_TCP_IPV4 0x00000200
-+#define NDIS_HASH_IPV6 0x00000400
-+#define NDIS_HASH_IPV6_EX 0x00000800
-+#define NDIS_HASH_TCP_IPV6 0x00001000
-+#define NDIS_HASH_TCP_IPV6_EX 0x00002000
-+
-+#define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_2 (128 * 4)
-+#define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2 40
-+
-+#define ITAB_NUM 128
-+#define HASH_KEYLEN NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2
-+extern u8 netvsc_hash_key[];
-+
-+struct ndis_recv_scale_param { /* NDIS_RECEIVE_SCALE_PARAMETERS */
-+ struct ndis_obj_header hdr;
-+
-+ /* Qualifies the rest of the information */
-+ u16 flag;
-+
-+ /* The base CPU number to do receive processing. not used */
-+ u16 base_cpu_number;
-+
-+ /* This describes the hash function and type being enabled */
-+ u32 hashinfo;
-+
-+ /* The size of indirection table array */
-+ u16 indirect_tabsize;
-+
-+ /* The offset of the indirection table from the beginning of this
-+ * structure
-+ */
-+ u32 indirect_taboffset;
-+
-+ /* The size of the hash secret key */
-+ u16 hashkey_size;
-+
-+ /* The offset of the secret key from the beginning of this structure */
-+ u32 kashkey_offset;
-+
-+ u32 processor_masks_offset;
-+ u32 num_processor_masks;
-+ u32 processor_masks_entry_size;
-+};
-+
- /* Fwd declaration */
- struct hv_netvsc_packet;
- struct ndis_tcp_ip_checksum_info;
-@@ -39,6 +129,8 @@ struct xferpage_packet {
-
- /* # of netvsc packets this xfer packet contains */
- u32 count;
-+
-+ struct vmbus_channel *channel;
- };
-
- /*
-@@ -54,6 +146,9 @@ struct hv_netvsc_packet {
- bool is_data_pkt;
- u16 vlan_tci;
-
-+ u16 q_idx;
-+ struct vmbus_channel *channel;
-+
- /*
- * Valid only for receives when we break a xfer page packet
- * into multiple netvsc packets
-@@ -120,6 +215,7 @@ void netvsc_linkstatus_callback(struct hv_device *device_obj,
- int netvsc_recv_callback(struct hv_device *device_obj,
- struct hv_netvsc_packet *packet,
- struct ndis_tcp_ip_checksum_info *csum_info);
-+void netvsc_channel_cb(void *context);
- int rndis_filter_open(struct hv_device *dev);
- int rndis_filter_close(struct hv_device *dev);
- int rndis_filter_device_add(struct hv_device *dev,
-@@ -522,6 +618,8 @@ struct nvsp_message {
-
- #define NETVSC_PACKET_SIZE 2048
-
-+#define VRSS_SEND_TAB_SIZE 16
-+
- /* Per netvsc channel-specific */
- struct netvsc_device {
- struct hv_device *dev;
-@@ -555,10 +653,20 @@ struct netvsc_device {
-
- struct net_device *ndev;
-
-+ struct vmbus_channel *chn_table[NR_CPUS];
-+ u32 send_table[VRSS_SEND_TAB_SIZE];
-+ u32 num_chn;
-+ atomic_t queue_sends[NR_CPUS];
-+
- /* Holds rndis device info */
- void *extension;
-- /* The recive buffer for this device */
-+
-+ int ring_size;
-+
-+ /* The primary channel callback buffer */
- unsigned char cb_buffer[NETVSC_PACKET_SIZE];
-+ /* The sub channel callback buffer */
-+ unsigned char *sub_cb_buf;
- };
-
- /* NdisInitialize message */
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index f7629ecefa84..e7e77f12bc38 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -422,6 +422,9 @@ int netvsc_device_remove(struct hv_device *device)
- kfree(netvsc_packet);
- }
-
-+ if (net_device->sub_cb_buf)
-+ vfree(net_device->sub_cb_buf);
-+
- kfree(net_device);
- return 0;
- }
-@@ -461,7 +464,9 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- (nvsp_packet->hdr.msg_type ==
- NVSP_MSG1_TYPE_SEND_RECV_BUF_COMPLETE) ||
- (nvsp_packet->hdr.msg_type ==
-- NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE)) {
-+ NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE) ||
-+ (nvsp_packet->hdr.msg_type ==
-+ NVSP_MSG5_TYPE_SUBCHANNEL)) {
- /* Copy the response back */
- memcpy(&net_device->channel_init_pkt, nvsp_packet,
- sizeof(struct nvsp_message));
-@@ -469,28 +474,37 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- } else if (nvsp_packet->hdr.msg_type ==
- NVSP_MSG1_TYPE_SEND_RNDIS_PKT_COMPLETE) {
- int num_outstanding_sends;
-+ u16 q_idx = 0;
-+ struct vmbus_channel *channel = device->channel;
-+ int queue_sends;
-
- /* Get the send context */
- nvsc_packet = (struct hv_netvsc_packet *)(unsigned long)
- packet->trans_id;
-
- /* Notify the layer above us */
-- if (nvsc_packet)
-+ if (nvsc_packet) {
-+ q_idx = nvsc_packet->q_idx;
-+ channel = nvsc_packet->channel;
- nvsc_packet->completion.send.send_completion(
- nvsc_packet->completion.send.
- send_completion_ctx);
-+ }
-
- num_outstanding_sends =
- atomic_dec_return(&net_device->num_outstanding_sends);
-+ queue_sends = atomic_dec_return(&net_device->
-+ queue_sends[q_idx]);
-
- if (net_device->destroy && num_outstanding_sends == 0)
- wake_up(&net_device->wait_drain);
-
-- if (netif_queue_stopped(ndev) && !net_device->start_remove &&
-- (hv_ringbuf_avail_percent(&device->channel->outbound)
-- > RING_AVAIL_PERCENT_HIWATER ||
-- num_outstanding_sends < 1))
-- netif_wake_queue(ndev);
-+ if (netif_tx_queue_stopped(netdev_get_tx_queue(ndev, q_idx)) &&
-+ !net_device->start_remove &&
-+ (hv_ringbuf_avail_percent(&channel->outbound) >
-+ RING_AVAIL_PERCENT_HIWATER || queue_sends < 1))
-+ netif_tx_wake_queue(netdev_get_tx_queue(
-+ ndev, q_idx));
- } else {
- netdev_err(ndev, "Unknown send completion packet type- "
- "%d received!!\n", nvsp_packet->hdr.msg_type);
-@@ -505,6 +519,7 @@ int netvsc_send(struct hv_device *device,
- int ret = 0;
- struct nvsp_message sendMessage;
- struct net_device *ndev;
-+ struct vmbus_channel *out_channel = NULL;
- u64 req_id;
-
- net_device = get_outbound_net_device(device);
-@@ -531,15 +546,20 @@ int netvsc_send(struct hv_device *device,
- else
- req_id = 0;
-
-+ out_channel = net_device->chn_table[packet->q_idx];
-+ if (out_channel == NULL)
-+ out_channel = device->channel;
-+ packet->channel = out_channel;
-+
- if (packet->page_buf_cnt) {
-- ret = vmbus_sendpacket_pagebuffer(device->channel,
-+ ret = vmbus_sendpacket_pagebuffer(out_channel,
- packet->page_buf,
- packet->page_buf_cnt,
- &sendMessage,
- sizeof(struct nvsp_message),
- req_id);
- } else {
-- ret = vmbus_sendpacket(device->channel, &sendMessage,
-+ ret = vmbus_sendpacket(out_channel, &sendMessage,
- sizeof(struct nvsp_message),
- req_id,
- VM_PKT_DATA_INBAND,
-@@ -548,17 +568,24 @@ int netvsc_send(struct hv_device *device,
-
- if (ret == 0) {
- atomic_inc(&net_device->num_outstanding_sends);
-- if (hv_ringbuf_avail_percent(&device->channel->outbound) <
-+ atomic_inc(&net_device->queue_sends[packet->q_idx]);
-+
-+ if (hv_ringbuf_avail_percent(&out_channel->outbound) <
- RING_AVAIL_PERCENT_LOWATER) {
-- netif_stop_queue(ndev);
-+ netif_tx_stop_queue(netdev_get_tx_queue(
-+ ndev, packet->q_idx));
-+
- if (atomic_read(&net_device->
-- num_outstanding_sends) < 1)
-- netif_wake_queue(ndev);
-+ queue_sends[packet->q_idx]) < 1)
-+ netif_tx_wake_queue(netdev_get_tx_queue(
-+ ndev, packet->q_idx));
- }
- } else if (ret == -EAGAIN) {
-- netif_stop_queue(ndev);
-- if (atomic_read(&net_device->num_outstanding_sends) < 1) {
-- netif_wake_queue(ndev);
-+ netif_tx_stop_queue(netdev_get_tx_queue(
-+ ndev, packet->q_idx));
-+ if (atomic_read(&net_device->queue_sends[packet->q_idx]) < 1) {
-+ netif_tx_wake_queue(netdev_get_tx_queue(
-+ ndev, packet->q_idx));
- ret = -ENOSPC;
- }
- } else {
-@@ -570,6 +597,7 @@ int netvsc_send(struct hv_device *device,
- }
-
- static void netvsc_send_recv_completion(struct hv_device *device,
-+ struct vmbus_channel *channel,
- struct netvsc_device *net_device,
- u64 transaction_id, u32 status)
- {
-@@ -587,7 +615,7 @@ static void netvsc_send_recv_completion(struct hv_device *device,
-
- retry_send_cmplt:
- /* Send the completion */
-- ret = vmbus_sendpacket(device->channel, &recvcompMessage,
-+ ret = vmbus_sendpacket(channel, &recvcompMessage,
- sizeof(struct nvsp_message), transaction_id,
- VM_PKT_COMP, 0);
- if (ret == 0) {
-@@ -618,6 +646,7 @@ static void netvsc_receive_completion(void *context)
- {
- struct hv_netvsc_packet *packet = context;
- struct hv_device *device = packet->device;
-+ struct vmbus_channel *channel;
- struct netvsc_device *net_device;
- u64 transaction_id = 0;
- bool fsend_receive_comp = false;
-@@ -649,6 +678,7 @@ static void netvsc_receive_completion(void *context)
- */
- if (packet->xfer_page_pkt->count == 0) {
- fsend_receive_comp = true;
-+ channel = packet->xfer_page_pkt->channel;
- transaction_id = packet->completion.recv.recv_completion_tid;
- status = packet->xfer_page_pkt->status;
- list_add_tail(&packet->xfer_page_pkt->list_ent,
-@@ -662,12 +692,13 @@ static void netvsc_receive_completion(void *context)
-
- /* Send a receive completion for the xfer page packet */
- if (fsend_receive_comp)
-- netvsc_send_recv_completion(device, net_device, transaction_id,
-- status);
-+ netvsc_send_recv_completion(device, channel, net_device,
-+ transaction_id, status);
-
- }
-
- static void netvsc_receive(struct netvsc_device *net_device,
-+ struct vmbus_channel *channel,
- struct hv_device *device,
- struct vmpacket_descriptor *packet)
- {
-@@ -748,7 +779,7 @@ static void netvsc_receive(struct netvsc_device *net_device,
- spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
- flags);
-
-- netvsc_send_recv_completion(device, net_device,
-+ netvsc_send_recv_completion(device, channel, net_device,
- vmxferpage_packet->d.trans_id,
- NVSP_STAT_FAIL);
-
-@@ -759,6 +790,7 @@ static void netvsc_receive(struct netvsc_device *net_device,
- xferpage_packet = (struct xferpage_packet *)listHead.next;
- list_del(&xferpage_packet->list_ent);
- xferpage_packet->status = NVSP_STAT_SUCCESS;
-+ xferpage_packet->channel = channel;
-
- /* This is how much we can satisfy */
- xferpage_packet->count = count - 1;
-@@ -800,10 +832,45 @@ static void netvsc_receive(struct netvsc_device *net_device,
-
- }
-
--static void netvsc_channel_cb(void *context)
-+
-+static void netvsc_send_table(struct hv_device *hdev,
-+ struct vmpacket_descriptor *vmpkt)
-+{
-+ struct netvsc_device *nvscdev;
-+ struct net_device *ndev;
-+ struct nvsp_message *nvmsg;
-+ int i;
-+ u32 count, *tab;
-+
-+ nvscdev = get_outbound_net_device(hdev);
-+ if (!nvscdev)
-+ return;
-+ ndev = nvscdev->ndev;
-+
-+ nvmsg = (struct nvsp_message *)((unsigned long)vmpkt +
-+ (vmpkt->offset8 << 3));
-+
-+ if (nvmsg->hdr.msg_type != NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE)
-+ return;
-+
-+ count = nvmsg->msg.v5_msg.send_table.count;
-+ if (count != VRSS_SEND_TAB_SIZE) {
-+ netdev_err(ndev, "Received wrong send-table size:%u\n", count);
-+ return;
-+ }
-+
-+ tab = (u32 *)((unsigned long)&nvmsg->msg.v5_msg.send_table +
-+ nvmsg->msg.v5_msg.send_table.offset);
-+
-+ for (i = 0; i < count; i++)
-+ nvscdev->send_table[i] = tab[i];
-+}
-+
-+void netvsc_channel_cb(void *context)
- {
- int ret;
-- struct hv_device *device = context;
-+ struct vmbus_channel *channel = (struct vmbus_channel *)context;
-+ struct hv_device *device;
- struct netvsc_device *net_device;
- u32 bytes_recvd;
- u64 request_id;
-@@ -812,14 +879,19 @@ static void netvsc_channel_cb(void *context)
- int bufferlen = NETVSC_PACKET_SIZE;
- struct net_device *ndev;
-
-+ if (channel->primary_channel != NULL)
-+ device = channel->primary_channel->device_obj;
-+ else
-+ device = channel->device_obj;
-+
- net_device = get_inbound_net_device(device);
- if (!net_device)
- return;
- ndev = net_device->ndev;
-- buffer = net_device->cb_buffer;
-+ buffer = get_per_channel_state(channel);
-
- do {
-- ret = vmbus_recvpacket_raw(device->channel, buffer, bufferlen,
-+ ret = vmbus_recvpacket_raw(channel, buffer, bufferlen,
- &bytes_recvd, &request_id);
- if (ret == 0) {
- if (bytes_recvd > 0) {
-@@ -831,8 +903,12 @@ static void netvsc_channel_cb(void *context)
- break;
-
- case VM_PKT_DATA_USING_XFER_PAGES:
-- netvsc_receive(net_device,
-- device, desc);
-+ netvsc_receive(net_device, channel,
-+ device, desc);
-+ break;
-+
-+ case VM_PKT_DATA_INBAND:
-+ netvsc_send_table(device, desc);
- break;
-
- default:
-@@ -893,6 +969,8 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
- goto cleanup;
- }
-
-+ net_device->ring_size = ring_size;
-+
- /*
- * Coming into this function, struct net_device * is
- * registered as the driver private data.
-@@ -917,10 +995,12 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
- }
- init_completion(&net_device->channel_init_wait);
-
-+ set_per_channel_state(device->channel, net_device->cb_buffer);
-+
- /* Open the channel */
- ret = vmbus_open(device->channel, ring_size * PAGE_SIZE,
- ring_size * PAGE_SIZE, NULL, 0,
-- netvsc_channel_cb, device);
-+ netvsc_channel_cb, device->channel);
-
- if (ret != 0) {
- netdev_err(ndev, "unable to open channel: %d\n", ret);
-@@ -930,6 +1010,8 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
- /* Channel is opened */
- pr_info("hv_netvsc channel opened successfully\n");
-
-+ net_device->chn_table[0] = device->channel;
-+
- /* Connect with the NetVsp */
- ret = netvsc_connect_vsp(device);
- if (ret != 0) {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 31e55fba7cad..093cf3fc46b8 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -101,7 +101,7 @@ static int netvsc_open(struct net_device *net)
- return ret;
- }
-
-- netif_start_queue(net);
-+ netif_tx_start_all_queues(net);
-
- nvdev = hv_get_drvdata(device_obj);
- rdev = nvdev->extension;
-@@ -149,6 +149,88 @@ static void *init_ppi_data(struct rndis_message *msg, u32 ppi_size,
- return ppi;
- }
-
-+union sub_key {
-+ u64 k;
-+ struct {
-+ u8 pad[3];
-+ u8 kb;
-+ u32 ka;
-+ };
-+};
-+
-+/* Toeplitz hash function
-+ * data: network byte order
-+ * return: host byte order
-+ */
-+static u32 comp_hash(u8 *key, int klen, u8 *data, int dlen)
-+{
-+ union sub_key subk;
-+ int k_next = 4;
-+ u8 dt;
-+ int i, j;
-+ u32 ret = 0;
-+
-+ subk.k = 0;
-+ subk.ka = ntohl(*(u32 *)key);
-+
-+ for (i = 0; i < dlen; i++) {
-+ subk.kb = key[k_next];
-+ k_next = (k_next + 1) % klen;
-+ dt = data[i];
-+ for (j = 0; j < 8; j++) {
-+ if (dt & 0x80)
-+ ret ^= subk.ka;
-+ dt <<= 1;
-+ subk.k <<= 1;
-+ }
-+ }
-+
-+ return ret;
-+}
-+
-+static bool netvsc_set_hash(u32 *hash, struct sk_buff *skb)
-+{
-+ struct iphdr *iphdr;
-+ int data_len;
-+ bool ret = false;
-+
-+ if (eth_hdr(skb)->h_proto != htons(ETH_P_IP))
-+ return false;
-+
-+ iphdr = ip_hdr(skb);
-+
-+ if (iphdr->version == 4) {
-+ if (iphdr->protocol == IPPROTO_TCP)
-+ data_len = 12;
-+ else
-+ data_len = 8;
-+ *hash = comp_hash(netvsc_hash_key, HASH_KEYLEN,
-+ (u8 *)&iphdr->saddr, data_len);
-+ ret = true;
-+ }
-+
-+ return ret;
-+}
-+
-+static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
-+ void *accel_priv, select_queue_fallback_t fallback)
-+{
-+ struct net_device_context *net_device_ctx = netdev_priv(ndev);
-+ struct hv_device *hdev = net_device_ctx->device_ctx;
-+ struct netvsc_device *nvsc_dev = hv_get_drvdata(hdev);
-+ u32 hash;
-+ u16 q_idx = 0;
-+
-+ if (nvsc_dev == NULL || ndev->real_num_tx_queues <= 1)
-+ return 0;
-+
-+ if (netvsc_set_hash(&hash, skb))
-+ q_idx = nvsc_dev->send_table[hash % VRSS_SEND_TAB_SIZE] %
-+ ndev->real_num_tx_queues;
-+
-+ return q_idx;
-+}
-+
- static void netvsc_xmit_completion(void *context)
- {
- struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-@@ -333,6 +415,8 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-
- packet->vlan_tci = skb->vlan_tci;
-
-+ packet->q_idx = skb_get_queue_mapping(skb);
-+
- packet->is_data_pkt = true;
- packet->total_data_buflen = skb->len;
-
-@@ -554,6 +638,10 @@ int netvsc_recv_callback(struct hv_device *device_obj,
- __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
- packet->vlan_tci);
-
-+ skb_record_rx_queue(skb, packet->xfer_page_pkt->channel->
-+ offermsg.offer.sub_channel_index %
-+ net->real_num_rx_queues);
-+
- net->stats.rx_packets++;
- net->stats.rx_bytes += packet->total_data_buflen;
-
-@@ -602,7 +690,7 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu)
- hv_set_drvdata(hdev, ndev);
- device_info.ring_size = ring_size;
- rndis_filter_device_add(hdev, &device_info);
-- netif_wake_queue(ndev);
-+ netif_tx_wake_all_queues(ndev);
-
- return 0;
- }
-@@ -648,6 +736,7 @@ static const struct net_device_ops device_ops = {
- .ndo_change_mtu = netvsc_change_mtu,
- .ndo_validate_addr = eth_validate_addr,
- .ndo_set_mac_address = netvsc_set_mac_addr,
-+ .ndo_select_queue = netvsc_select_queue,
- };
-
- /*
-@@ -694,9 +783,11 @@ static int netvsc_probe(struct hv_device *dev,
- struct net_device *net = NULL;
- struct net_device_context *net_device_ctx;
- struct netvsc_device_info device_info;
-+ struct netvsc_device *nvdev;
- int ret;
-
-- net = alloc_etherdev(sizeof(struct net_device_context));
-+ net = alloc_etherdev_mq(sizeof(struct net_device_context),
-+ num_online_cpus());
- if (!net)
- return -ENOMEM;
-
-@@ -729,6 +820,12 @@ static int netvsc_probe(struct hv_device *dev,
- }
- memcpy(net->dev_addr, device_info.mac_adr, ETH_ALEN);
-
-+ nvdev = hv_get_drvdata(dev);
-+ netif_set_real_num_tx_queues(net, nvdev->num_chn);
-+ netif_set_real_num_rx_queues(net, nvdev->num_chn);
-+ dev_info(&dev->device, "real num tx,rx queues:%u, %u\n",
-+ net->real_num_tx_queues, net->real_num_rx_queues);
-+
- ret = register_netdev(net);
- if (ret != 0) {
- pr_err("Unable to register netdev.\n");
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 143a98caf618..d92cfbe43410 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -31,7 +31,7 @@
- #include "hyperv_net.h"
-
-
--#define RNDIS_EXT_LEN 100
-+#define RNDIS_EXT_LEN PAGE_SIZE
- struct rndis_request {
- struct list_head list_ent;
- struct completion wait_event;
-@@ -94,6 +94,8 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
- rndis_msg->ndis_msg_type = msg_type;
- rndis_msg->msg_len = msg_len;
-
-+ request->pkt.q_idx = 0;
-+
- /*
- * Set the request id. This field is always after the rndis header for
- * request/response packet types so we just used the SetRequest as a
-@@ -509,6 +511,19 @@ static int rndis_filter_query_device(struct rndis_device *dev, u32 oid,
- query->info_buflen = 0;
- query->dev_vc_handle = 0;
-
-+ if (oid == OID_GEN_RECEIVE_SCALE_CAPABILITIES) {
-+ struct ndis_recv_scale_cap *cap;
-+
-+ request->request_msg.msg_len +=
-+ sizeof(struct ndis_recv_scale_cap);
-+ query->info_buflen = sizeof(struct ndis_recv_scale_cap);
-+ cap = (struct ndis_recv_scale_cap *)((unsigned long)query +
-+ query->info_buf_offset);
-+ cap->hdr.type = NDIS_OBJECT_TYPE_RSS_CAPABILITIES;
-+ cap->hdr.rev = NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
-+ cap->hdr.size = sizeof(struct ndis_recv_scale_cap);
-+ }
-+
- ret = rndis_filter_send_request(dev, request);
- if (ret != 0)
- goto cleanup;
-@@ -695,6 +710,89 @@ cleanup:
- return ret;
- }
-
-+u8 netvsc_hash_key[HASH_KEYLEN] = {
-+ 0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2,
-+ 0x41, 0x67, 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0,
-+ 0xd0, 0xca, 0x2b, 0xcb, 0xae, 0x7b, 0x30, 0xb4,
-+ 0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30, 0xf2, 0x0c,
-+ 0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa
-+};
-+
-+int rndis_filter_set_rss_param(struct rndis_device *rdev, int num_queue)
-+{
-+ struct net_device *ndev = rdev->net_dev->ndev;
-+ struct rndis_request *request;
-+ struct rndis_set_request *set;
-+ struct rndis_set_complete *set_complete;
-+ u32 extlen = sizeof(struct ndis_recv_scale_param) +
-+ 4*ITAB_NUM + HASH_KEYLEN;
-+ struct ndis_recv_scale_param *rssp;
-+ u32 *itab;
-+ u8 *keyp;
-+ int i, t, ret;
-+
-+ request = get_rndis_request(
-+ rdev, RNDIS_MSG_SET,
-+ RNDIS_MESSAGE_SIZE(struct rndis_set_request) + extlen);
-+ if (!request)
-+ return -ENOMEM;
-+
-+ set = &request->request_msg.msg.set_req;
-+ set->oid = OID_GEN_RECEIVE_SCALE_PARAMETERS;
-+ set->info_buflen = extlen;
-+ set->info_buf_offset = sizeof(struct rndis_set_request);
-+ set->dev_vc_handle = 0;
-+
-+ rssp = (struct ndis_recv_scale_param *)(set + 1);
-+ rssp->hdr.type = NDIS_OBJECT_TYPE_RSS_PARAMETERS;
-+ rssp->hdr.rev = NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2;
-+ rssp->hdr.size = sizeof(struct ndis_recv_scale_param);
-+ rssp->flag = 0;
-+ rssp->hashinfo = NDIS_HASH_FUNC_TOEPLITZ | NDIS_HASH_IPV4 |
-+ NDIS_HASH_TCP_IPV4;
-+ rssp->indirect_tabsize = 4*ITAB_NUM;
-+ rssp->indirect_taboffset = sizeof(struct ndis_recv_scale_param);
-+ rssp->hashkey_size = HASH_KEYLEN;
-+ rssp->kashkey_offset = rssp->indirect_taboffset +
-+ rssp->indirect_tabsize;
-+
-+ /* Set indirection table entries */
-+ itab = (u32 *)(rssp + 1);
-+ for (i = 0; i < ITAB_NUM; i++)
-+ itab[i] = i % num_queue;
-+
-+ /* Set hask key values */
-+ keyp = (u8 *)((unsigned long)rssp + rssp->kashkey_offset);
-+ for (i = 0; i < HASH_KEYLEN; i++)
-+ keyp[i] = netvsc_hash_key[i];
-+
-+
-+ ret = rndis_filter_send_request(rdev, request);
-+ if (ret != 0)
-+ goto cleanup;
-+
-+ t = wait_for_completion_timeout(&request->wait_event, 5*HZ);
-+ if (t == 0) {
-+ netdev_err(ndev, "timeout before we got a set response...\n");
-+ /* can't put_rndis_request, since we may still receive a
-+ * send-completion.
-+ */
-+ return -ETIMEDOUT;
-+ } else {
-+ set_complete = &request->response_msg.msg.set_complete;
-+ if (set_complete->status != RNDIS_STATUS_SUCCESS) {
-+ netdev_err(ndev, "Fail to set RSS parameters:0x%x\n",
-+ set_complete->status);
-+ ret = -EINVAL;
-+ }
-+ }
-+
-+cleanup:
-+ put_rndis_request(rdev, request);
-+ return ret;
-+}
-+
-+
- static int rndis_filter_query_device_link_status(struct rndis_device *dev)
- {
- u32 size = sizeof(u32);
-@@ -886,6 +984,28 @@ static int rndis_filter_close_device(struct rndis_device *dev)
- return ret;
- }
-
-+static void netvsc_sc_open(struct vmbus_channel *new_sc)
-+{
-+ struct netvsc_device *nvscdev;
-+ u16 chn_index = new_sc->offermsg.offer.sub_channel_index;
-+ int ret;
-+
-+ nvscdev = hv_get_drvdata(new_sc->primary_channel->device_obj);
-+
-+ if (chn_index >= nvscdev->num_chn)
-+ return;
-+
-+ set_per_channel_state(new_sc, nvscdev->sub_cb_buf + (chn_index - 1) *
-+ NETVSC_PACKET_SIZE);
-+
-+ ret = vmbus_open(new_sc, nvscdev->ring_size * PAGE_SIZE,
-+ nvscdev->ring_size * PAGE_SIZE, NULL, 0,
-+ netvsc_channel_cb, new_sc);
-+
-+ if (ret == 0)
-+ nvscdev->chn_table[chn_index] = new_sc;
-+}
-+
- int rndis_filter_device_add(struct hv_device *dev,
- void *additional_info)
- {
-@@ -894,6 +1014,10 @@ int rndis_filter_device_add(struct hv_device *dev,
- struct rndis_device *rndis_device;
- struct netvsc_device_info *device_info = additional_info;
- struct ndis_offload_params offloads;
-+ struct nvsp_message *init_packet;
-+ int t;
-+ struct ndis_recv_scale_cap rsscap;
-+ u32 rsscap_size = sizeof(struct ndis_recv_scale_cap);
-
- rndis_device = get_rndis_device();
- if (!rndis_device)
-@@ -913,6 +1037,7 @@ int rndis_filter_device_add(struct hv_device *dev,
-
- /* Initialize the rndis device */
- net_device = hv_get_drvdata(dev);
-+ net_device->num_chn = 1;
-
- net_device->extension = rndis_device;
- rndis_device->net_dev = net_device;
-@@ -952,7 +1077,6 @@ int rndis_filter_device_add(struct hv_device *dev,
- if (ret)
- goto err_dev_remv;
-
--
- rndis_filter_query_device_link_status(rndis_device);
-
- device_info->link_state = rndis_device->link_state;
-@@ -961,7 +1085,66 @@ int rndis_filter_device_add(struct hv_device *dev,
- rndis_device->hw_mac_adr,
- device_info->link_state ? "down" : "up");
-
-- return ret;
-+ if (net_device->nvsp_version < NVSP_PROTOCOL_VERSION_5)
-+ return 0;
-+
-+ /* vRSS setup */
-+ memset(&rsscap, 0, rsscap_size);
-+ ret = rndis_filter_query_device(rndis_device,
-+ OID_GEN_RECEIVE_SCALE_CAPABILITIES,
-+ &rsscap, &rsscap_size);
-+ if (ret || rsscap.num_recv_que < 2)
-+ goto out;
-+
-+ net_device->num_chn = (num_online_cpus() < rsscap.num_recv_que) ?
-+ num_online_cpus() : rsscap.num_recv_que;
-+ if (net_device->num_chn == 1)
-+ goto out;
-+
-+ net_device->sub_cb_buf = vzalloc((net_device->num_chn - 1) *
-+ NETVSC_PACKET_SIZE);
-+ if (!net_device->sub_cb_buf) {
-+ net_device->num_chn = 1;
-+ dev_info(&dev->device, "No memory for subchannels.\n");
-+ goto out;
-+ }
-+
-+ vmbus_set_sc_create_callback(dev->channel, netvsc_sc_open);
-+
-+ init_packet = &net_device->channel_init_pkt;
-+ memset(init_packet, 0, sizeof(struct nvsp_message));
-+ init_packet->hdr.msg_type = NVSP_MSG5_TYPE_SUBCHANNEL;
-+ init_packet->msg.v5_msg.subchn_req.op = NVSP_SUBCHANNEL_ALLOCATE;
-+ init_packet->msg.v5_msg.subchn_req.num_subchannels =
-+ net_device->num_chn - 1;
-+ ret = vmbus_sendpacket(dev->channel, init_packet,
-+ sizeof(struct nvsp_message),
-+ (unsigned long)init_packet,
-+ VM_PKT_DATA_INBAND,
-+ VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
-+ if (ret)
-+ goto out;
-+ t = wait_for_completion_timeout(&net_device->channel_init_wait, 5*HZ);
-+ if (t == 0) {
-+ ret = -ETIMEDOUT;
-+ goto out;
-+ }
-+ if (init_packet->msg.v5_msg.subchn_comp.status !=
-+ NVSP_STAT_SUCCESS) {
-+ ret = -ENODEV;
-+ goto out;
-+ }
-+ net_device->num_chn = 1 +
-+ init_packet->msg.v5_msg.subchn_comp.num_subchannels;
-+
-+ vmbus_are_subchannels_present(dev->channel);
-+
-+ ret = rndis_filter_set_rss_param(rndis_device, net_device->num_chn);
-+
-+out:
-+ if (ret)
-+ net_device->num_chn = 1;
-+ return 0; /* return 0 because primary channel can be used alone */
-
- err_dev_remv:
- rndis_filter_device_remove(dev);
---
-2.4.3
-
+++ /dev/null
-From 348a5d691d84759dda8cdd3cbf9f071115c1240e Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 16 Feb 2014 16:38:44 -0800
-Subject: [PATCH 02/25] Drivers: net: hyperv: Cleanup the receive path
-
-Make the receive path a little more efficient by parameterizing the
-required state rather than re-establishing that state.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 29 +++++++++++++----------------
- 1 file changed, 13 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 03a2c6e17158..7fa2bbade327 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -432,17 +432,14 @@ static inline u32 hv_ringbuf_avail_percent(
- return avail_write * 100 / ring_info->ring_datasize;
- }
-
--static void netvsc_send_completion(struct hv_device *device,
-+static void netvsc_send_completion(struct netvsc_device *net_device,
-+ struct hv_device *device,
- struct vmpacket_descriptor *packet)
- {
-- struct netvsc_device *net_device;
- struct nvsp_message *nvsp_packet;
- struct hv_netvsc_packet *nvsc_packet;
- struct net_device *ndev;
-
-- net_device = get_inbound_net_device(device);
-- if (!net_device)
-- return;
- ndev = net_device->ndev;
-
- nvsp_packet = (struct nvsp_message *)((unsigned long)packet +
-@@ -561,13 +558,13 @@ int netvsc_send(struct hv_device *device,
- }
-
- static void netvsc_send_recv_completion(struct hv_device *device,
-+ struct netvsc_device *net_device,
- u64 transaction_id, u32 status)
- {
- struct nvsp_message recvcompMessage;
- int retries = 0;
- int ret;
- struct net_device *ndev;
-- struct netvsc_device *net_device = hv_get_drvdata(device);
-
- ndev = net_device->ndev;
-
-@@ -653,14 +650,15 @@ static void netvsc_receive_completion(void *context)
-
- /* Send a receive completion for the xfer page packet */
- if (fsend_receive_comp)
-- netvsc_send_recv_completion(device, transaction_id, status);
-+ netvsc_send_recv_completion(device, net_device, transaction_id,
-+ status);
-
- }
-
--static void netvsc_receive(struct hv_device *device,
-- struct vmpacket_descriptor *packet)
-+static void netvsc_receive(struct netvsc_device *net_device,
-+ struct hv_device *device,
-+ struct vmpacket_descriptor *packet)
- {
-- struct netvsc_device *net_device;
- struct vmtransfer_page_packet_header *vmxferpage_packet;
- struct nvsp_message *nvsp_packet;
- struct hv_netvsc_packet *netvsc_packet = NULL;
-@@ -673,9 +671,6 @@ static void netvsc_receive(struct hv_device *device,
-
- LIST_HEAD(listHead);
-
-- net_device = get_inbound_net_device(device);
-- if (!net_device)
-- return;
- ndev = net_device->ndev;
-
- /*
-@@ -741,7 +736,7 @@ static void netvsc_receive(struct hv_device *device,
- spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
- flags);
-
-- netvsc_send_recv_completion(device,
-+ netvsc_send_recv_completion(device, net_device,
- vmxferpage_packet->d.trans_id,
- NVSP_STAT_FAIL);
-
-@@ -825,11 +820,13 @@ static void netvsc_channel_cb(void *context)
- desc = (struct vmpacket_descriptor *)buffer;
- switch (desc->type) {
- case VM_PKT_COMP:
-- netvsc_send_completion(device, desc);
-+ netvsc_send_completion(net_device,
-+ device, desc);
- break;
-
- case VM_PKT_DATA_USING_XFER_PAGES:
-- netvsc_receive(device, desc);
-+ netvsc_receive(net_device,
-+ device, desc);
- break;
-
- default:
---
-2.4.3
-
+++ /dev/null
-From 4baab26129e0540746744232022110dbe9e011e7 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 14:54:43 -0700
-Subject: [PATCH 02/11] hyperv: Remove recv_pkt_list and lock
-
-Removed recv_pkt_list and lock, and updated related code, so that
-the locking overhead is reduced especially when multiple channels
-are in use.
-
-The recv_pkt_list isn't actually necessary because the packets are
-processed sequentially in each channel. It has been replaced by a
-local variable, and the related lock for this list is also removed.
-The is_data_pkt field is not used in receive path, so its assignment
-is cleaned up.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 33 --------
- drivers/net/hyperv/netvsc.c | 174 +++-----------------------------------
- drivers/net/hyperv/netvsc_drv.c | 2 +-
- drivers/net/hyperv/rndis_filter.c | 2 -
- 4 files changed, 13 insertions(+), 198 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 57eb3f906d64..a1af0f7711e2 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -119,27 +119,14 @@ struct ndis_recv_scale_param { /* NDIS_RECEIVE_SCALE_PARAMETERS */
- };
-
- /* Fwd declaration */
--struct hv_netvsc_packet;
- struct ndis_tcp_ip_checksum_info;
-
--/* Represent the xfer page packet which contains 1 or more netvsc packet */
--struct xferpage_packet {
-- struct list_head list_ent;
-- u32 status;
--
-- /* # of netvsc packets this xfer packet contains */
-- u32 count;
--
-- struct vmbus_channel *channel;
--};
--
- /*
- * Represent netvsc packet which contains 1 RNDIS and 1 ethernet frame
- * within the RNDIS
- */
- struct hv_netvsc_packet {
- /* Bookkeeping stuff */
-- struct list_head list_ent;
- u32 status;
-
- struct hv_device *device;
-@@ -149,19 +136,8 @@ struct hv_netvsc_packet {
- u16 q_idx;
- struct vmbus_channel *channel;
-
-- /*
-- * Valid only for receives when we break a xfer page packet
-- * into multiple netvsc packets
-- */
-- struct xferpage_packet *xfer_page_pkt;
--
- union {
- struct {
-- u64 recv_completion_tid;
-- void *recv_completion_ctx;
-- void (*recv_completion)(void *context);
-- } recv;
-- struct {
- u64 send_completion_tid;
- void *send_completion_ctx;
- void (*send_completion)(void *context);
-@@ -613,9 +589,6 @@ struct nvsp_message {
-
- #define NETVSC_RECEIVE_BUFFER_ID 0xcafe
-
--/* Preallocated receive packets */
--#define NETVSC_RECEIVE_PACKETLIST_COUNT 256
--
- #define NETVSC_PACKET_SIZE 2048
-
- #define VRSS_SEND_TAB_SIZE 16
-@@ -630,12 +603,6 @@ struct netvsc_device {
- wait_queue_head_t wait_drain;
- bool start_remove;
- bool destroy;
-- /*
-- * List of free preallocated hv_netvsc_packet to represent receive
-- * packet
-- */
-- struct list_head recv_pkt_list;
-- spinlock_t recv_pkt_list_lock;
-
- /* Receive buffer allocated by us but manages by NetVSP */
- void *recv_buf;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index e7e77f12bc38..b10334773b32 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -387,7 +387,6 @@ static void netvsc_disconnect_vsp(struct netvsc_device *net_device)
- int netvsc_device_remove(struct hv_device *device)
- {
- struct netvsc_device *net_device;
-- struct hv_netvsc_packet *netvsc_packet, *pos;
- unsigned long flags;
-
- net_device = hv_get_drvdata(device);
-@@ -416,12 +415,6 @@ int netvsc_device_remove(struct hv_device *device)
- vmbus_close(device->channel);
-
- /* Release all resources */
-- list_for_each_entry_safe(netvsc_packet, pos,
-- &net_device->recv_pkt_list, list_ent) {
-- list_del(&netvsc_packet->list_ent);
-- kfree(netvsc_packet);
-- }
--
- if (net_device->sub_cb_buf)
- vfree(net_device->sub_cb_buf);
-
-@@ -641,62 +634,6 @@ retry_send_cmplt:
- }
- }
-
--/* Send a receive completion packet to RNDIS device (ie NetVsp) */
--static void netvsc_receive_completion(void *context)
--{
-- struct hv_netvsc_packet *packet = context;
-- struct hv_device *device = packet->device;
-- struct vmbus_channel *channel;
-- struct netvsc_device *net_device;
-- u64 transaction_id = 0;
-- bool fsend_receive_comp = false;
-- unsigned long flags;
-- struct net_device *ndev;
-- u32 status = NVSP_STAT_NONE;
--
-- /*
-- * Even though it seems logical to do a GetOutboundNetDevice() here to
-- * send out receive completion, we are using GetInboundNetDevice()
-- * since we may have disable outbound traffic already.
-- */
-- net_device = get_inbound_net_device(device);
-- if (!net_device)
-- return;
-- ndev = net_device->ndev;
--
-- /* Overloading use of the lock. */
-- spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
--
-- if (packet->status != NVSP_STAT_SUCCESS)
-- packet->xfer_page_pkt->status = NVSP_STAT_FAIL;
--
-- packet->xfer_page_pkt->count--;
--
-- /*
-- * Last one in the line that represent 1 xfer page packet.
-- * Return the xfer page packet itself to the freelist
-- */
-- if (packet->xfer_page_pkt->count == 0) {
-- fsend_receive_comp = true;
-- channel = packet->xfer_page_pkt->channel;
-- transaction_id = packet->completion.recv.recv_completion_tid;
-- status = packet->xfer_page_pkt->status;
-- list_add_tail(&packet->xfer_page_pkt->list_ent,
-- &net_device->recv_pkt_list);
--
-- }
--
-- /* Put the packet back */
-- list_add_tail(&packet->list_ent, &net_device->recv_pkt_list);
-- spin_unlock_irqrestore(&net_device->recv_pkt_list_lock, flags);
--
-- /* Send a receive completion for the xfer page packet */
-- if (fsend_receive_comp)
-- netvsc_send_recv_completion(device, channel, net_device,
-- transaction_id, status);
--
--}
--
- static void netvsc_receive(struct netvsc_device *net_device,
- struct vmbus_channel *channel,
- struct hv_device *device,
-@@ -704,16 +641,13 @@ static void netvsc_receive(struct netvsc_device *net_device,
- {
- struct vmtransfer_page_packet_header *vmxferpage_packet;
- struct nvsp_message *nvsp_packet;
-- struct hv_netvsc_packet *netvsc_packet = NULL;
-- /* struct netvsc_driver *netvscDriver; */
-- struct xferpage_packet *xferpage_packet = NULL;
-+ struct hv_netvsc_packet nv_pkt;
-+ struct hv_netvsc_packet *netvsc_packet = &nv_pkt;
-+ u32 status = NVSP_STAT_SUCCESS;
- int i;
- int count = 0;
-- unsigned long flags;
- struct net_device *ndev;
-
-- LIST_HEAD(listHead);
--
- ndev = net_device->ndev;
-
- /*
-@@ -746,78 +680,14 @@ static void netvsc_receive(struct netvsc_device *net_device,
- return;
- }
-
-- /*
-- * Grab free packets (range count + 1) to represent this xfer
-- * page packet. +1 to represent the xfer page packet itself.
-- * We grab it here so that we know exactly how many we can
-- * fulfil
-- */
-- spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
-- while (!list_empty(&net_device->recv_pkt_list)) {
-- list_move_tail(net_device->recv_pkt_list.next, &listHead);
-- if (++count == vmxferpage_packet->range_cnt + 1)
-- break;
-- }
-- spin_unlock_irqrestore(&net_device->recv_pkt_list_lock, flags);
--
-- /*
-- * We need at least 2 netvsc pkts (1 to represent the xfer
-- * page and at least 1 for the range) i.e. we can handled
-- * some of the xfer page packet ranges...
-- */
-- if (count < 2) {
-- netdev_err(ndev, "Got only %d netvsc pkt...needed "
-- "%d pkts. Dropping this xfer page packet completely!\n",
-- count, vmxferpage_packet->range_cnt + 1);
--
-- /* Return it to the freelist */
-- spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
-- for (i = count; i != 0; i--) {
-- list_move_tail(listHead.next,
-- &net_device->recv_pkt_list);
-- }
-- spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
-- flags);
--
-- netvsc_send_recv_completion(device, channel, net_device,
-- vmxferpage_packet->d.trans_id,
-- NVSP_STAT_FAIL);
--
-- return;
-- }
--
-- /* Remove the 1st packet to represent the xfer page packet itself */
-- xferpage_packet = (struct xferpage_packet *)listHead.next;
-- list_del(&xferpage_packet->list_ent);
-- xferpage_packet->status = NVSP_STAT_SUCCESS;
-- xferpage_packet->channel = channel;
--
-- /* This is how much we can satisfy */
-- xferpage_packet->count = count - 1;
--
-- if (xferpage_packet->count != vmxferpage_packet->range_cnt) {
-- netdev_err(ndev, "Needed %d netvsc pkts to satisfy "
-- "this xfer page...got %d\n",
-- vmxferpage_packet->range_cnt, xferpage_packet->count);
-- }
-+ count = vmxferpage_packet->range_cnt;
-+ netvsc_packet->device = device;
-+ netvsc_packet->channel = channel;
-
- /* Each range represents 1 RNDIS pkt that contains 1 ethernet frame */
-- for (i = 0; i < (count - 1); i++) {
-- netvsc_packet = (struct hv_netvsc_packet *)listHead.next;
-- list_del(&netvsc_packet->list_ent);
--
-+ for (i = 0; i < count; i++) {
- /* Initialize the netvsc packet */
- netvsc_packet->status = NVSP_STAT_SUCCESS;
-- netvsc_packet->xfer_page_pkt = xferpage_packet;
-- netvsc_packet->completion.recv.recv_completion =
-- netvsc_receive_completion;
-- netvsc_packet->completion.recv.recv_completion_ctx =
-- netvsc_packet;
-- netvsc_packet->device = device;
-- /* Save this so that we can send it back */
-- netvsc_packet->completion.recv.recv_completion_tid =
-- vmxferpage_packet->d.trans_id;
--
- netvsc_packet->data = (void *)((unsigned long)net_device->
- recv_buf + vmxferpage_packet->ranges[i].byte_offset);
- netvsc_packet->total_data_buflen =
-@@ -826,10 +696,12 @@ static void netvsc_receive(struct netvsc_device *net_device,
- /* Pass it to the upper layer */
- rndis_filter_receive(device, netvsc_packet);
-
-- netvsc_receive_completion(netvsc_packet->
-- completion.recv.recv_completion_ctx);
-+ if (netvsc_packet->status != NVSP_STAT_SUCCESS)
-+ status = NVSP_STAT_FAIL;
- }
-
-+ netvsc_send_recv_completion(device, channel, net_device,
-+ vmxferpage_packet->d.trans_id, status);
- }
-
-
-@@ -956,11 +828,9 @@ void netvsc_channel_cb(void *context)
- int netvsc_device_add(struct hv_device *device, void *additional_info)
- {
- int ret = 0;
-- int i;
- int ring_size =
- ((struct netvsc_device_info *)additional_info)->ring_size;
- struct netvsc_device *net_device;
-- struct hv_netvsc_packet *packet, *pos;
- struct net_device *ndev;
-
- net_device = alloc_net_device(device);
-@@ -981,18 +851,6 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
- ndev = net_device->ndev;
-
- /* Initialize the NetVSC channel extension */
-- spin_lock_init(&net_device->recv_pkt_list_lock);
--
-- INIT_LIST_HEAD(&net_device->recv_pkt_list);
--
-- for (i = 0; i < NETVSC_RECEIVE_PACKETLIST_COUNT; i++) {
-- packet = kzalloc(sizeof(struct hv_netvsc_packet), GFP_KERNEL);
-- if (!packet)
-- break;
--
-- list_add_tail(&packet->list_ent,
-- &net_device->recv_pkt_list);
-- }
- init_completion(&net_device->channel_init_wait);
-
- set_per_channel_state(device->channel, net_device->cb_buffer);
-@@ -1028,16 +886,8 @@ close:
-
- cleanup:
-
-- if (net_device) {
-- list_for_each_entry_safe(packet, pos,
-- &net_device->recv_pkt_list,
-- list_ent) {
-- list_del(&packet->list_ent);
-- kfree(packet);
-- }
--
-+ if (net_device)
- kfree(net_device);
-- }
-
- return ret;
- }
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 093cf3fc46b8..8f6d53a2ed95 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -638,7 +638,7 @@ int netvsc_recv_callback(struct hv_device *device_obj,
- __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
- packet->vlan_tci);
-
-- skb_record_rx_queue(skb, packet->xfer_page_pkt->channel->
-+ skb_record_rx_queue(skb, packet->channel->
- offermsg.offer.sub_channel_index %
- net->real_num_rx_queues);
-
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index d92cfbe43410..48f5a0fbd674 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -401,8 +401,6 @@ static void rndis_filter_receive_data(struct rndis_device *dev,
- pkt->total_data_buflen = rndis_pkt->data_len;
- pkt->data = (void *)((unsigned long)pkt->data + data_offset);
-
-- pkt->is_data_pkt = true;
--
- vlan = rndis_get_ppi(rndis_pkt, IEEE_8021Q_INFO);
- if (vlan) {
- pkt->vlan_tci = VLAN_TAG_PRESENT | vlan->vlanid |
---
-2.4.3
-
+++ /dev/null
-From c9f2db35ac4f789930522d9d36200cb71b442bed Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 16 Feb 2014 16:38:45 -0800
-Subject: [PATCH 03/25] Drivers: net: hyperv: Cleanup the netvsc receive
- callback functio
-
-Get rid of the buffer allocation in the receive path for normal packets.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 2 ++
- drivers/net/hyperv/netvsc.c | 33 ++++++++++-----------------------
- 2 files changed, 12 insertions(+), 23 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 7645ba38bde8..01a16ea77a5a 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -506,6 +506,8 @@ struct netvsc_device {
-
- /* Holds rndis device info */
- void *extension;
-+ /* The recive buffer for this device */
-+ unsigned char cb_buffer[NETVSC_PACKET_SIZE];
- };
-
- /* NdisInitialize message */
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 7fa2bbade327..9a0e9c6f1414 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -795,22 +795,16 @@ static void netvsc_channel_cb(void *context)
- struct netvsc_device *net_device;
- u32 bytes_recvd;
- u64 request_id;
-- unsigned char *packet;
- struct vmpacket_descriptor *desc;
- unsigned char *buffer;
- int bufferlen = NETVSC_PACKET_SIZE;
- struct net_device *ndev;
-
-- packet = kzalloc(NETVSC_PACKET_SIZE * sizeof(unsigned char),
-- GFP_ATOMIC);
-- if (!packet)
-- return;
-- buffer = packet;
--
- net_device = get_inbound_net_device(device);
- if (!net_device)
-- goto out;
-+ return;
- ndev = net_device->ndev;
-+ buffer = net_device->cb_buffer;
-
- do {
- ret = vmbus_recvpacket_raw(device->channel, buffer, bufferlen,
-@@ -838,23 +832,16 @@ static void netvsc_channel_cb(void *context)
- break;
- }
-
-- /* reset */
-- if (bufferlen > NETVSC_PACKET_SIZE) {
-- kfree(buffer);
-- buffer = packet;
-- bufferlen = NETVSC_PACKET_SIZE;
-- }
- } else {
-- /* reset */
-- if (bufferlen > NETVSC_PACKET_SIZE) {
-- kfree(buffer);
-- buffer = packet;
-- bufferlen = NETVSC_PACKET_SIZE;
-- }
--
-+ /*
-+ * We are done for this pass.
-+ */
- break;
- }
-+
- } else if (ret == -ENOBUFS) {
-+ if (bufferlen > NETVSC_PACKET_SIZE)
-+ kfree(buffer);
- /* Handle large packet */
- buffer = kmalloc(bytes_recvd, GFP_ATOMIC);
- if (buffer == NULL) {
-@@ -869,8 +856,8 @@ static void netvsc_channel_cb(void *context)
- }
- } while (1);
-
--out:
-- kfree(buffer);
-+ if (bufferlen > NETVSC_PACKET_SIZE)
-+ kfree(buffer);
- return;
- }
-
---
-2.4.3
-
+++ /dev/null
-From 893f66277799cd46bdf97429cc5d16a815a51273 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 14:54:44 -0700
-Subject: [PATCH 03/11] hyperv: Simplify the send_completion variables
-
-The union contains only one member now, so we use the variables in it directly.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 10 +++-------
- drivers/net/hyperv/netvsc.c | 7 +++----
- drivers/net/hyperv/netvsc_drv.c | 8 ++++----
- drivers/net/hyperv/rndis_filter.c | 2 +-
- 4 files changed, 11 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index a1af0f7711e2..d1f7826aa75f 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -136,13 +136,9 @@ struct hv_netvsc_packet {
- u16 q_idx;
- struct vmbus_channel *channel;
-
-- union {
-- struct {
-- u64 send_completion_tid;
-- void *send_completion_ctx;
-- void (*send_completion)(void *context);
-- } send;
-- } completion;
-+ u64 send_completion_tid;
-+ void *send_completion_ctx;
-+ void (*send_completion)(void *context);
-
- /* This points to the memory after page_buf */
- struct rndis_message *rndis_msg;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index b10334773b32..bbee44635035 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -479,9 +479,8 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- if (nvsc_packet) {
- q_idx = nvsc_packet->q_idx;
- channel = nvsc_packet->channel;
-- nvsc_packet->completion.send.send_completion(
-- nvsc_packet->completion.send.
-- send_completion_ctx);
-+ nvsc_packet->send_completion(nvsc_packet->
-+ send_completion_ctx);
- }
-
- num_outstanding_sends =
-@@ -534,7 +533,7 @@ int netvsc_send(struct hv_device *device,
- 0xFFFFFFFF;
- sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = 0;
-
-- if (packet->completion.send.send_completion)
-+ if (packet->send_completion)
- req_id = (ulong)packet;
- else
- req_id = 0;
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 8f6d53a2ed95..c76b66515e92 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -235,7 +235,7 @@ static void netvsc_xmit_completion(void *context)
- {
- struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
- struct sk_buff *skb = (struct sk_buff *)
-- (unsigned long)packet->completion.send.send_completion_tid;
-+ (unsigned long)packet->send_completion_tid;
-
- kfree(packet);
-
-@@ -425,9 +425,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- (num_data_pgs * sizeof(struct hv_page_buffer)));
-
- /* Set the completion routine */
-- packet->completion.send.send_completion = netvsc_xmit_completion;
-- packet->completion.send.send_completion_ctx = packet;
-- packet->completion.send.send_completion_tid = (unsigned long)skb;
-+ packet->send_completion = netvsc_xmit_completion;
-+ packet->send_completion_ctx = packet;
-+ packet->send_completion_tid = (unsigned long)skb;
-
- isvlan = packet->vlan_tci & VLAN_TAG_PRESENT;
-
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 48f5a0fbd674..99c527adae5b 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -236,7 +236,7 @@ static int rndis_filter_send_request(struct rndis_device *dev,
- packet->page_buf[0].len;
- }
-
-- packet->completion.send.send_completion = NULL;
-+ packet->send_completion = NULL;
-
- ret = netvsc_send(dev->net_dev->dev, packet);
- return ret;
---
-2.4.3
-
+++ /dev/null
-From 3c2a271d9681cc017947c5e027acc64707c30dee Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Wed, 19 Feb 2014 15:49:45 -0800
-Subject: [PATCH 04/25] hyperv: Add latest NetVSP versions to auto negotiation
-
-It auto negotiates the highest NetVSP version supported by both guest and host.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 53 +++++++++++++++++++++++++++++++++++++++++
- drivers/net/hyperv/netvsc.c | 25 ++++++++++++-------
- drivers/net/hyperv/netvsc_drv.c | 2 +-
- 3 files changed, 70 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 01a16ea77a5a..39fc230f5c20 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -139,6 +139,8 @@ int rndis_filter_set_device_mac(struct hv_device *hdev, char *mac);
-
- #define NVSP_PROTOCOL_VERSION_1 2
- #define NVSP_PROTOCOL_VERSION_2 0x30002
-+#define NVSP_PROTOCOL_VERSION_4 0x40000
-+#define NVSP_PROTOCOL_VERSION_5 0x50000
-
- enum {
- NVSP_MSG_TYPE_NONE = 0,
-@@ -193,6 +195,23 @@ enum {
-
- NVSP_MSG2_TYPE_ALLOC_CHIMNEY_HANDLE,
- NVSP_MSG2_TYPE_ALLOC_CHIMNEY_HANDLE_COMP,
-+
-+ NVSP_MSG2_MAX = NVSP_MSG2_TYPE_ALLOC_CHIMNEY_HANDLE_COMP,
-+
-+ /* Version 4 messages */
-+ NVSP_MSG4_TYPE_SEND_VF_ASSOCIATION,
-+ NVSP_MSG4_TYPE_SWITCH_DATA_PATH,
-+ NVSP_MSG4_TYPE_UPLINK_CONNECT_STATE_DEPRECATED,
-+
-+ NVSP_MSG4_MAX = NVSP_MSG4_TYPE_UPLINK_CONNECT_STATE_DEPRECATED,
-+
-+ /* Version 5 messages */
-+ NVSP_MSG5_TYPE_OID_QUERY_EX,
-+ NVSP_MSG5_TYPE_OID_QUERY_EX_COMP,
-+ NVSP_MSG5_TYPE_SUBCHANNEL,
-+ NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE,
-+
-+ NVSP_MSG5_MAX = NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE,
- };
-
- enum {
-@@ -447,10 +466,44 @@ union nvsp_2_message_uber {
- struct nvsp_2_free_rxbuf free_rxbuf;
- } __packed;
-
-+enum nvsp_subchannel_operation {
-+ NVSP_SUBCHANNEL_NONE = 0,
-+ NVSP_SUBCHANNEL_ALLOCATE,
-+ NVSP_SUBCHANNEL_MAX
-+};
-+
-+struct nvsp_5_subchannel_request {
-+ u32 op;
-+ u32 num_subchannels;
-+} __packed;
-+
-+struct nvsp_5_subchannel_complete {
-+ u32 status;
-+ u32 num_subchannels; /* Actual number of subchannels allocated */
-+} __packed;
-+
-+struct nvsp_5_send_indirect_table {
-+ /* The number of entries in the send indirection table */
-+ u32 count;
-+
-+ /* The offset of the send indireciton table from top of this struct.
-+ * The send indirection table tells which channel to put the send
-+ * traffic on. Each entry is a channel number.
-+ */
-+ u32 offset;
-+} __packed;
-+
-+union nvsp_5_message_uber {
-+ struct nvsp_5_subchannel_request subchn_req;
-+ struct nvsp_5_subchannel_complete subchn_comp;
-+ struct nvsp_5_send_indirect_table send_table;
-+} __packed;
-+
- union nvsp_all_messages {
- union nvsp_message_init_uber init_msg;
- union nvsp_1_message_uber v1_msg;
- union nvsp_2_message_uber v2_msg;
-+ union nvsp_5_message_uber v5_msg;
- } __packed;
-
- /* ALL Messages */
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 9a0e9c6f1414..1a0280dcba7e 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -290,7 +290,7 @@ static int negotiate_nvsp_ver(struct hv_device *device,
- NVSP_STAT_SUCCESS)
- return -EINVAL;
-
-- if (nvsp_ver != NVSP_PROTOCOL_VERSION_2)
-+ if (nvsp_ver == NVSP_PROTOCOL_VERSION_1)
- return 0;
-
- /* NVSPv2 only: Send NDIS config */
-@@ -314,6 +314,9 @@ static int netvsc_connect_vsp(struct hv_device *device)
- struct nvsp_message *init_packet;
- int ndis_version;
- struct net_device *ndev;
-+ u32 ver_list[] = { NVSP_PROTOCOL_VERSION_1, NVSP_PROTOCOL_VERSION_2,
-+ NVSP_PROTOCOL_VERSION_4, NVSP_PROTOCOL_VERSION_5 };
-+ int i, num_ver = 4; /* number of different NVSP versions */
-
- net_device = get_outbound_net_device(device);
- if (!net_device)
-@@ -323,13 +326,14 @@ static int netvsc_connect_vsp(struct hv_device *device)
- init_packet = &net_device->channel_init_pkt;
-
- /* Negotiate the latest NVSP protocol supported */
-- if (negotiate_nvsp_ver(device, net_device, init_packet,
-- NVSP_PROTOCOL_VERSION_2) == 0) {
-- net_device->nvsp_version = NVSP_PROTOCOL_VERSION_2;
-- } else if (negotiate_nvsp_ver(device, net_device, init_packet,
-- NVSP_PROTOCOL_VERSION_1) == 0) {
-- net_device->nvsp_version = NVSP_PROTOCOL_VERSION_1;
-- } else {
-+ for (i = num_ver - 1; i >= 0; i--)
-+ if (negotiate_nvsp_ver(device, net_device, init_packet,
-+ ver_list[i]) == 0) {
-+ net_device->nvsp_version = ver_list[i];
-+ break;
-+ }
-+
-+ if (i < 0) {
- ret = -EPROTO;
- goto cleanup;
- }
-@@ -339,7 +343,10 @@ static int netvsc_connect_vsp(struct hv_device *device)
- /* Send the ndis version */
- memset(init_packet, 0, sizeof(struct nvsp_message));
-
-- ndis_version = 0x00050001;
-+ if (net_device->nvsp_version <= NVSP_PROTOCOL_VERSION_4)
-+ ndis_version = 0x00050001;
-+ else
-+ ndis_version = 0x0006001e;
-
- init_packet->hdr.msg_type = NVSP_MSG1_TYPE_SEND_NDIS_VER;
- init_packet->msg.v1_msg.
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 28020f83ba6f..8e3a0b00099b 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -328,7 +328,7 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu)
- if (nvdev == NULL || nvdev->destroy)
- return -ENODEV;
-
-- if (nvdev->nvsp_version == NVSP_PROTOCOL_VERSION_2)
-+ if (nvdev->nvsp_version >= NVSP_PROTOCOL_VERSION_2)
- limit = NETVSC_MTU;
-
- if (mtu < 68 || mtu > limit)
---
-2.4.3
-
+++ /dev/null
-From c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 30 Apr 2014 10:14:31 -0700
-Subject: [PATCH 04/11] hyperv: Enable sendbuf mechanism on the send path
-
-We send packets using a copy-free mechanism (this is the Guest to Host transport
-via VMBUS). While this is obviously optimal for large packets,
-it may not be optimal for small packets. Hyper-V host supports
-a second mechanism for sending packets that is "copy based". We implement that
-mechanism in this patch.
-
-In this version of the patch I have addressed a comment from David Miller.
-
-With this patch (and all of the other offload and VRSS patches), we are now able
-to almost saturate a 10G interface between Linux VMs on Hyper-V
-on different hosts - close to 9 Gbps as measured via iperf.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 14 +++
- drivers/net/hyperv/netvsc.c | 226 ++++++++++++++++++++++++++++++++++++++--
- drivers/net/hyperv/netvsc_drv.c | 3 +-
- 3 files changed, 234 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index d1f7826aa75f..4b7df5a5c966 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -140,6 +140,8 @@ struct hv_netvsc_packet {
- void *send_completion_ctx;
- void (*send_completion)(void *context);
-
-+ u32 send_buf_index;
-+
- /* This points to the memory after page_buf */
- struct rndis_message *rndis_msg;
-
-@@ -582,6 +584,9 @@ struct nvsp_message {
-
- #define NETVSC_RECEIVE_BUFFER_SIZE (1024*1024*16) /* 16MB */
- #define NETVSC_RECEIVE_BUFFER_SIZE_LEGACY (1024*1024*15) /* 15MB */
-+#define NETVSC_SEND_BUFFER_SIZE (1024 * 1024) /* 1MB */
-+#define NETVSC_INVALID_INDEX -1
-+
-
- #define NETVSC_RECEIVE_BUFFER_ID 0xcafe
-
-@@ -607,6 +612,15 @@ struct netvsc_device {
- u32 recv_section_cnt;
- struct nvsp_1_receive_buffer_section *recv_section;
-
-+ /* Send buffer allocated by us */
-+ void *send_buf;
-+ u32 send_buf_size;
-+ u32 send_buf_gpadl_handle;
-+ u32 send_section_cnt;
-+ u32 send_section_size;
-+ unsigned long *send_section_map;
-+ int map_words;
-+
- /* Used for NetVSP initialization protocol */
- struct completion channel_init_wait;
- struct nvsp_message channel_init_pkt;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index bbee44635035..c041f63a6d30 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -28,6 +28,7 @@
- #include <linux/slab.h>
- #include <linux/netdevice.h>
- #include <linux/if_ether.h>
-+#include <asm/sync_bitops.h>
-
- #include "hyperv_net.h"
-
-@@ -80,7 +81,7 @@ get_in_err:
- }
-
-
--static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
-+static int netvsc_destroy_buf(struct netvsc_device *net_device)
- {
- struct nvsp_message *revoke_packet;
- int ret = 0;
-@@ -146,10 +147,62 @@ static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
- net_device->recv_section = NULL;
- }
-
-+ /* Deal with the send buffer we may have setup.
-+ * If we got a send section size, it means we received a
-+ * SendsendBufferComplete msg (ie sent
-+ * NvspMessage1TypeSendReceiveBuffer msg) therefore, we need
-+ * to send a revoke msg here
-+ */
-+ if (net_device->send_section_size) {
-+ /* Send the revoke receive buffer */
-+ revoke_packet = &net_device->revoke_packet;
-+ memset(revoke_packet, 0, sizeof(struct nvsp_message));
-+
-+ revoke_packet->hdr.msg_type =
-+ NVSP_MSG1_TYPE_REVOKE_SEND_BUF;
-+ revoke_packet->msg.v1_msg.revoke_recv_buf.id = 0;
-+
-+ ret = vmbus_sendpacket(net_device->dev->channel,
-+ revoke_packet,
-+ sizeof(struct nvsp_message),
-+ (unsigned long)revoke_packet,
-+ VM_PKT_DATA_INBAND, 0);
-+ /* If we failed here, we might as well return and
-+ * have a leak rather than continue and a bugchk
-+ */
-+ if (ret != 0) {
-+ netdev_err(ndev, "unable to send "
-+ "revoke send buffer to netvsp\n");
-+ return ret;
-+ }
-+ }
-+ /* Teardown the gpadl on the vsp end */
-+ if (net_device->send_buf_gpadl_handle) {
-+ ret = vmbus_teardown_gpadl(net_device->dev->channel,
-+ net_device->send_buf_gpadl_handle);
-+
-+ /* If we failed here, we might as well return and have a leak
-+ * rather than continue and a bugchk
-+ */
-+ if (ret != 0) {
-+ netdev_err(ndev,
-+ "unable to teardown send buffer's gpadl\n");
-+ return ret;
-+ }
-+ net_device->recv_buf_gpadl_handle = 0;
-+ }
-+ if (net_device->send_buf) {
-+ /* Free up the receive buffer */
-+ free_pages((unsigned long)net_device->send_buf,
-+ get_order(net_device->send_buf_size));
-+ net_device->send_buf = NULL;
-+ }
-+ kfree(net_device->send_section_map);
-+
- return ret;
- }
-
--static int netvsc_init_recv_buf(struct hv_device *device)
-+static int netvsc_init_buf(struct hv_device *device)
- {
- int ret = 0;
- int t;
-@@ -248,10 +301,90 @@ static int netvsc_init_recv_buf(struct hv_device *device)
- goto cleanup;
- }
-
-+ /* Now setup the send buffer.
-+ */
-+ net_device->send_buf =
-+ (void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO,
-+ get_order(net_device->send_buf_size));
-+ if (!net_device->send_buf) {
-+ netdev_err(ndev, "unable to allocate send "
-+ "buffer of size %d\n", net_device->send_buf_size);
-+ ret = -ENOMEM;
-+ goto cleanup;
-+ }
-+
-+ /* Establish the gpadl handle for this buffer on this
-+ * channel. Note: This call uses the vmbus connection rather
-+ * than the channel to establish the gpadl handle.
-+ */
-+ ret = vmbus_establish_gpadl(device->channel, net_device->send_buf,
-+ net_device->send_buf_size,
-+ &net_device->send_buf_gpadl_handle);
-+ if (ret != 0) {
-+ netdev_err(ndev,
-+ "unable to establish send buffer's gpadl\n");
-+ goto cleanup;
-+ }
-+
-+ /* Notify the NetVsp of the gpadl handle */
-+ init_packet = &net_device->channel_init_pkt;
-+ memset(init_packet, 0, sizeof(struct nvsp_message));
-+ init_packet->hdr.msg_type = NVSP_MSG1_TYPE_SEND_SEND_BUF;
-+ init_packet->msg.v1_msg.send_recv_buf.gpadl_handle =
-+ net_device->send_buf_gpadl_handle;
-+ init_packet->msg.v1_msg.send_recv_buf.id = 0;
-+
-+ /* Send the gpadl notification request */
-+ ret = vmbus_sendpacket(device->channel, init_packet,
-+ sizeof(struct nvsp_message),
-+ (unsigned long)init_packet,
-+ VM_PKT_DATA_INBAND,
-+ VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
-+ if (ret != 0) {
-+ netdev_err(ndev,
-+ "unable to send send buffer's gpadl to netvsp\n");
-+ goto cleanup;
-+ }
-+
-+ t = wait_for_completion_timeout(&net_device->channel_init_wait, 5*HZ);
-+ BUG_ON(t == 0);
-+
-+ /* Check the response */
-+ if (init_packet->msg.v1_msg.
-+ send_send_buf_complete.status != NVSP_STAT_SUCCESS) {
-+ netdev_err(ndev, "Unable to complete send buffer "
-+ "initialization with NetVsp - status %d\n",
-+ init_packet->msg.v1_msg.
-+ send_recv_buf_complete.status);
-+ ret = -EINVAL;
-+ goto cleanup;
-+ }
-+
-+ /* Parse the response */
-+ net_device->send_section_size = init_packet->msg.
-+ v1_msg.send_send_buf_complete.section_size;
-+
-+ /* Section count is simply the size divided by the section size.
-+ */
-+ net_device->send_section_cnt =
-+ net_device->send_buf_size/net_device->send_section_size;
-+
-+ dev_info(&device->device, "Send section size: %d, Section count:%d\n",
-+ net_device->send_section_size, net_device->send_section_cnt);
-+
-+ /* Setup state for managing the send buffer. */
-+ net_device->map_words = DIV_ROUND_UP(net_device->send_section_cnt,
-+ BITS_PER_LONG);
-+
-+ net_device->send_section_map =
-+ kzalloc(net_device->map_words * sizeof(ulong), GFP_KERNEL);
-+ if (net_device->send_section_map == NULL)
-+ goto cleanup;
-+
- goto exit;
-
- cleanup:
-- netvsc_destroy_recv_buf(net_device);
-+ netvsc_destroy_buf(net_device);
-
- exit:
- return ret;
-@@ -369,8 +502,9 @@ static int netvsc_connect_vsp(struct hv_device *device)
- net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE_LEGACY;
- else
- net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE;
-+ net_device->send_buf_size = NETVSC_SEND_BUFFER_SIZE;
-
-- ret = netvsc_init_recv_buf(device);
-+ ret = netvsc_init_buf(device);
-
- cleanup:
- return ret;
-@@ -378,7 +512,7 @@ cleanup:
-
- static void netvsc_disconnect_vsp(struct netvsc_device *net_device)
- {
-- netvsc_destroy_recv_buf(net_device);
-+ netvsc_destroy_buf(net_device);
- }
-
- /*
-@@ -440,6 +574,12 @@ static inline u32 hv_ringbuf_avail_percent(
- return avail_write * 100 / ring_info->ring_datasize;
- }
-
-+static inline void netvsc_free_send_slot(struct netvsc_device *net_device,
-+ u32 index)
-+{
-+ sync_change_bit(index, net_device->send_section_map);
-+}
-+
- static void netvsc_send_completion(struct netvsc_device *net_device,
- struct hv_device *device,
- struct vmpacket_descriptor *packet)
-@@ -447,6 +587,7 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- struct nvsp_message *nvsp_packet;
- struct hv_netvsc_packet *nvsc_packet;
- struct net_device *ndev;
-+ u32 send_index;
-
- ndev = net_device->ndev;
-
-@@ -477,6 +618,9 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-
- /* Notify the layer above us */
- if (nvsc_packet) {
-+ send_index = nvsc_packet->send_buf_index;
-+ if (send_index != NETVSC_INVALID_INDEX)
-+ netvsc_free_send_slot(net_device, send_index);
- q_idx = nvsc_packet->q_idx;
- channel = nvsc_packet->channel;
- nvsc_packet->send_completion(nvsc_packet->
-@@ -504,6 +648,52 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-
- }
-
-+static u32 netvsc_get_next_send_section(struct netvsc_device *net_device)
-+{
-+ unsigned long index;
-+ u32 max_words = net_device->map_words;
-+ unsigned long *map_addr = (unsigned long *)net_device->send_section_map;
-+ u32 section_cnt = net_device->send_section_cnt;
-+ int ret_val = NETVSC_INVALID_INDEX;
-+ int i;
-+ int prev_val;
-+
-+ for (i = 0; i < max_words; i++) {
-+ if (!~(map_addr[i]))
-+ continue;
-+ index = ffz(map_addr[i]);
-+ prev_val = sync_test_and_set_bit(index, &map_addr[i]);
-+ if (prev_val)
-+ continue;
-+ if ((index + (i * BITS_PER_LONG)) >= section_cnt)
-+ break;
-+ ret_val = (index + (i * BITS_PER_LONG));
-+ break;
-+ }
-+ return ret_val;
-+}
-+
-+u32 netvsc_copy_to_send_buf(struct netvsc_device *net_device,
-+ unsigned int section_index,
-+ struct hv_netvsc_packet *packet)
-+{
-+ char *start = net_device->send_buf;
-+ char *dest = (start + (section_index * net_device->send_section_size));
-+ int i;
-+ u32 msg_size = 0;
-+
-+ for (i = 0; i < packet->page_buf_cnt; i++) {
-+ char *src = phys_to_virt(packet->page_buf[i].pfn << PAGE_SHIFT);
-+ u32 offset = packet->page_buf[i].offset;
-+ u32 len = packet->page_buf[i].len;
-+
-+ memcpy(dest, (src + offset), len);
-+ msg_size += len;
-+ dest += len;
-+ }
-+ return msg_size;
-+}
-+
- int netvsc_send(struct hv_device *device,
- struct hv_netvsc_packet *packet)
- {
-@@ -513,6 +703,10 @@ int netvsc_send(struct hv_device *device,
- struct net_device *ndev;
- struct vmbus_channel *out_channel = NULL;
- u64 req_id;
-+ unsigned int section_index = NETVSC_INVALID_INDEX;
-+ u32 msg_size = 0;
-+ struct sk_buff *skb;
-+
-
- net_device = get_outbound_net_device(device);
- if (!net_device)
-@@ -528,10 +722,26 @@ int netvsc_send(struct hv_device *device,
- sendMessage.msg.v1_msg.send_rndis_pkt.channel_type = 1;
- }
-
-- /* Not using send buffer section */
-+ /* Attempt to send via sendbuf */
-+ if (packet->total_data_buflen < net_device->send_section_size) {
-+ section_index = netvsc_get_next_send_section(net_device);
-+ if (section_index != NETVSC_INVALID_INDEX) {
-+ msg_size = netvsc_copy_to_send_buf(net_device,
-+ section_index,
-+ packet);
-+ skb = (struct sk_buff *)
-+ (unsigned long)packet->send_completion_tid;
-+ if (skb)
-+ dev_kfree_skb_any(skb);
-+ packet->page_buf_cnt = 0;
-+ }
-+ }
-+ packet->send_buf_index = section_index;
-+
-+
- sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_index =
-- 0xFFFFFFFF;
-- sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = 0;
-+ section_index;
-+ sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = msg_size;
-
- if (packet->send_completion)
- req_id = (ulong)packet;
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index c76b66515e92..939e3af60ec4 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -236,10 +236,11 @@ static void netvsc_xmit_completion(void *context)
- struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
- struct sk_buff *skb = (struct sk_buff *)
- (unsigned long)packet->send_completion_tid;
-+ u32 index = packet->send_buf_index;
-
- kfree(packet);
-
-- if (skb)
-+ if (skb && (index == NETVSC_INVALID_INDEX))
- dev_kfree_skb_any(skb);
- }
-
---
-2.4.3
-
+++ /dev/null
-From e565e803d437b36c4fb4ced5e346827981183284 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Thu, 8 May 2014 15:14:10 -0700
-Subject: [PATCH 05/11] Add support for netvsc build without CONFIG_SYSFS flag
-
-This change ensures the driver can be built successfully without the
-CONFIG_SYSFS flag.
-MS-TFS: 182270
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 939e3af60ec4..083d084396d3 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -640,8 +640,7 @@ int netvsc_recv_callback(struct hv_device *device_obj,
- packet->vlan_tci);
-
- skb_record_rx_queue(skb, packet->channel->
-- offermsg.offer.sub_channel_index %
-- net->real_num_rx_queues);
-+ offermsg.offer.sub_channel_index);
-
- net->stats.rx_packets++;
- net->stats.rx_bytes += packet->total_data_buflen;
-@@ -824,8 +823,6 @@ static int netvsc_probe(struct hv_device *dev,
- nvdev = hv_get_drvdata(dev);
- netif_set_real_num_tx_queues(net, nvdev->num_chn);
- netif_set_real_num_rx_queues(net, nvdev->num_chn);
-- dev_info(&dev->device, "real num tx,rx queues:%u, %u\n",
-- net->real_num_tx_queues, net->real_num_rx_queues);
-
- ret = register_netdev(net);
- if (ret != 0) {
---
-2.4.3
-
+++ /dev/null
-From 4c06034001e20ff9f6e2a1a3dfa155bf3f31440c Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:13 -0800
-Subject: [PATCH 05/25] Drivers: net: hyperv: Enable scatter gather I/O
-
-Cleanup the code and enable scatter gather I/O.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 153 ++++++++++++++++++++++++++++++----------
- 1 file changed, 114 insertions(+), 39 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 8e3a0b00099b..72961741be54 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -140,22 +140,124 @@ static void netvsc_xmit_completion(void *context)
- dev_kfree_skb_any(skb);
- }
-
-+static u32 fill_pg_buf(struct page *page, u32 offset, u32 len,
-+ struct hv_page_buffer *pb)
-+{
-+ int j = 0;
-+
-+ /* Deal with compund pages by ignoring unused part
-+ * of the page.
-+ */
-+ page += (offset >> PAGE_SHIFT);
-+ offset &= ~PAGE_MASK;
-+
-+ while (len > 0) {
-+ unsigned long bytes;
-+
-+ bytes = PAGE_SIZE - offset;
-+ if (bytes > len)
-+ bytes = len;
-+ pb[j].pfn = page_to_pfn(page);
-+ pb[j].offset = offset;
-+ pb[j].len = bytes;
-+
-+ offset += bytes;
-+ len -= bytes;
-+
-+ if (offset == PAGE_SIZE && len) {
-+ page++;
-+ offset = 0;
-+ j++;
-+ }
-+ }
-+
-+ return j + 1;
-+}
-+
-+static void init_page_array(void *hdr, u32 len, struct sk_buff *skb,
-+ struct hv_page_buffer *pb)
-+{
-+ u32 slots_used = 0;
-+ char *data = skb->data;
-+ int frags = skb_shinfo(skb)->nr_frags;
-+ int i;
-+
-+ /* The packet is laid out thus:
-+ * 1. hdr
-+ * 2. skb linear data
-+ * 3. skb fragment data
-+ */
-+ if (hdr != NULL)
-+ slots_used += fill_pg_buf(virt_to_page(hdr),
-+ offset_in_page(hdr),
-+ len, &pb[slots_used]);
-+
-+ slots_used += fill_pg_buf(virt_to_page(data),
-+ offset_in_page(data),
-+ skb_headlen(skb), &pb[slots_used]);
-+
-+ for (i = 0; i < frags; i++) {
-+ skb_frag_t *frag = skb_shinfo(skb)->frags + i;
-+
-+ slots_used += fill_pg_buf(skb_frag_page(frag),
-+ frag->page_offset,
-+ skb_frag_size(frag), &pb[slots_used]);
-+ }
-+}
-+
-+static int count_skb_frag_slots(struct sk_buff *skb)
-+{
-+ int i, frags = skb_shinfo(skb)->nr_frags;
-+ int pages = 0;
-+
-+ for (i = 0; i < frags; i++) {
-+ skb_frag_t *frag = skb_shinfo(skb)->frags + i;
-+ unsigned long size = skb_frag_size(frag);
-+ unsigned long offset = frag->page_offset;
-+
-+ /* Skip unused frames from start of page */
-+ offset &= ~PAGE_MASK;
-+ pages += PFN_UP(offset + size);
-+ }
-+ return pages;
-+}
-+
-+static int netvsc_get_slots(struct sk_buff *skb)
-+{
-+ char *data = skb->data;
-+ unsigned int offset = offset_in_page(data);
-+ unsigned int len = skb_headlen(skb);
-+ int slots;
-+ int frag_slots;
-+
-+ slots = DIV_ROUND_UP(offset + len, PAGE_SIZE);
-+ frag_slots = count_skb_frag_slots(skb);
-+ return slots + frag_slots;
-+}
-+
- static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- {
- struct net_device_context *net_device_ctx = netdev_priv(net);
- struct hv_netvsc_packet *packet;
- int ret;
-- unsigned int i, num_pages, npg_data;
-+ unsigned int num_data_pages;
- u32 skb_length = skb->len;
-
-- /* Add multipages for skb->data and additional 2 for RNDIS */
-- npg_data = (((unsigned long)skb->data + skb_headlen(skb) - 1)
-- >> PAGE_SHIFT) - ((unsigned long)skb->data >> PAGE_SHIFT) + 1;
-- num_pages = skb_shinfo(skb)->nr_frags + npg_data + 2;
-+ /* We will atmost need two pages to describe the rndis
-+ * header. We can only transmit MAX_PAGE_BUFFER_COUNT number
-+ * of pages in a single packet.
-+ */
-+ num_data_pages = netvsc_get_slots(skb) + 2;
-+ if (num_data_pages > MAX_PAGE_BUFFER_COUNT) {
-+ netdev_err(net, "Packet too big: %u\n", skb->len);
-+ dev_kfree_skb(skb);
-+ net->stats.tx_dropped++;
-+ return NETDEV_TX_OK;
-+ }
-
- /* Allocate a netvsc packet based on # of frags. */
- packet = kzalloc(sizeof(struct hv_netvsc_packet) +
-- (num_pages * sizeof(struct hv_page_buffer)) +
-+ (num_data_pages * sizeof(struct hv_page_buffer)) +
- sizeof(struct rndis_message) +
- NDIS_VLAN_PPI_SIZE, GFP_ATOMIC);
- if (!packet) {
-@@ -170,44 +272,17 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- packet->vlan_tci = skb->vlan_tci;
-
- packet->extension = (void *)(unsigned long)packet +
-- sizeof(struct hv_netvsc_packet) +
-- (num_pages * sizeof(struct hv_page_buffer));
-+ sizeof(struct hv_netvsc_packet) +
-+ (num_data_pages * sizeof(struct hv_page_buffer));
-
- /* If the rndis msg goes beyond 1 page, we will add 1 later */
-- packet->page_buf_cnt = num_pages - 1;
-+ packet->page_buf_cnt = num_data_pages - 1;
-
- /* Initialize it from the skb */
- packet->total_data_buflen = skb->len;
-
- /* Start filling in the page buffers starting after RNDIS buffer. */
-- packet->page_buf[1].pfn = virt_to_phys(skb->data) >> PAGE_SHIFT;
-- packet->page_buf[1].offset
-- = (unsigned long)skb->data & (PAGE_SIZE - 1);
-- if (npg_data == 1)
-- packet->page_buf[1].len = skb_headlen(skb);
-- else
-- packet->page_buf[1].len = PAGE_SIZE
-- - packet->page_buf[1].offset;
--
-- for (i = 2; i <= npg_data; i++) {
-- packet->page_buf[i].pfn = virt_to_phys(skb->data
-- + PAGE_SIZE * (i-1)) >> PAGE_SHIFT;
-- packet->page_buf[i].offset = 0;
-- packet->page_buf[i].len = PAGE_SIZE;
-- }
-- if (npg_data > 1)
-- packet->page_buf[npg_data].len = (((unsigned long)skb->data
-- + skb_headlen(skb) - 1) & (PAGE_SIZE - 1)) + 1;
--
-- /* Additional fragments are after SKB data */
-- for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
-- const skb_frag_t *f = &skb_shinfo(skb)->frags[i];
--
-- packet->page_buf[i+npg_data+1].pfn =
-- page_to_pfn(skb_frag_page(f));
-- packet->page_buf[i+npg_data+1].offset = f->page_offset;
-- packet->page_buf[i+npg_data+1].len = skb_frag_size(f);
-- }
-+ init_page_array(NULL, 0, skb, &packet->page_buf[1]);
-
- /* Set the completion routine */
- packet->completion.send.send_completion = netvsc_xmit_completion;
-@@ -454,8 +529,8 @@ static int netvsc_probe(struct hv_device *dev,
- net->netdev_ops = &device_ops;
-
- /* TODO: Add GSO and Checksum offload */
-- net->hw_features = 0;
-- net->features = NETIF_F_HW_VLAN_CTAG_TX;
-+ net->hw_features = NETIF_F_SG;
-+ net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG;
-
- SET_ETHTOOL_OPS(net, ðtool_ops);
- SET_NETDEV_DEV(net, &dev->device);
---
-2.4.3
-
+++ /dev/null
-From d972eb71fb95660fe74616901b55b0d7a336daed Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:14 -0800
-Subject: [PATCH 06/25] Drivers: net: hyperv: Cleanup the send path
-
-In preparation for enabling offloads, cleanup the send path.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 7 +---
- drivers/net/hyperv/netvsc_drv.c | 88 +++++++++++++++++++++++++++++++--------
- drivers/net/hyperv/rndis_filter.c | 66 -----------------------------
- 3 files changed, 71 insertions(+), 90 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 39fc230f5c20..694bf7cada90 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -73,7 +73,7 @@ struct hv_netvsc_packet {
- } completion;
-
- /* This points to the memory after page_buf */
-- void *extension;
-+ struct rndis_message *rndis_msg;
-
- u32 total_data_buflen;
- /* Points to the send/receive buffer where the ethernet frame is */
-@@ -126,11 +126,6 @@ void rndis_filter_device_remove(struct hv_device *dev);
- int rndis_filter_receive(struct hv_device *dev,
- struct hv_netvsc_packet *pkt);
-
--
--
--int rndis_filter_send(struct hv_device *dev,
-- struct hv_netvsc_packet *pkt);
--
- int rndis_filter_set_packet_filter(struct rndis_device *dev, u32 new_filter);
- int rndis_filter_set_device_mac(struct hv_device *hdev, char *mac);
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 72961741be54..87293a15e470 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -128,6 +128,27 @@ static int netvsc_close(struct net_device *net)
- return ret;
- }
-
-+static void *init_ppi_data(struct rndis_message *msg, u32 ppi_size,
-+ int pkt_type)
-+{
-+ struct rndis_packet *rndis_pkt;
-+ struct rndis_per_packet_info *ppi;
-+
-+ rndis_pkt = &msg->msg.pkt;
-+ rndis_pkt->data_offset += ppi_size;
-+
-+ ppi = (struct rndis_per_packet_info *)((void *)rndis_pkt +
-+ rndis_pkt->per_pkt_info_offset + rndis_pkt->per_pkt_info_len);
-+
-+ ppi->size = ppi_size;
-+ ppi->type = pkt_type;
-+ ppi->ppi_offset = sizeof(struct rndis_per_packet_info);
-+
-+ rndis_pkt->per_pkt_info_len += ppi_size;
-+
-+ return ppi;
-+}
-+
- static void netvsc_xmit_completion(void *context)
- {
- struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-@@ -174,8 +195,8 @@ static u32 fill_pg_buf(struct page *page, u32 offset, u32 len,
- return j + 1;
- }
-
--static void init_page_array(void *hdr, u32 len, struct sk_buff *skb,
-- struct hv_page_buffer *pb)
-+static u32 init_page_array(void *hdr, u32 len, struct sk_buff *skb,
-+ struct hv_page_buffer *pb)
- {
- u32 slots_used = 0;
- char *data = skb->data;
-@@ -203,6 +224,7 @@ static void init_page_array(void *hdr, u32 len, struct sk_buff *skb,
- frag->page_offset,
- skb_frag_size(frag), &pb[slots_used]);
- }
-+ return slots_used;
- }
-
- static int count_skb_frag_slots(struct sk_buff *skb)
-@@ -240,15 +262,20 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- struct net_device_context *net_device_ctx = netdev_priv(net);
- struct hv_netvsc_packet *packet;
- int ret;
-- unsigned int num_data_pages;
- u32 skb_length = skb->len;
-+ unsigned int num_data_pgs;
-+ struct rndis_message *rndis_msg;
-+ struct rndis_packet *rndis_pkt;
-+ u32 rndis_msg_size;
-+ bool isvlan;
-+ struct rndis_per_packet_info *ppi;
-
- /* We will atmost need two pages to describe the rndis
- * header. We can only transmit MAX_PAGE_BUFFER_COUNT number
- * of pages in a single packet.
- */
-- num_data_pages = netvsc_get_slots(skb) + 2;
-- if (num_data_pages > MAX_PAGE_BUFFER_COUNT) {
-+ num_data_pgs = netvsc_get_slots(skb) + 2;
-+ if (num_data_pgs > MAX_PAGE_BUFFER_COUNT) {
- netdev_err(net, "Packet too big: %u\n", skb->len);
- dev_kfree_skb(skb);
- net->stats.tx_dropped++;
-@@ -257,7 +284,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-
- /* Allocate a netvsc packet based on # of frags. */
- packet = kzalloc(sizeof(struct hv_netvsc_packet) +
-- (num_data_pages * sizeof(struct hv_page_buffer)) +
-+ (num_data_pgs * sizeof(struct hv_page_buffer)) +
- sizeof(struct rndis_message) +
- NDIS_VLAN_PPI_SIZE, GFP_ATOMIC);
- if (!packet) {
-@@ -271,26 +298,51 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-
- packet->vlan_tci = skb->vlan_tci;
-
-- packet->extension = (void *)(unsigned long)packet +
-- sizeof(struct hv_netvsc_packet) +
-- (num_data_pages * sizeof(struct hv_page_buffer));
--
-- /* If the rndis msg goes beyond 1 page, we will add 1 later */
-- packet->page_buf_cnt = num_data_pages - 1;
--
-- /* Initialize it from the skb */
-+ packet->is_data_pkt = true;
- packet->total_data_buflen = skb->len;
-
-- /* Start filling in the page buffers starting after RNDIS buffer. */
-- init_page_array(NULL, 0, skb, &packet->page_buf[1]);
-+ packet->rndis_msg = (struct rndis_message *)((unsigned long)packet +
-+ sizeof(struct hv_netvsc_packet) +
-+ (num_data_pgs * sizeof(struct hv_page_buffer)));
-
- /* Set the completion routine */
- packet->completion.send.send_completion = netvsc_xmit_completion;
- packet->completion.send.send_completion_ctx = packet;
- packet->completion.send.send_completion_tid = (unsigned long)skb;
-
-- ret = rndis_filter_send(net_device_ctx->device_ctx,
-- packet);
-+ isvlan = packet->vlan_tci & VLAN_TAG_PRESENT;
-+
-+ /* Add the rndis header */
-+ rndis_msg = packet->rndis_msg;
-+ rndis_msg->ndis_msg_type = RNDIS_MSG_PACKET;
-+ rndis_msg->msg_len = packet->total_data_buflen;
-+ rndis_pkt = &rndis_msg->msg.pkt;
-+ rndis_pkt->data_offset = sizeof(struct rndis_packet);
-+ rndis_pkt->data_len = packet->total_data_buflen;
-+ rndis_pkt->per_pkt_info_offset = sizeof(struct rndis_packet);
-+
-+ rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
-+
-+ if (isvlan) {
-+ struct ndis_pkt_8021q_info *vlan;
-+
-+ rndis_msg_size += NDIS_VLAN_PPI_SIZE;
-+ ppi = init_ppi_data(rndis_msg, NDIS_VLAN_PPI_SIZE,
-+ IEEE_8021Q_INFO);
-+ vlan = (struct ndis_pkt_8021q_info *)((void *)ppi +
-+ ppi->ppi_offset);
-+ vlan->vlanid = packet->vlan_tci & VLAN_VID_MASK;
-+ vlan->pri = (packet->vlan_tci & VLAN_PRIO_MASK) >>
-+ VLAN_PRIO_SHIFT;
-+ }
-+
-+ /* Start filling in the page buffers with the rndis hdr */
-+ rndis_msg->msg_len += rndis_msg_size;
-+ packet->page_buf_cnt = init_page_array(rndis_msg, rndis_msg_size,
-+ skb, &packet->page_buf[0]);
-+
-+ ret = netvsc_send(net_device_ctx->device_ctx, packet);
-+
- if (ret == 0) {
- net->stats.tx_bytes += skb_length;
- net->stats.tx_packets++;
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 6a9f6021f09c..dcbf144ea7da 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -910,69 +910,3 @@ int rndis_filter_close(struct hv_device *dev)
-
- return rndis_filter_close_device(nvdev->extension);
- }
--
--int rndis_filter_send(struct hv_device *dev,
-- struct hv_netvsc_packet *pkt)
--{
-- struct rndis_message *rndis_msg;
-- struct rndis_packet *rndis_pkt;
-- u32 rndis_msg_size;
-- bool isvlan = pkt->vlan_tci & VLAN_TAG_PRESENT;
--
-- /* Add the rndis header */
-- rndis_msg = (struct rndis_message *)pkt->extension;
--
-- rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
-- if (isvlan)
-- rndis_msg_size += NDIS_VLAN_PPI_SIZE;
--
-- rndis_msg->ndis_msg_type = RNDIS_MSG_PACKET;
-- rndis_msg->msg_len = pkt->total_data_buflen +
-- rndis_msg_size;
--
-- rndis_pkt = &rndis_msg->msg.pkt;
-- rndis_pkt->data_offset = sizeof(struct rndis_packet);
-- if (isvlan)
-- rndis_pkt->data_offset += NDIS_VLAN_PPI_SIZE;
-- rndis_pkt->data_len = pkt->total_data_buflen;
--
-- if (isvlan) {
-- struct rndis_per_packet_info *ppi;
-- struct ndis_pkt_8021q_info *vlan;
--
-- rndis_pkt->per_pkt_info_offset = sizeof(struct rndis_packet);
-- rndis_pkt->per_pkt_info_len = NDIS_VLAN_PPI_SIZE;
--
-- ppi = (struct rndis_per_packet_info *)((ulong)rndis_pkt +
-- rndis_pkt->per_pkt_info_offset);
-- ppi->size = NDIS_VLAN_PPI_SIZE;
-- ppi->type = IEEE_8021Q_INFO;
-- ppi->ppi_offset = sizeof(struct rndis_per_packet_info);
--
-- vlan = (struct ndis_pkt_8021q_info *)((ulong)ppi +
-- ppi->ppi_offset);
-- vlan->vlanid = pkt->vlan_tci & VLAN_VID_MASK;
-- vlan->pri = (pkt->vlan_tci & VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT;
-- }
--
-- pkt->is_data_pkt = true;
-- pkt->page_buf[0].pfn = virt_to_phys(rndis_msg) >> PAGE_SHIFT;
-- pkt->page_buf[0].offset =
-- (unsigned long)rndis_msg & (PAGE_SIZE-1);
-- pkt->page_buf[0].len = rndis_msg_size;
--
-- /* Add one page_buf if the rndis msg goes beyond page boundary */
-- if (pkt->page_buf[0].offset + rndis_msg_size > PAGE_SIZE) {
-- int i;
-- for (i = pkt->page_buf_cnt; i > 1; i--)
-- pkt->page_buf[i] = pkt->page_buf[i-1];
-- pkt->page_buf_cnt++;
-- pkt->page_buf[0].len = PAGE_SIZE - pkt->page_buf[0].offset;
-- pkt->page_buf[1].pfn = virt_to_phys((void *)((ulong)
-- rndis_msg + pkt->page_buf[0].len)) >> PAGE_SHIFT;
-- pkt->page_buf[1].offset = 0;
-- pkt->page_buf[1].len = rndis_msg_size - pkt->page_buf[0].len;
-- }
--
-- return netvsc_send(dev, pkt);
--}
---
-2.4.3
-
+++ /dev/null
-From 7ad24ea4bf620a32631d7b3069c3e30c078b0c3e Mon Sep 17 00:00:00 2001
-From: Wilfried Klaebe <w-lkml@lebenslange-mailadresse.de>
-Date: Sun, 11 May 2014 00:12:32 +0000
-Subject: [PATCH 06/11] net: get rid of SET_ETHTOOL_OPS
-
-net: get rid of SET_ETHTOOL_OPS
-
-Dave Miller mentioned he'd like to see SET_ETHTOOL_OPS gone.
-This does that.
-
-Mostly done via coccinelle script:
-@@
-struct ethtool_ops *ops;
-struct net_device *dev;
-@@
-- SET_ETHTOOL_OPS(dev, ops);
-+ dev->ethtool_ops = ops;
-
-Compile tested only, but I'd seriously wonder if this broke anything.
-
-Suggested-by: Dave Miller <davem@davemloft.net>
-Signed-off-by: Wilfried Klaebe <w-lkml@lebenslange-mailadresse.de>
-Acked-by: Felipe Balbi <balbi@ti.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 1de3ef5dd5d2..2e967a7bdb33 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -810,7 +810,7 @@ static int netvsc_probe(struct hv_device *dev,
- net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM |
- NETIF_F_IP_CSUM | NETIF_F_TSO;
-
-- SET_ETHTOOL_OPS(net, ðtool_ops);
-+ net->ethtool_ops = ðtool_ops;
- SET_NETDEV_DEV(net, &dev->device);
-
- /* Notify the netvsc driver of the new device */
---
-2.4.3
-
+++ /dev/null
-From 6b15b5f37e976a5f3840c7ea59560e10c6251250 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:15 -0800
-Subject: [PATCH 07/25] Drivers: net: hyperv: Enable offloads on the host
-
-Prior to enabling guest side offloads, enable the offloads on the host.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 55 +++++++++++++++++++++++++++
- drivers/net/hyperv/rndis_filter.c | 80 +++++++++++++++++++++++++++++++++++++++
- 2 files changed, 135 insertions(+)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 694bf7cada90..8bc4e766589b 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -721,6 +721,61 @@ struct ndis_pkt_8021q_info {
- };
- };
-
-+struct ndis_oject_header {
-+ u8 type;
-+ u8 revision;
-+ u16 size;
-+};
-+
-+#define NDIS_OBJECT_TYPE_DEFAULT 0x80
-+#define NDIS_OFFLOAD_PARAMETERS_REVISION_3 3
-+#define NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 0
-+#define NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED 1
-+#define NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED 2
-+#define NDIS_OFFLOAD_PARAMETERS_LSOV1_ENABLED 2
-+#define NDIS_OFFLOAD_PARAMETERS_RSC_DISABLED 1
-+#define NDIS_OFFLOAD_PARAMETERS_RSC_ENABLED 2
-+#define NDIS_OFFLOAD_PARAMETERS_TX_RX_DISABLED 1
-+#define NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED 2
-+#define NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED 3
-+#define NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED 4
-+
-+/*
-+ * New offload OIDs for NDIS 6
-+ */
-+#define OID_TCP_OFFLOAD_CURRENT_CONFIG 0xFC01020B /* query only */
-+#define OID_TCP_OFFLOAD_PARAMETERS 0xFC01020C /* set only */
-+#define OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES 0xFC01020D/* query only */
-+#define OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG 0xFC01020E /* query only */
-+#define OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES 0xFC01020F /* query */
-+#define OID_OFFLOAD_ENCAPSULATION 0x0101010A /* set/query */
-+
-+struct ndis_offload_params {
-+ struct ndis_oject_header header;
-+ u8 ip_v4_csum;
-+ u8 tcp_ip_v4_csum;
-+ u8 udp_ip_v4_csum;
-+ u8 tcp_ip_v6_csum;
-+ u8 udp_ip_v6_csum;
-+ u8 lso_v1;
-+ u8 ip_sec_v1;
-+ u8 lso_v2_ipv4;
-+ u8 lso_v2_ipv6;
-+ u8 tcp_connection_ip_v4;
-+ u8 tcp_connection_ip_v6;
-+ u32 flags;
-+ u8 ip_sec_v2;
-+ u8 ip_sec_v2_ip_v4;
-+ struct {
-+ u8 rsc_ip_v4;
-+ u8 rsc_ip_v6;
-+ };
-+ struct {
-+ u8 encapsulated_packet_task_offload;
-+ u8 encapsulation_types;
-+ };
-+};
-+
- #define NDIS_VLAN_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
- sizeof(struct ndis_pkt_8021q_info))
-
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index dcbf144ea7da..9b02f21097a7 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -627,6 +627,61 @@ cleanup:
- return ret;
- }
-
-+int rndis_filter_set_offload_params(struct hv_device *hdev,
-+ struct ndis_offload_params *req_offloads)
-+{
-+ struct netvsc_device *nvdev = hv_get_drvdata(hdev);
-+ struct rndis_device *rdev = nvdev->extension;
-+ struct net_device *ndev = nvdev->ndev;
-+ struct rndis_request *request;
-+ struct rndis_set_request *set;
-+ struct ndis_offload_params *offload_params;
-+ struct rndis_set_complete *set_complete;
-+ u32 extlen = sizeof(struct ndis_offload_params);
-+ int ret, t;
-+
-+ request = get_rndis_request(rdev, RNDIS_MSG_SET,
-+ RNDIS_MESSAGE_SIZE(struct rndis_set_request) + extlen);
-+ if (!request)
-+ return -ENOMEM;
-+
-+ set = &request->request_msg.msg.set_req;
-+ set->oid = OID_TCP_OFFLOAD_PARAMETERS;
-+ set->info_buflen = extlen;
-+ set->info_buf_offset = sizeof(struct rndis_set_request);
-+ set->dev_vc_handle = 0;
-+
-+ offload_params = (struct ndis_offload_params *)((ulong)set +
-+ set->info_buf_offset);
-+ *offload_params = *req_offloads;
-+ offload_params->header.type = NDIS_OBJECT_TYPE_DEFAULT;
-+ offload_params->header.revision = NDIS_OFFLOAD_PARAMETERS_REVISION_3;
-+ offload_params->header.size = extlen;
-+
-+ ret = rndis_filter_send_request(rdev, request);
-+ if (ret != 0)
-+ goto cleanup;
-+
-+ t = wait_for_completion_timeout(&request->wait_event, 5*HZ);
-+ if (t == 0) {
-+ netdev_err(ndev, "timeout before we got aOFFLOAD set response...\n");
-+ /* can't put_rndis_request, since we may still receive a
-+ * send-completion.
-+ */
-+ return -EBUSY;
-+ } else {
-+ set_complete = &request->response_msg.msg.set_complete;
-+ if (set_complete->status != RNDIS_STATUS_SUCCESS) {
-+ netdev_err(ndev, "Fail to set MAC on host side:0x%x\n",
-+ set_complete->status);
-+ ret = -EINVAL;
-+ }
-+ }
-+
-+cleanup:
-+ put_rndis_request(rdev, request);
-+ return ret;
-+}
-
- static int rndis_filter_query_device_link_status(struct rndis_device *dev)
- {
-@@ -826,6 +881,7 @@ int rndis_filter_device_add(struct hv_device *dev,
- struct netvsc_device *net_device;
- struct rndis_device *rndis_device;
- struct netvsc_device_info *device_info = additional_info;
-+ struct ndis_offload_params offloads;
-
- rndis_device = get_rndis_device();
- if (!rndis_device)
-@@ -865,6 +921,26 @@ int rndis_filter_device_add(struct hv_device *dev,
-
- memcpy(device_info->mac_adr, rndis_device->hw_mac_adr, ETH_ALEN);
-
-+ /* Turn on the offloads; the host supports all of the relevant
-+ * offloads.
-+ */
-+ memset(&offloads, 0, sizeof(struct ndis_offload_params));
-+ /* A value of zero means "no change"; now turn on what we
-+ * want.
-+ */
-+ offloads.ip_v4_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+ offloads.tcp_ip_v4_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+ offloads.udp_ip_v4_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+ offloads.tcp_ip_v6_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+ offloads.udp_ip_v6_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+ offloads.lso_v2_ipv4 = NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED;
-+
-+
-+ ret = rndis_filter_set_offload_params(dev, &offloads);
-+ if (ret)
-+ goto err_dev_remv;
-+
-+
- rndis_filter_query_device_link_status(rndis_device);
-
- device_info->link_state = rndis_device->link_state;
-@@ -874,6 +950,10 @@ int rndis_filter_device_add(struct hv_device *dev,
- device_info->link_state ? "down" : "up");
-
- return ret;
-+
-+err_dev_remv:
-+ rndis_filter_device_remove(dev);
-+ return ret;
- }
-
- void rndis_filter_device_remove(struct hv_device *dev)
---
-2.4.3
-
+++ /dev/null
-From 307f099520b66504cf6c5638f3f404c48b9fb45b Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Wed, 21 May 2014 12:55:39 -0700
-Subject: [PATCH 07/11] hyperv: Add hash value into RNDIS Per-packet info
-
-It passes the hash value as the RNDIS Per-packet info to the Hyper-V host,
-so that the send completion notices can be spread across multiple channels.
-MS-TFS: 140273
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 4 ++++
- drivers/net/hyperv/netvsc_drv.c | 18 ++++++++++++++----
- 2 files changed, 18 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 4b7df5a5c966..6cc37c15e0bf 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -791,6 +791,7 @@ enum ndis_per_pkt_info_type {
- IEEE_8021Q_INFO,
- ORIGINAL_PKTINFO,
- PACKET_CANCEL_ID,
-+ NBL_HASH_VALUE = PACKET_CANCEL_ID,
- ORIGINAL_NET_BUFLIST,
- CACHED_NET_BUFLIST,
- SHORT_PKT_PADINFO,
-@@ -937,6 +938,9 @@ struct ndis_tcp_lso_info {
- #define NDIS_LSO_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
- sizeof(struct ndis_tcp_lso_info))
-
-+#define NDIS_HASH_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-+ sizeof(u32))
-+
- /* Format of Information buffer passed in a SetRequest for the OID */
- /* OID_GEN_RNDIS_CONFIG_PARAMETER. */
- struct rndis_config_parameter_info {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 2e967a7bdb33..4fd71b75e666 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -224,9 +224,11 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
- if (nvsc_dev == NULL || ndev->real_num_tx_queues <= 1)
- return 0;
-
-- if (netvsc_set_hash(&hash, skb))
-+ if (netvsc_set_hash(&hash, skb)) {
- q_idx = nvsc_dev->send_table[hash % VRSS_SEND_TAB_SIZE] %
- ndev->real_num_tx_queues;
-+ skb_set_hash(skb, hash, PKT_HASH_TYPE_L3);
-+ }
-
- return q_idx;
- }
-@@ -384,6 +386,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- struct ndis_tcp_lso_info *lso_info;
- int hdr_offset;
- u32 net_trans_info;
-+ u32 hash;
-
-
- /* We will atmost need two pages to describe the rndis
-@@ -402,9 +405,8 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- packet = kzalloc(sizeof(struct hv_netvsc_packet) +
- (num_data_pgs * sizeof(struct hv_page_buffer)) +
- sizeof(struct rndis_message) +
-- NDIS_VLAN_PPI_SIZE +
-- NDIS_CSUM_PPI_SIZE +
-- NDIS_LSO_PPI_SIZE, GFP_ATOMIC);
-+ NDIS_VLAN_PPI_SIZE + NDIS_CSUM_PPI_SIZE +
-+ NDIS_LSO_PPI_SIZE + NDIS_HASH_PPI_SIZE, GFP_ATOMIC);
- if (!packet) {
- /* out of memory, drop packet */
- netdev_err(net, "unable to allocate hv_netvsc_packet\n");
-@@ -443,6 +445,14 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-
- rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
-
-+ hash = skb_get_hash_raw(skb);
-+ if (hash != 0 && net->real_num_tx_queues > 1) {
-+ rndis_msg_size += NDIS_HASH_PPI_SIZE;
-+ ppi = init_ppi_data(rndis_msg, NDIS_HASH_PPI_SIZE,
-+ NBL_HASH_VALUE);
-+ *(u32 *)((void *)ppi + ppi->ppi_offset) = hash;
-+ }
-+
- if (isvlan) {
- struct ndis_pkt_8021q_info *vlan;
-
---
-2.4.3
-
+++ /dev/null
-From 59e0c70c618668522a9431686f7e3a69ef396dff Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:16 -0800
-Subject: [PATCH 08/25] Drivers: net: hyperv: Enable receive side IP checksum
- offload
-
-Enable receive side checksum offload.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 33 ++++++++++++++++++++++++++++++++-
- drivers/net/hyperv/netvsc_drv.c | 19 +++++++++++++++----
- drivers/net/hyperv/rndis_filter.c | 4 +++-
- 3 files changed, 50 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 8bc4e766589b..faeb74623fbd 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -30,6 +30,7 @@
-
- /* Fwd declaration */
- struct hv_netvsc_packet;
-+struct ndis_tcp_ip_checksum_info;
-
- /* Represent the xfer page packet which contains 1 or more netvsc packet */
- struct xferpage_packet {
-@@ -117,7 +118,8 @@ int netvsc_send(struct hv_device *device,
- void netvsc_linkstatus_callback(struct hv_device *device_obj,
- unsigned int status);
- int netvsc_recv_callback(struct hv_device *device_obj,
-- struct hv_netvsc_packet *packet);
-+ struct hv_netvsc_packet *packet,
-+ struct ndis_tcp_ip_checksum_info *csum_info);
- int rndis_filter_open(struct hv_device *dev);
- int rndis_filter_close(struct hv_device *dev);
- int rndis_filter_device_add(struct hv_device *dev,
-@@ -776,9 +778,38 @@ struct ndis_offload_params {
- };
- };
-
-+struct ndis_tcp_ip_checksum_info {
-+ union {
-+ struct {
-+ u32 is_ipv4:1;
-+ u32 is_ipv6:1;
-+ u32 tcp_checksum:1;
-+ u32 udp_checksum:1;
-+ u32 ip_header_checksum:1;
-+ u32 reserved:11;
-+ u32 tcp_header_offset:10;
-+ } transmit;
-+ struct {
-+ u32 tcp_checksum_failed:1;
-+ u32 udp_checksum_failed:1;
-+ u32 ip_checksum_failed:1;
-+ u32 tcp_checksum_succeeded:1;
-+ u32 udp_checksum_succeeded:1;
-+ u32 ip_checksum_succeeded:1;
-+ u32 loopback:1;
-+ u32 tcp_checksum_value_invalid:1;
-+ u32 ip_checksum_value_invalid:1;
-+ } receive;
-+ u32 value;
-+ };
-+};
-+
- #define NDIS_VLAN_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
- sizeof(struct ndis_pkt_8021q_info))
-
-+#define NDIS_CSUM_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-+ sizeof(struct ndis_tcp_ip_checksum_info))
-+
- /* Format of Information buffer passed in a SetRequest for the OID */
- /* OID_GEN_RNDIS_CONFIG_PARAMETER. */
- struct rndis_config_parameter_info {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 87293a15e470..7438360b7a02 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -392,7 +392,8 @@ void netvsc_linkstatus_callback(struct hv_device *device_obj,
- * "wire" on the specified device.
- */
- int netvsc_recv_callback(struct hv_device *device_obj,
-- struct hv_netvsc_packet *packet)
-+ struct hv_netvsc_packet *packet,
-+ struct ndis_tcp_ip_checksum_info *csum_info)
- {
- struct net_device *net;
- struct sk_buff *skb;
-@@ -419,7 +420,17 @@ int netvsc_recv_callback(struct hv_device *device_obj,
- packet->total_data_buflen);
-
- skb->protocol = eth_type_trans(skb, net);
-- skb->ip_summed = CHECKSUM_NONE;
-+ if (csum_info) {
-+ /* We only look at the IP checksum here.
-+ * Should we be dropping the packet if checksum
-+ * failed? How do we deal with other checksums - TCP/UDP?
-+ */
-+ if (csum_info->receive.ip_checksum_succeeded)
-+ skb->ip_summed = CHECKSUM_UNNECESSARY;
-+ else
-+ skb->ip_summed = CHECKSUM_NONE;
-+ }
-+
- if (packet->vlan_tci & VLAN_TAG_PRESENT)
- __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
- packet->vlan_tci);
-@@ -581,8 +592,8 @@ static int netvsc_probe(struct hv_device *dev,
- net->netdev_ops = &device_ops;
-
- /* TODO: Add GSO and Checksum offload */
-- net->hw_features = NETIF_F_SG;
-- net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG;
-+ net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG;
-+ net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM;
-
- SET_ETHTOOL_OPS(net, ðtool_ops);
- SET_NETDEV_DEV(net, &dev->device);
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 9b02f21097a7..4a37e3db9e32 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -370,6 +370,7 @@ static void rndis_filter_receive_data(struct rndis_device *dev,
- struct rndis_packet *rndis_pkt;
- u32 data_offset;
- struct ndis_pkt_8021q_info *vlan;
-+ struct ndis_tcp_ip_checksum_info *csum_info;
-
- rndis_pkt = &msg->msg.pkt;
-
-@@ -408,7 +409,8 @@ static void rndis_filter_receive_data(struct rndis_device *dev,
- pkt->vlan_tci = 0;
- }
-
-- netvsc_recv_callback(dev->net_dev->dev, pkt);
-+ csum_info = rndis_get_ppi(rndis_pkt, TCPIP_CHKSUM_PKTINFO);
-+ netvsc_recv_callback(dev->net_dev->dev, pkt, csum_info);
- }
-
- int rndis_filter_receive(struct hv_device *dev,
---
-2.4.3
-
+++ /dev/null
-From 2f18423d7ebf8044a9edaca840be5ae199fb32f6 Mon Sep 17 00:00:00 2001
-From: Dave Jones <davej@redhat.com>
-Date: Mon, 16 Jun 2014 16:59:02 -0400
-Subject: [PATCH 08/11] hyperv: fix apparent cut-n-paste error in send path
- teardown
-
-c25aaf814a63: "hyperv: Enable sendbuf mechanism on the send path" added
-some teardown code that looks like it was copied from the recieve path
-above, but missed a variable name replacement.
-
-Signed-off-by: Dave Jones <davej@redhat.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index c041f63a6d30..4ed38eaecea8 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -189,7 +189,7 @@ static int netvsc_destroy_buf(struct netvsc_device *net_device)
- "unable to teardown send buffer's gpadl\n");
- return ret;
- }
-- net_device->recv_buf_gpadl_handle = 0;
-+ net_device->send_buf_gpadl_handle = 0;
- }
- if (net_device->send_buf) {
- /* Free up the receive buffer */
---
-2.4.3
-
+++ /dev/null
-From d2a0be7f4263eb669af84240c5424a72cce4cdb4 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:17 -0800
-Subject: [PATCH 09/25] Drivers: net: hyperv: Enable send side checksum offload
-
-Enable send side checksum offload.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 10 ++++++
- drivers/net/hyperv/netvsc_drv.c | 69 +++++++++++++++++++++++++++++++++++++++--
- 2 files changed, 77 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index faeb74623fbd..4cf238234321 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -1035,6 +1035,16 @@ struct rndis_message {
- #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00000400
- #define NDIS_PACKET_TYPE_MAC_FRAME 0x00000800
-
-+#define INFO_IPV4 2
-+#define INFO_IPV6 4
-+#define INFO_TCP 2
-+#define INFO_UDP 4
-+
-+#define TRANSPORT_INFO_NOT_IP 0
-+#define TRANSPORT_INFO_IPV4_TCP ((INFO_IPV4 << 16) | INFO_TCP)
-+#define TRANSPORT_INFO_IPV4_UDP ((INFO_IPV4 << 16) | INFO_UDP)
-+#define TRANSPORT_INFO_IPV6_TCP ((INFO_IPV6 << 16) | INFO_TCP)
-+#define TRANSPORT_INFO_IPV6_UDP ((INFO_IPV6 << 16) | INFO_UDP)
-
-
- #endif /* _HYPERV_NET_H */
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 7438360b7a02..2fab69ac61ef 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -257,6 +257,35 @@ static int netvsc_get_slots(struct sk_buff *skb)
- return slots + frag_slots;
- }
-
-+static u32 get_net_transport_info(struct sk_buff *skb, u32 *trans_off)
-+{
-+ u32 ret_val = TRANSPORT_INFO_NOT_IP;
-+
-+ if ((eth_hdr(skb)->h_proto != htons(ETH_P_IP)) &&
-+ (eth_hdr(skb)->h_proto != htons(ETH_P_IPV6))) {
-+ goto not_ip;
-+ }
-+
-+ *trans_off = skb_transport_offset(skb);
-+
-+ if ((eth_hdr(skb)->h_proto == htons(ETH_P_IP))) {
-+ struct iphdr *iphdr = ip_hdr(skb);
-+
-+ if (iphdr->protocol == IPPROTO_TCP)
-+ ret_val = TRANSPORT_INFO_IPV4_TCP;
-+ else if (iphdr->protocol == IPPROTO_UDP)
-+ ret_val = TRANSPORT_INFO_IPV4_UDP;
-+ } else {
-+ if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
-+ ret_val = TRANSPORT_INFO_IPV6_TCP;
-+ else if (ipv6_hdr(skb)->nexthdr == IPPROTO_UDP)
-+ ret_val = TRANSPORT_INFO_IPV6_UDP;
-+ }
-+
-+not_ip:
-+ return ret_val;
-+}
-+
- static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- {
- struct net_device_context *net_device_ctx = netdev_priv(net);
-@@ -269,6 +298,10 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- u32 rndis_msg_size;
- bool isvlan;
- struct rndis_per_packet_info *ppi;
-+ struct ndis_tcp_ip_checksum_info *csum_info;
-+ int hdr_offset;
-+ u32 net_trans_info;
-+
-
- /* We will atmost need two pages to describe the rndis
- * header. We can only transmit MAX_PAGE_BUFFER_COUNT number
-@@ -336,6 +369,37 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- VLAN_PRIO_SHIFT;
- }
-
-+ net_trans_info = get_net_transport_info(skb, &hdr_offset);
-+ if (net_trans_info == TRANSPORT_INFO_NOT_IP)
-+ goto do_send;
-+
-+ /*
-+ * Setup the sendside checksum offload only if this is not a
-+ * GSO packet.
-+ */
-+ if (skb_is_gso(skb))
-+ goto do_send;
-+
-+ rndis_msg_size += NDIS_CSUM_PPI_SIZE;
-+ ppi = init_ppi_data(rndis_msg, NDIS_CSUM_PPI_SIZE,
-+ TCPIP_CHKSUM_PKTINFO);
-+
-+ csum_info = (struct ndis_tcp_ip_checksum_info *)((void *)ppi +
-+ ppi->ppi_offset);
-+
-+ if (net_trans_info & (INFO_IPV4 << 16))
-+ csum_info->transmit.is_ipv4 = 1;
-+ else
-+ csum_info->transmit.is_ipv6 = 1;
-+
-+ if (net_trans_info & INFO_TCP) {
-+ csum_info->transmit.tcp_checksum = 1;
-+ csum_info->transmit.tcp_header_offset = hdr_offset;
-+ } else if (net_trans_info & INFO_UDP) {
-+ csum_info->transmit.udp_checksum = 1;
-+ }
-+
-+do_send:
- /* Start filling in the page buffers with the rndis hdr */
- rndis_msg->msg_len += rndis_msg_size;
- packet->page_buf_cnt = init_page_array(rndis_msg, rndis_msg_size,
-@@ -592,8 +656,9 @@ static int netvsc_probe(struct hv_device *dev,
- net->netdev_ops = &device_ops;
-
- /* TODO: Add GSO and Checksum offload */
-- net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG;
-- net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM;
-+ net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM;
-+ net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM |
-+ NETIF_F_IP_CSUM;
-
- SET_ETHTOOL_OPS(net, ðtool_ops);
- SET_NETDEV_DEV(net, &dev->device);
---
-2.4.3
-
+++ /dev/null
-From dd1d3f8f9920926aa426589e542eed6bf58b7354 Mon Sep 17 00:00:00 2001
-From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
-Date: Wed, 23 Jul 2014 09:00:35 +0800
-Subject: [PATCH 09/11] hyperv: Fix error return code in netvsc_init_buf()
-
-Fix to return -ENOMEM from the kalloc error handling
-case instead of 0.
-
-Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 4ed38eaecea8..d97d5f39a04e 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -378,8 +378,10 @@ static int netvsc_init_buf(struct hv_device *device)
-
- net_device->send_section_map =
- kzalloc(net_device->map_words * sizeof(ulong), GFP_KERNEL);
-- if (net_device->send_section_map == NULL)
-+ if (net_device->send_section_map == NULL) {
-+ ret = -ENOMEM;
- goto cleanup;
-+ }
-
- goto exit;
-
---
-2.4.3
-
+++ /dev/null
-From a4ec4f58017b456281ee17c35fb82dfe4eab2193 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:18 -0800
-Subject: [PATCH 10/25] Drivers: net: hyperv: Enable large send offload
-
-Enable segmentation offload.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 40 ++++++++++++++++++++++++++++++++++++++++
- drivers/net/hyperv/netvsc_drv.c | 38 ++++++++++++++++++++++++++++++++++----
- 2 files changed, 74 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 4cf238234321..7d06b4959383 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -742,6 +742,10 @@ struct ndis_oject_header {
- #define NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED 3
- #define NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED 4
-
-+#define NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE 1
-+#define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV4 0
-+#define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV6 1
-+
- /*
- * New offload OIDs for NDIS 6
- */
-@@ -804,12 +808,48 @@ struct ndis_tcp_ip_checksum_info {
- };
- };
-
-+struct ndis_tcp_lso_info {
-+ union {
-+ struct {
-+ u32 unused:30;
-+ u32 type:1;
-+ u32 reserved2:1;
-+ } transmit;
-+ struct {
-+ u32 mss:20;
-+ u32 tcp_header_offset:10;
-+ u32 type:1;
-+ u32 reserved2:1;
-+ } lso_v1_transmit;
-+ struct {
-+ u32 tcp_payload:30;
-+ u32 type:1;
-+ u32 reserved2:1;
-+ } lso_v1_transmit_complete;
-+ struct {
-+ u32 mss:20;
-+ u32 tcp_header_offset:10;
-+ u32 type:1;
-+ u32 ip_version:1;
-+ } lso_v2_transmit;
-+ struct {
-+ u32 reserved:30;
-+ u32 type:1;
-+ u32 reserved2:1;
-+ } lso_v2_transmit_complete;
-+ u32 value;
-+ };
-+};
-+
- #define NDIS_VLAN_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
- sizeof(struct ndis_pkt_8021q_info))
-
- #define NDIS_CSUM_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
- sizeof(struct ndis_tcp_ip_checksum_info))
-
-+#define NDIS_LSO_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-+ sizeof(struct ndis_tcp_lso_info))
-+
- /* Format of Information buffer passed in a SetRequest for the OID */
- /* OID_GEN_RNDIS_CONFIG_PARAMETER. */
- struct rndis_config_parameter_info {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 2fab69ac61ef..5baa1fa7e692 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -299,6 +299,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- bool isvlan;
- struct rndis_per_packet_info *ppi;
- struct ndis_tcp_ip_checksum_info *csum_info;
-+ struct ndis_tcp_lso_info *lso_info;
- int hdr_offset;
- u32 net_trans_info;
-
-@@ -378,7 +379,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- * GSO packet.
- */
- if (skb_is_gso(skb))
-- goto do_send;
-+ goto do_lso;
-
- rndis_msg_size += NDIS_CSUM_PPI_SIZE;
- ppi = init_ppi_data(rndis_msg, NDIS_CSUM_PPI_SIZE,
-@@ -398,6 +399,35 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- } else if (net_trans_info & INFO_UDP) {
- csum_info->transmit.udp_checksum = 1;
- }
-+ goto do_send;
-+
-+do_lso:
-+ rndis_msg_size += NDIS_LSO_PPI_SIZE;
-+ ppi = init_ppi_data(rndis_msg, NDIS_LSO_PPI_SIZE,
-+ TCP_LARGESEND_PKTINFO);
-+
-+ lso_info = (struct ndis_tcp_lso_info *)((void *)ppi +
-+ ppi->ppi_offset);
-+
-+ lso_info->lso_v2_transmit.type = NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE;
-+ if (net_trans_info & (INFO_IPV4 << 16)) {
-+ lso_info->lso_v2_transmit.ip_version =
-+ NDIS_TCP_LARGE_SEND_OFFLOAD_IPV4;
-+ ip_hdr(skb)->tot_len = 0;
-+ ip_hdr(skb)->check = 0;
-+ tcp_hdr(skb)->check =
-+ ~csum_tcpudp_magic(ip_hdr(skb)->saddr,
-+ ip_hdr(skb)->daddr, 0, IPPROTO_TCP, 0);
-+ } else {
-+ lso_info->lso_v2_transmit.ip_version =
-+ NDIS_TCP_LARGE_SEND_OFFLOAD_IPV6;
-+ ipv6_hdr(skb)->payload_len = 0;
-+ tcp_hdr(skb)->check =
-+ ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
-+ &ipv6_hdr(skb)->daddr, 0, IPPROTO_TCP, 0);
-+ }
-+ lso_info->lso_v2_transmit.tcp_header_offset = hdr_offset;
-+ lso_info->lso_v2_transmit.mss = skb_shinfo(skb)->gso_size;
-
- do_send:
- /* Start filling in the page buffers with the rndis hdr */
-@@ -655,10 +685,10 @@ static int netvsc_probe(struct hv_device *dev,
-
- net->netdev_ops = &device_ops;
-
-- /* TODO: Add GSO and Checksum offload */
-- net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM;
-+ net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM |
-+ NETIF_F_TSO;
- net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM |
-- NETIF_F_IP_CSUM;
-+ NETIF_F_IP_CSUM | NETIF_F_TSO;
-
- SET_ETHTOOL_OPS(net, ðtool_ops);
- SET_NETDEV_DEV(net, &dev->device);
---
-2.4.3
-
+++ /dev/null
-From b3e774263908a834c1c0d5abf3a7658280e42fc7 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 28 Sep 2014 22:16:43 -0700
-Subject: [PATCH 10/11] hyperv: Fix a bug in netvsc_start_xmit()
-
-[ Upstream commit dedb845ded56ded1c62f5398a94ffa8615d4592d ]
-
-After the packet is successfully sent, we should not touch the skb
-as it may have been freed. This patch is based on the work done by
-Long Li <longli@microsoft.com>.
-
-In this version of the patch I have fixed issues pointed out by David.
-David, please queue this up for stable.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Tested-by: Long Li <longli@microsoft.com>
-Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/hyperv/netvsc_drv.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 4fd71b75e666..f15297201777 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -387,6 +387,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- int hdr_offset;
- u32 net_trans_info;
- u32 hash;
-+ u32 skb_length = skb->len;
-
-
- /* We will atmost need two pages to describe the rndis
-@@ -562,7 +563,7 @@ do_send:
-
- drop:
- if (ret == 0) {
-- net->stats.tx_bytes += skb->len;
-+ net->stats.tx_bytes += skb_length;
- net->stats.tx_packets++;
- } else {
- kfree(packet);
---
-2.4.3
-
+++ /dev/null
-From 56b3f72d3fed7f9b8d17dcf5d81455fa1b4327d7 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Sun, 9 Mar 2014 16:10:59 -0700
-Subject: [PATCH 11/25] hyperv: Change the receive buffer size for legacy hosts
-
-Due to a bug in the Hyper-V host verion 2008R2, we need to use a slightly smaller
-receive buffer size, otherwise the buffer will not be accepted by the legacy hosts.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 1 +
- drivers/net/hyperv/netvsc.c | 6 +++++-
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 7d06b4959383..13010b4dae5b 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -513,6 +513,7 @@ struct nvsp_message {
- #define NETVSC_MTU 65536
-
- #define NETVSC_RECEIVE_BUFFER_SIZE (1024*1024*16) /* 16MB */
-+#define NETVSC_RECEIVE_BUFFER_SIZE_LEGACY (1024*1024*15) /* 15MB */
-
- #define NETVSC_RECEIVE_BUFFER_ID 0xcafe
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 1a0280dcba7e..daddea2654ce 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -365,6 +365,11 @@ static int netvsc_connect_vsp(struct hv_device *device)
- goto cleanup;
-
- /* Post the big receive buffer to NetVSP */
-+ if (net_device->nvsp_version <= NVSP_PROTOCOL_VERSION_2)
-+ net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE_LEGACY;
-+ else
-+ net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE;
-+
- ret = netvsc_init_recv_buf(device);
-
- cleanup:
-@@ -898,7 +903,6 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
- ndev = net_device->ndev;
-
- /* Initialize the NetVSC channel extension */
-- net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE;
- spin_lock_init(&net_device->recv_pkt_list_lock);
-
- INIT_LIST_HEAD(&net_device->recv_pkt_list);
---
-2.4.3
-
+++ /dev/null
-From 26875bba869bd91a1d8fef9229a56a1e6d9fef2b Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 5 Oct 2014 10:42:51 -0700
-Subject: [PATCH 11/11] hyperv: Fix a bug in netvsc_send()
-
-[ Upstream commit 3a67c9ccad926a168d8b7891537a452018368a5b ]
-
-After the packet is successfully sent, we should not touch the packet
-as it may have been freed. This patch is based on the work done by
-Long Li <longli@microsoft.com>.
-
-David, please queue this up for stable.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/hyperv/netvsc.c | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index d97d5f39a04e..7edf976ecfa0 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -708,6 +708,7 @@ int netvsc_send(struct hv_device *device,
- unsigned int section_index = NETVSC_INVALID_INDEX;
- u32 msg_size = 0;
- struct sk_buff *skb;
-+ u16 q_idx = packet->q_idx;
-
-
- net_device = get_outbound_net_device(device);
-@@ -772,24 +773,24 @@ int netvsc_send(struct hv_device *device,
-
- if (ret == 0) {
- atomic_inc(&net_device->num_outstanding_sends);
-- atomic_inc(&net_device->queue_sends[packet->q_idx]);
-+ atomic_inc(&net_device->queue_sends[q_idx]);
-
- if (hv_ringbuf_avail_percent(&out_channel->outbound) <
- RING_AVAIL_PERCENT_LOWATER) {
- netif_tx_stop_queue(netdev_get_tx_queue(
-- ndev, packet->q_idx));
-+ ndev, q_idx));
-
- if (atomic_read(&net_device->
-- queue_sends[packet->q_idx]) < 1)
-+ queue_sends[q_idx]) < 1)
- netif_tx_wake_queue(netdev_get_tx_queue(
-- ndev, packet->q_idx));
-+ ndev, q_idx));
- }
- } else if (ret == -EAGAIN) {
- netif_tx_stop_queue(netdev_get_tx_queue(
-- ndev, packet->q_idx));
-- if (atomic_read(&net_device->queue_sends[packet->q_idx]) < 1) {
-+ ndev, q_idx));
-+ if (atomic_read(&net_device->queue_sends[q_idx]) < 1) {
- netif_tx_wake_queue(netdev_get_tx_queue(
-- ndev, packet->q_idx));
-+ ndev, q_idx));
- ret = -ENOSPC;
- }
- } else {
---
-2.4.3
-
+++ /dev/null
-From e0f6906eb7e5b395370da9499189d13b59020382 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 9 Apr 2014 15:00:45 -0700
-Subject: [PATCH 12/25] Drivers: net: hyperv: Allocate memory for all possible
- per-pecket information
-
-An outgoing packet can potentially need per-packet information for
-all the offloads and VLAN tagging. Fix this issue.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 5baa1fa7e692..c76c85176644 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -320,7 +320,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- packet = kzalloc(sizeof(struct hv_netvsc_packet) +
- (num_data_pgs * sizeof(struct hv_page_buffer)) +
- sizeof(struct rndis_message) +
-- NDIS_VLAN_PPI_SIZE, GFP_ATOMIC);
-+ NDIS_VLAN_PPI_SIZE +
-+ NDIS_CSUM_PPI_SIZE +
-+ NDIS_LSO_PPI_SIZE, GFP_ATOMIC);
- if (!packet) {
- /* out of memory, drop packet */
- netdev_err(net, "unable to allocate hv_netvsc_packet\n");
---
-2.4.3
-
+++ /dev/null
-From 8a7882bada78e7d7355aafc0ca3c5696d25eb443 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 9 Apr 2014 15:00:46 -0700
-Subject: [PATCH 13/25] Drivers: net: hyperv: Negotiate suitable ndis version
- for offload support
-
-Ws2008R2 supports ndis_version 6.1 and 6.1 is the minimal version required
-for various offloads. Negotiate ndis_version 6.1 when on ws2008r2.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index daddea2654ce..f7629ecefa84 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -344,7 +344,7 @@ static int netvsc_connect_vsp(struct hv_device *device)
- memset(init_packet, 0, sizeof(struct nvsp_message));
-
- if (net_device->nvsp_version <= NVSP_PROTOCOL_VERSION_4)
-- ndis_version = 0x00050001;
-+ ndis_version = 0x00060001;
- else
- ndis_version = 0x0006001e;
-
---
-2.4.3
-
+++ /dev/null
-From b822ee7a17efd1bc8c7584da5d0a2c042e9ca5b6 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 9 Apr 2014 15:00:47 -0700
-Subject: [PATCH 14/25] Drivers: net: hyperv: Address UDP checksum issues
-
-ws2008r2 does not support UDP checksum offload. Thus, we cannnot turn on
-UDP offload in the host. Also, on ws2012 and ws2012 r2, there appear to be
-an issue with UDP checksum offload.
-Fix this issue by computing the UDP checksum in the Hyper-V driver.
-
-Based on Dave Miller's comments, in this version, I have COWed the skb
-before modifying the UDP header (the checksum field).
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 1 +
- drivers/net/hyperv/netvsc_drv.c | 26 +++++++++++++++++++++++++-
- drivers/net/hyperv/rndis_filter.c | 12 +++++++++++-
- 3 files changed, 37 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 13010b4dae5b..d18f711d0b0c 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -747,6 +747,7 @@ struct ndis_oject_header {
- #define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV4 0
- #define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV6 1
-
-+#define VERSION_4_OFFLOAD_SIZE 22
- /*
- * New offload OIDs for NDIS 6
- */
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index c76c85176644..0d898876689e 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -399,7 +399,30 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- csum_info->transmit.tcp_checksum = 1;
- csum_info->transmit.tcp_header_offset = hdr_offset;
- } else if (net_trans_info & INFO_UDP) {
-- csum_info->transmit.udp_checksum = 1;
-+ /* UDP checksum offload is not supported on ws2008r2.
-+ * Furthermore, on ws2012 and ws2012r2, there are some
-+ * issues with udp checksum offload from Linux guests.
-+ * (these are host issues).
-+ * For now compute the checksum here.
-+ */
-+ struct udphdr *uh;
-+ u16 udp_len;
-+
-+ ret = skb_cow_head(skb, 0);
-+ if (ret)
-+ goto drop;
-+
-+ uh = udp_hdr(skb);
-+ udp_len = ntohs(uh->len);
-+ uh->check = 0;
-+ uh->check = csum_tcpudp_magic(ip_hdr(skb)->saddr,
-+ ip_hdr(skb)->daddr,
-+ udp_len, IPPROTO_UDP,
-+ csum_partial(uh, udp_len, 0));
-+ if (uh->check == 0)
-+ uh->check = CSUM_MANGLED_0;
-+
-+ csum_info->transmit.udp_checksum = 0;
- }
- goto do_send;
-
-@@ -439,6 +462,7 @@ do_send:
-
- ret = netvsc_send(net_device_ctx->device_ctx, packet);
-
-+drop:
- if (ret == 0) {
- net->stats.tx_bytes += skb_length;
- net->stats.tx_packets++;
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 4a37e3db9e32..143a98caf618 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -641,6 +641,16 @@ int rndis_filter_set_offload_params(struct hv_device *hdev,
- struct rndis_set_complete *set_complete;
- u32 extlen = sizeof(struct ndis_offload_params);
- int ret, t;
-+ u32 vsp_version = nvdev->nvsp_version;
-+
-+ if (vsp_version <= NVSP_PROTOCOL_VERSION_4) {
-+ extlen = VERSION_4_OFFLOAD_SIZE;
-+ /* On NVSP_PROTOCOL_VERSION_4 and below, we do not support
-+ * UDP checksum offload.
-+ */
-+ req_offloads->udp_ip_v4_csum = 0;
-+ req_offloads->udp_ip_v6_csum = 0;
-+ }
-
- request = get_rndis_request(rdev, RNDIS_MSG_SET,
- RNDIS_MESSAGE_SIZE(struct rndis_set_request) + extlen);
-@@ -674,7 +684,7 @@ int rndis_filter_set_offload_params(struct hv_device *hdev,
- } else {
- set_complete = &request->response_msg.msg.set_complete;
- if (set_complete->status != RNDIS_STATUS_SUCCESS) {
-- netdev_err(ndev, "Fail to set MAC on host side:0x%x\n",
-+ netdev_err(ndev, "Fail to set offload on host side:0x%x\n",
- set_complete->status);
- ret = -EINVAL;
- }
---
-2.4.3
-
+++ /dev/null
-From 540360773bad2b81f14c38ca92b62797fa32cbc6 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 30 Apr 2014 11:58:25 -0700
-Subject: [PATCH 15/25] hyperv: Properly handle checksum offload
-
-Do checksum offload only if the client of the driver wants checksum to be
-offloaded.
-
-In V1 version of this patch, I addressed comments from
-Stephen Hemminger <stephen@networkplumber.org> and
-Eric Dumazet <eric.dumazet@gmail.com>.
-
-In this version of the patch I have addressed comments from
-David Miller.
-
-This patch fixes a bug that is exposed in gateway scenarios.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 0d898876689e..ce6d870dd7ae 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -383,6 +383,10 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- if (skb_is_gso(skb))
- goto do_lso;
-
-+ if ((skb->ip_summed == CHECKSUM_NONE) ||
-+ (skb->ip_summed == CHECKSUM_UNNECESSARY))
-+ goto do_send;
-+
- rndis_msg_size += NDIS_CSUM_PPI_SIZE;
- ppi = init_ppi_data(rndis_msg, NDIS_CSUM_PPI_SIZE,
- TCPIP_CHKSUM_PKTINFO);
---
-2.4.3
-
+++ /dev/null
-From 44559a96c6864eb6e95db0ae896c621b82e605f3 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 10:20:28 -0700
-Subject: [PATCH 16/25] hyperv: Add support for virtual Receive Side Scaling
- (vRSS)
-
-This feature allows multiple channels to be used by each virtual NIC.
-It is available on Hyper-V host 2012 R2.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 110 +++++++++++++++++++++-
- drivers/net/hyperv/netvsc.c | 136 +++++++++++++++++++++------
- drivers/net/hyperv/netvsc_drv.c | 103 ++++++++++++++++++++-
- drivers/net/hyperv/rndis_filter.c | 189 +++++++++++++++++++++++++++++++++++++-
- 4 files changed, 504 insertions(+), 34 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index d18f711d0b0c..57eb3f906d64 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -28,6 +28,96 @@
- #include <linux/hyperv.h>
- #include <linux/rndis.h>
-
-+/* RSS related */
-+#define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203 /* query only */
-+#define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204 /* query and set */
-+
-+#define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88
-+#define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89
-+
-+#define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 2
-+#define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 2
-+
-+struct ndis_obj_header {
-+ u8 type;
-+ u8 rev;
-+ u16 size;
-+} __packed;
-+
-+/* ndis_recv_scale_cap/cap_flag */
-+#define NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000
-+#define NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR 0x02000000
-+#define NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC 0x04000000
-+#define NDIS_RSS_CAPS_USING_MSI_X 0x08000000
-+#define NDIS_RSS_CAPS_RSS_AVAILABLE_ON_PORTS 0x10000000
-+#define NDIS_RSS_CAPS_SUPPORTS_MSI_X 0x20000000
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4 0x00000100
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6 0x00000200
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX 0x00000400
-+
-+struct ndis_recv_scale_cap { /* NDIS_RECEIVE_SCALE_CAPABILITIES */
-+ struct ndis_obj_header hdr;
-+ u32 cap_flag;
-+ u32 num_int_msg;
-+ u32 num_recv_que;
-+ u16 num_indirect_tabent;
-+} __packed;
-+
-+
-+/* ndis_recv_scale_param flags */
-+#define NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED 0x0001
-+#define NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED 0x0002
-+#define NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED 0x0004
-+#define NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED 0x0008
-+#define NDIS_RSS_PARAM_FLAG_DISABLE_RSS 0x0010
-+
-+/* Hash info bits */
-+#define NDIS_HASH_FUNC_TOEPLITZ 0x00000001
-+#define NDIS_HASH_IPV4 0x00000100
-+#define NDIS_HASH_TCP_IPV4 0x00000200
-+#define NDIS_HASH_IPV6 0x00000400
-+#define NDIS_HASH_IPV6_EX 0x00000800
-+#define NDIS_HASH_TCP_IPV6 0x00001000
-+#define NDIS_HASH_TCP_IPV6_EX 0x00002000
-+
-+#define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_2 (128 * 4)
-+#define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2 40
-+
-+#define ITAB_NUM 128
-+#define HASH_KEYLEN NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2
-+extern u8 netvsc_hash_key[];
-+
-+struct ndis_recv_scale_param { /* NDIS_RECEIVE_SCALE_PARAMETERS */
-+ struct ndis_obj_header hdr;
-+
-+ /* Qualifies the rest of the information */
-+ u16 flag;
-+
-+ /* The base CPU number to do receive processing. not used */
-+ u16 base_cpu_number;
-+
-+ /* This describes the hash function and type being enabled */
-+ u32 hashinfo;
-+
-+ /* The size of indirection table array */
-+ u16 indirect_tabsize;
-+
-+ /* The offset of the indirection table from the beginning of this
-+ * structure
-+ */
-+ u32 indirect_taboffset;
-+
-+ /* The size of the hash secret key */
-+ u16 hashkey_size;
-+
-+ /* The offset of the secret key from the beginning of this structure */
-+ u32 kashkey_offset;
-+
-+ u32 processor_masks_offset;
-+ u32 num_processor_masks;
-+ u32 processor_masks_entry_size;
-+};
-+
- /* Fwd declaration */
- struct hv_netvsc_packet;
- struct ndis_tcp_ip_checksum_info;
-@@ -39,6 +129,8 @@ struct xferpage_packet {
-
- /* # of netvsc packets this xfer packet contains */
- u32 count;
-+
-+ struct vmbus_channel *channel;
- };
-
- /*
-@@ -54,6 +146,9 @@ struct hv_netvsc_packet {
- bool is_data_pkt;
- u16 vlan_tci;
-
-+ u16 q_idx;
-+ struct vmbus_channel *channel;
-+
- /*
- * Valid only for receives when we break a xfer page packet
- * into multiple netvsc packets
-@@ -120,6 +215,7 @@ void netvsc_linkstatus_callback(struct hv_device *device_obj,
- int netvsc_recv_callback(struct hv_device *device_obj,
- struct hv_netvsc_packet *packet,
- struct ndis_tcp_ip_checksum_info *csum_info);
-+void netvsc_channel_cb(void *context);
- int rndis_filter_open(struct hv_device *dev);
- int rndis_filter_close(struct hv_device *dev);
- int rndis_filter_device_add(struct hv_device *dev,
-@@ -522,6 +618,8 @@ struct nvsp_message {
-
- #define NETVSC_PACKET_SIZE 2048
-
-+#define VRSS_SEND_TAB_SIZE 16
-+
- /* Per netvsc channel-specific */
- struct netvsc_device {
- struct hv_device *dev;
-@@ -555,10 +653,20 @@ struct netvsc_device {
-
- struct net_device *ndev;
-
-+ struct vmbus_channel *chn_table[NR_CPUS];
-+ u32 send_table[VRSS_SEND_TAB_SIZE];
-+ u32 num_chn;
-+ atomic_t queue_sends[NR_CPUS];
-+
- /* Holds rndis device info */
- void *extension;
-- /* The recive buffer for this device */
-+
-+ int ring_size;
-+
-+ /* The primary channel callback buffer */
- unsigned char cb_buffer[NETVSC_PACKET_SIZE];
-+ /* The sub channel callback buffer */
-+ unsigned char *sub_cb_buf;
- };
-
- /* NdisInitialize message */
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index f7629ecefa84..e7e77f12bc38 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -422,6 +422,9 @@ int netvsc_device_remove(struct hv_device *device)
- kfree(netvsc_packet);
- }
-
-+ if (net_device->sub_cb_buf)
-+ vfree(net_device->sub_cb_buf);
-+
- kfree(net_device);
- return 0;
- }
-@@ -461,7 +464,9 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- (nvsp_packet->hdr.msg_type ==
- NVSP_MSG1_TYPE_SEND_RECV_BUF_COMPLETE) ||
- (nvsp_packet->hdr.msg_type ==
-- NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE)) {
-+ NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE) ||
-+ (nvsp_packet->hdr.msg_type ==
-+ NVSP_MSG5_TYPE_SUBCHANNEL)) {
- /* Copy the response back */
- memcpy(&net_device->channel_init_pkt, nvsp_packet,
- sizeof(struct nvsp_message));
-@@ -469,28 +474,37 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- } else if (nvsp_packet->hdr.msg_type ==
- NVSP_MSG1_TYPE_SEND_RNDIS_PKT_COMPLETE) {
- int num_outstanding_sends;
-+ u16 q_idx = 0;
-+ struct vmbus_channel *channel = device->channel;
-+ int queue_sends;
-
- /* Get the send context */
- nvsc_packet = (struct hv_netvsc_packet *)(unsigned long)
- packet->trans_id;
-
- /* Notify the layer above us */
-- if (nvsc_packet)
-+ if (nvsc_packet) {
-+ q_idx = nvsc_packet->q_idx;
-+ channel = nvsc_packet->channel;
- nvsc_packet->completion.send.send_completion(
- nvsc_packet->completion.send.
- send_completion_ctx);
-+ }
-
- num_outstanding_sends =
- atomic_dec_return(&net_device->num_outstanding_sends);
-+ queue_sends = atomic_dec_return(&net_device->
-+ queue_sends[q_idx]);
-
- if (net_device->destroy && num_outstanding_sends == 0)
- wake_up(&net_device->wait_drain);
-
-- if (netif_queue_stopped(ndev) && !net_device->start_remove &&
-- (hv_ringbuf_avail_percent(&device->channel->outbound)
-- > RING_AVAIL_PERCENT_HIWATER ||
-- num_outstanding_sends < 1))
-- netif_wake_queue(ndev);
-+ if (netif_tx_queue_stopped(netdev_get_tx_queue(ndev, q_idx)) &&
-+ !net_device->start_remove &&
-+ (hv_ringbuf_avail_percent(&channel->outbound) >
-+ RING_AVAIL_PERCENT_HIWATER || queue_sends < 1))
-+ netif_tx_wake_queue(netdev_get_tx_queue(
-+ ndev, q_idx));
- } else {
- netdev_err(ndev, "Unknown send completion packet type- "
- "%d received!!\n", nvsp_packet->hdr.msg_type);
-@@ -505,6 +519,7 @@ int netvsc_send(struct hv_device *device,
- int ret = 0;
- struct nvsp_message sendMessage;
- struct net_device *ndev;
-+ struct vmbus_channel *out_channel = NULL;
- u64 req_id;
-
- net_device = get_outbound_net_device(device);
-@@ -531,15 +546,20 @@ int netvsc_send(struct hv_device *device,
- else
- req_id = 0;
-
-+ out_channel = net_device->chn_table[packet->q_idx];
-+ if (out_channel == NULL)
-+ out_channel = device->channel;
-+ packet->channel = out_channel;
-+
- if (packet->page_buf_cnt) {
-- ret = vmbus_sendpacket_pagebuffer(device->channel,
-+ ret = vmbus_sendpacket_pagebuffer(out_channel,
- packet->page_buf,
- packet->page_buf_cnt,
- &sendMessage,
- sizeof(struct nvsp_message),
- req_id);
- } else {
-- ret = vmbus_sendpacket(device->channel, &sendMessage,
-+ ret = vmbus_sendpacket(out_channel, &sendMessage,
- sizeof(struct nvsp_message),
- req_id,
- VM_PKT_DATA_INBAND,
-@@ -548,17 +568,24 @@ int netvsc_send(struct hv_device *device,
-
- if (ret == 0) {
- atomic_inc(&net_device->num_outstanding_sends);
-- if (hv_ringbuf_avail_percent(&device->channel->outbound) <
-+ atomic_inc(&net_device->queue_sends[packet->q_idx]);
-+
-+ if (hv_ringbuf_avail_percent(&out_channel->outbound) <
- RING_AVAIL_PERCENT_LOWATER) {
-- netif_stop_queue(ndev);
-+ netif_tx_stop_queue(netdev_get_tx_queue(
-+ ndev, packet->q_idx));
-+
- if (atomic_read(&net_device->
-- num_outstanding_sends) < 1)
-- netif_wake_queue(ndev);
-+ queue_sends[packet->q_idx]) < 1)
-+ netif_tx_wake_queue(netdev_get_tx_queue(
-+ ndev, packet->q_idx));
- }
- } else if (ret == -EAGAIN) {
-- netif_stop_queue(ndev);
-- if (atomic_read(&net_device->num_outstanding_sends) < 1) {
-- netif_wake_queue(ndev);
-+ netif_tx_stop_queue(netdev_get_tx_queue(
-+ ndev, packet->q_idx));
-+ if (atomic_read(&net_device->queue_sends[packet->q_idx]) < 1) {
-+ netif_tx_wake_queue(netdev_get_tx_queue(
-+ ndev, packet->q_idx));
- ret = -ENOSPC;
- }
- } else {
-@@ -570,6 +597,7 @@ int netvsc_send(struct hv_device *device,
- }
-
- static void netvsc_send_recv_completion(struct hv_device *device,
-+ struct vmbus_channel *channel,
- struct netvsc_device *net_device,
- u64 transaction_id, u32 status)
- {
-@@ -587,7 +615,7 @@ static void netvsc_send_recv_completion(struct hv_device *device,
-
- retry_send_cmplt:
- /* Send the completion */
-- ret = vmbus_sendpacket(device->channel, &recvcompMessage,
-+ ret = vmbus_sendpacket(channel, &recvcompMessage,
- sizeof(struct nvsp_message), transaction_id,
- VM_PKT_COMP, 0);
- if (ret == 0) {
-@@ -618,6 +646,7 @@ static void netvsc_receive_completion(void *context)
- {
- struct hv_netvsc_packet *packet = context;
- struct hv_device *device = packet->device;
-+ struct vmbus_channel *channel;
- struct netvsc_device *net_device;
- u64 transaction_id = 0;
- bool fsend_receive_comp = false;
-@@ -649,6 +678,7 @@ static void netvsc_receive_completion(void *context)
- */
- if (packet->xfer_page_pkt->count == 0) {
- fsend_receive_comp = true;
-+ channel = packet->xfer_page_pkt->channel;
- transaction_id = packet->completion.recv.recv_completion_tid;
- status = packet->xfer_page_pkt->status;
- list_add_tail(&packet->xfer_page_pkt->list_ent,
-@@ -662,12 +692,13 @@ static void netvsc_receive_completion(void *context)
-
- /* Send a receive completion for the xfer page packet */
- if (fsend_receive_comp)
-- netvsc_send_recv_completion(device, net_device, transaction_id,
-- status);
-+ netvsc_send_recv_completion(device, channel, net_device,
-+ transaction_id, status);
-
- }
-
- static void netvsc_receive(struct netvsc_device *net_device,
-+ struct vmbus_channel *channel,
- struct hv_device *device,
- struct vmpacket_descriptor *packet)
- {
-@@ -748,7 +779,7 @@ static void netvsc_receive(struct netvsc_device *net_device,
- spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
- flags);
-
-- netvsc_send_recv_completion(device, net_device,
-+ netvsc_send_recv_completion(device, channel, net_device,
- vmxferpage_packet->d.trans_id,
- NVSP_STAT_FAIL);
-
-@@ -759,6 +790,7 @@ static void netvsc_receive(struct netvsc_device *net_device,
- xferpage_packet = (struct xferpage_packet *)listHead.next;
- list_del(&xferpage_packet->list_ent);
- xferpage_packet->status = NVSP_STAT_SUCCESS;
-+ xferpage_packet->channel = channel;
-
- /* This is how much we can satisfy */
- xferpage_packet->count = count - 1;
-@@ -800,10 +832,45 @@ static void netvsc_receive(struct netvsc_device *net_device,
-
- }
-
--static void netvsc_channel_cb(void *context)
-+
-+static void netvsc_send_table(struct hv_device *hdev,
-+ struct vmpacket_descriptor *vmpkt)
-+{
-+ struct netvsc_device *nvscdev;
-+ struct net_device *ndev;
-+ struct nvsp_message *nvmsg;
-+ int i;
-+ u32 count, *tab;
-+
-+ nvscdev = get_outbound_net_device(hdev);
-+ if (!nvscdev)
-+ return;
-+ ndev = nvscdev->ndev;
-+
-+ nvmsg = (struct nvsp_message *)((unsigned long)vmpkt +
-+ (vmpkt->offset8 << 3));
-+
-+ if (nvmsg->hdr.msg_type != NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE)
-+ return;
-+
-+ count = nvmsg->msg.v5_msg.send_table.count;
-+ if (count != VRSS_SEND_TAB_SIZE) {
-+ netdev_err(ndev, "Received wrong send-table size:%u\n", count);
-+ return;
-+ }
-+
-+ tab = (u32 *)((unsigned long)&nvmsg->msg.v5_msg.send_table +
-+ nvmsg->msg.v5_msg.send_table.offset);
-+
-+ for (i = 0; i < count; i++)
-+ nvscdev->send_table[i] = tab[i];
-+}
-+
-+void netvsc_channel_cb(void *context)
- {
- int ret;
-- struct hv_device *device = context;
-+ struct vmbus_channel *channel = (struct vmbus_channel *)context;
-+ struct hv_device *device;
- struct netvsc_device *net_device;
- u32 bytes_recvd;
- u64 request_id;
-@@ -812,14 +879,19 @@ static void netvsc_channel_cb(void *context)
- int bufferlen = NETVSC_PACKET_SIZE;
- struct net_device *ndev;
-
-+ if (channel->primary_channel != NULL)
-+ device = channel->primary_channel->device_obj;
-+ else
-+ device = channel->device_obj;
-+
- net_device = get_inbound_net_device(device);
- if (!net_device)
- return;
- ndev = net_device->ndev;
-- buffer = net_device->cb_buffer;
-+ buffer = get_per_channel_state(channel);
-
- do {
-- ret = vmbus_recvpacket_raw(device->channel, buffer, bufferlen,
-+ ret = vmbus_recvpacket_raw(channel, buffer, bufferlen,
- &bytes_recvd, &request_id);
- if (ret == 0) {
- if (bytes_recvd > 0) {
-@@ -831,8 +903,12 @@ static void netvsc_channel_cb(void *context)
- break;
-
- case VM_PKT_DATA_USING_XFER_PAGES:
-- netvsc_receive(net_device,
-- device, desc);
-+ netvsc_receive(net_device, channel,
-+ device, desc);
-+ break;
-+
-+ case VM_PKT_DATA_INBAND:
-+ netvsc_send_table(device, desc);
- break;
-
- default:
-@@ -893,6 +969,8 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
- goto cleanup;
- }
-
-+ net_device->ring_size = ring_size;
-+
- /*
- * Coming into this function, struct net_device * is
- * registered as the driver private data.
-@@ -917,10 +995,12 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
- }
- init_completion(&net_device->channel_init_wait);
-
-+ set_per_channel_state(device->channel, net_device->cb_buffer);
-+
- /* Open the channel */
- ret = vmbus_open(device->channel, ring_size * PAGE_SIZE,
- ring_size * PAGE_SIZE, NULL, 0,
-- netvsc_channel_cb, device);
-+ netvsc_channel_cb, device->channel);
-
- if (ret != 0) {
- netdev_err(ndev, "unable to open channel: %d\n", ret);
-@@ -930,6 +1010,8 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
- /* Channel is opened */
- pr_info("hv_netvsc channel opened successfully\n");
-
-+ net_device->chn_table[0] = device->channel;
-+
- /* Connect with the NetVsp */
- ret = netvsc_connect_vsp(device);
- if (ret != 0) {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index ce6d870dd7ae..e486dbd33f61 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -101,7 +101,7 @@ static int netvsc_open(struct net_device *net)
- return ret;
- }
-
-- netif_start_queue(net);
-+ netif_tx_start_all_queues(net);
-
- nvdev = hv_get_drvdata(device_obj);
- rdev = nvdev->extension;
-@@ -149,6 +149,88 @@ static void *init_ppi_data(struct rndis_message *msg, u32 ppi_size,
- return ppi;
- }
-
-+union sub_key {
-+ u64 k;
-+ struct {
-+ u8 pad[3];
-+ u8 kb;
-+ u32 ka;
-+ };
-+};
-+
-+/* Toeplitz hash function
-+ * data: network byte order
-+ * return: host byte order
-+ */
-+static u32 comp_hash(u8 *key, int klen, u8 *data, int dlen)
-+{
-+ union sub_key subk;
-+ int k_next = 4;
-+ u8 dt;
-+ int i, j;
-+ u32 ret = 0;
-+
-+ subk.k = 0;
-+ subk.ka = ntohl(*(u32 *)key);
-+
-+ for (i = 0; i < dlen; i++) {
-+ subk.kb = key[k_next];
-+ k_next = (k_next + 1) % klen;
-+ dt = data[i];
-+ for (j = 0; j < 8; j++) {
-+ if (dt & 0x80)
-+ ret ^= subk.ka;
-+ dt <<= 1;
-+ subk.k <<= 1;
-+ }
-+ }
-+
-+ return ret;
-+}
-+
-+static bool netvsc_set_hash(u32 *hash, struct sk_buff *skb)
-+{
-+ struct iphdr *iphdr;
-+ int data_len;
-+ bool ret = false;
-+
-+ if (eth_hdr(skb)->h_proto != htons(ETH_P_IP))
-+ return false;
-+
-+ iphdr = ip_hdr(skb);
-+
-+ if (iphdr->version == 4) {
-+ if (iphdr->protocol == IPPROTO_TCP)
-+ data_len = 12;
-+ else
-+ data_len = 8;
-+ *hash = comp_hash(netvsc_hash_key, HASH_KEYLEN,
-+ (u8 *)&iphdr->saddr, data_len);
-+ ret = true;
-+ }
-+
-+ return ret;
-+}
-+
-+static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
-+ void *accel_priv, select_queue_fallback_t fallback)
-+{
-+ struct net_device_context *net_device_ctx = netdev_priv(ndev);
-+ struct hv_device *hdev = net_device_ctx->device_ctx;
-+ struct netvsc_device *nvsc_dev = hv_get_drvdata(hdev);
-+ u32 hash;
-+ u16 q_idx = 0;
-+
-+ if (nvsc_dev == NULL || ndev->real_num_tx_queues <= 1)
-+ return 0;
-+
-+ if (netvsc_set_hash(&hash, skb))
-+ q_idx = nvsc_dev->send_table[hash % VRSS_SEND_TAB_SIZE] %
-+ ndev->real_num_tx_queues;
-+
-+ return q_idx;
-+}
-+
- static void netvsc_xmit_completion(void *context)
- {
- struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-@@ -334,6 +416,8 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-
- packet->vlan_tci = skb->vlan_tci;
-
-+ packet->q_idx = skb_get_queue_mapping(skb);
-+
- packet->is_data_pkt = true;
- packet->total_data_buflen = skb->len;
-
-@@ -559,6 +643,10 @@ int netvsc_recv_callback(struct hv_device *device_obj,
- __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
- packet->vlan_tci);
-
-+ skb_record_rx_queue(skb, packet->xfer_page_pkt->channel->
-+ offermsg.offer.sub_channel_index %
-+ net->real_num_rx_queues);
-+
- net->stats.rx_packets++;
- net->stats.rx_bytes += packet->total_data_buflen;
-
-@@ -607,7 +695,7 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu)
- hv_set_drvdata(hdev, ndev);
- device_info.ring_size = ring_size;
- rndis_filter_device_add(hdev, &device_info);
-- netif_wake_queue(ndev);
-+ netif_tx_wake_all_queues(ndev);
-
- return 0;
- }
-@@ -653,6 +741,7 @@ static const struct net_device_ops device_ops = {
- .ndo_change_mtu = netvsc_change_mtu,
- .ndo_validate_addr = eth_validate_addr,
- .ndo_set_mac_address = netvsc_set_mac_addr,
-+ .ndo_select_queue = netvsc_select_queue,
- };
-
- /*
-@@ -699,9 +788,11 @@ static int netvsc_probe(struct hv_device *dev,
- struct net_device *net = NULL;
- struct net_device_context *net_device_ctx;
- struct netvsc_device_info device_info;
-+ struct netvsc_device *nvdev;
- int ret;
-
-- net = alloc_etherdev(sizeof(struct net_device_context));
-+ net = alloc_etherdev_mq(sizeof(struct net_device_context),
-+ num_online_cpus());
- if (!net)
- return -ENOMEM;
-
-@@ -734,6 +825,12 @@ static int netvsc_probe(struct hv_device *dev,
- }
- memcpy(net->dev_addr, device_info.mac_adr, ETH_ALEN);
-
-+ nvdev = hv_get_drvdata(dev);
-+ netif_set_real_num_tx_queues(net, nvdev->num_chn);
-+ netif_set_real_num_rx_queues(net, nvdev->num_chn);
-+ dev_info(&dev->device, "real num tx,rx queues:%u, %u\n",
-+ net->real_num_tx_queues, net->real_num_rx_queues);
-+
- ret = register_netdev(net);
- if (ret != 0) {
- pr_err("Unable to register netdev.\n");
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 143a98caf618..d92cfbe43410 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -31,7 +31,7 @@
- #include "hyperv_net.h"
-
-
--#define RNDIS_EXT_LEN 100
-+#define RNDIS_EXT_LEN PAGE_SIZE
- struct rndis_request {
- struct list_head list_ent;
- struct completion wait_event;
-@@ -94,6 +94,8 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
- rndis_msg->ndis_msg_type = msg_type;
- rndis_msg->msg_len = msg_len;
-
-+ request->pkt.q_idx = 0;
-+
- /*
- * Set the request id. This field is always after the rndis header for
- * request/response packet types so we just used the SetRequest as a
-@@ -509,6 +511,19 @@ static int rndis_filter_query_device(struct rndis_device *dev, u32 oid,
- query->info_buflen = 0;
- query->dev_vc_handle = 0;
-
-+ if (oid == OID_GEN_RECEIVE_SCALE_CAPABILITIES) {
-+ struct ndis_recv_scale_cap *cap;
-+
-+ request->request_msg.msg_len +=
-+ sizeof(struct ndis_recv_scale_cap);
-+ query->info_buflen = sizeof(struct ndis_recv_scale_cap);
-+ cap = (struct ndis_recv_scale_cap *)((unsigned long)query +
-+ query->info_buf_offset);
-+ cap->hdr.type = NDIS_OBJECT_TYPE_RSS_CAPABILITIES;
-+ cap->hdr.rev = NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
-+ cap->hdr.size = sizeof(struct ndis_recv_scale_cap);
-+ }
-+
- ret = rndis_filter_send_request(dev, request);
- if (ret != 0)
- goto cleanup;
-@@ -695,6 +710,89 @@ cleanup:
- return ret;
- }
-
-+u8 netvsc_hash_key[HASH_KEYLEN] = {
-+ 0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2,
-+ 0x41, 0x67, 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0,
-+ 0xd0, 0xca, 0x2b, 0xcb, 0xae, 0x7b, 0x30, 0xb4,
-+ 0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30, 0xf2, 0x0c,
-+ 0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa
-+};
-+
-+int rndis_filter_set_rss_param(struct rndis_device *rdev, int num_queue)
-+{
-+ struct net_device *ndev = rdev->net_dev->ndev;
-+ struct rndis_request *request;
-+ struct rndis_set_request *set;
-+ struct rndis_set_complete *set_complete;
-+ u32 extlen = sizeof(struct ndis_recv_scale_param) +
-+ 4*ITAB_NUM + HASH_KEYLEN;
-+ struct ndis_recv_scale_param *rssp;
-+ u32 *itab;
-+ u8 *keyp;
-+ int i, t, ret;
-+
-+ request = get_rndis_request(
-+ rdev, RNDIS_MSG_SET,
-+ RNDIS_MESSAGE_SIZE(struct rndis_set_request) + extlen);
-+ if (!request)
-+ return -ENOMEM;
-+
-+ set = &request->request_msg.msg.set_req;
-+ set->oid = OID_GEN_RECEIVE_SCALE_PARAMETERS;
-+ set->info_buflen = extlen;
-+ set->info_buf_offset = sizeof(struct rndis_set_request);
-+ set->dev_vc_handle = 0;
-+
-+ rssp = (struct ndis_recv_scale_param *)(set + 1);
-+ rssp->hdr.type = NDIS_OBJECT_TYPE_RSS_PARAMETERS;
-+ rssp->hdr.rev = NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2;
-+ rssp->hdr.size = sizeof(struct ndis_recv_scale_param);
-+ rssp->flag = 0;
-+ rssp->hashinfo = NDIS_HASH_FUNC_TOEPLITZ | NDIS_HASH_IPV4 |
-+ NDIS_HASH_TCP_IPV4;
-+ rssp->indirect_tabsize = 4*ITAB_NUM;
-+ rssp->indirect_taboffset = sizeof(struct ndis_recv_scale_param);
-+ rssp->hashkey_size = HASH_KEYLEN;
-+ rssp->kashkey_offset = rssp->indirect_taboffset +
-+ rssp->indirect_tabsize;
-+
-+ /* Set indirection table entries */
-+ itab = (u32 *)(rssp + 1);
-+ for (i = 0; i < ITAB_NUM; i++)
-+ itab[i] = i % num_queue;
-+
-+ /* Set hask key values */
-+ keyp = (u8 *)((unsigned long)rssp + rssp->kashkey_offset);
-+ for (i = 0; i < HASH_KEYLEN; i++)
-+ keyp[i] = netvsc_hash_key[i];
-+
-+
-+ ret = rndis_filter_send_request(rdev, request);
-+ if (ret != 0)
-+ goto cleanup;
-+
-+ t = wait_for_completion_timeout(&request->wait_event, 5*HZ);
-+ if (t == 0) {
-+ netdev_err(ndev, "timeout before we got a set response...\n");
-+ /* can't put_rndis_request, since we may still receive a
-+ * send-completion.
-+ */
-+ return -ETIMEDOUT;
-+ } else {
-+ set_complete = &request->response_msg.msg.set_complete;
-+ if (set_complete->status != RNDIS_STATUS_SUCCESS) {
-+ netdev_err(ndev, "Fail to set RSS parameters:0x%x\n",
-+ set_complete->status);
-+ ret = -EINVAL;
-+ }
-+ }
-+
-+cleanup:
-+ put_rndis_request(rdev, request);
-+ return ret;
-+}
-+
-+
- static int rndis_filter_query_device_link_status(struct rndis_device *dev)
- {
- u32 size = sizeof(u32);
-@@ -886,6 +984,28 @@ static int rndis_filter_close_device(struct rndis_device *dev)
- return ret;
- }
-
-+static void netvsc_sc_open(struct vmbus_channel *new_sc)
-+{
-+ struct netvsc_device *nvscdev;
-+ u16 chn_index = new_sc->offermsg.offer.sub_channel_index;
-+ int ret;
-+
-+ nvscdev = hv_get_drvdata(new_sc->primary_channel->device_obj);
-+
-+ if (chn_index >= nvscdev->num_chn)
-+ return;
-+
-+ set_per_channel_state(new_sc, nvscdev->sub_cb_buf + (chn_index - 1) *
-+ NETVSC_PACKET_SIZE);
-+
-+ ret = vmbus_open(new_sc, nvscdev->ring_size * PAGE_SIZE,
-+ nvscdev->ring_size * PAGE_SIZE, NULL, 0,
-+ netvsc_channel_cb, new_sc);
-+
-+ if (ret == 0)
-+ nvscdev->chn_table[chn_index] = new_sc;
-+}
-+
- int rndis_filter_device_add(struct hv_device *dev,
- void *additional_info)
- {
-@@ -894,6 +1014,10 @@ int rndis_filter_device_add(struct hv_device *dev,
- struct rndis_device *rndis_device;
- struct netvsc_device_info *device_info = additional_info;
- struct ndis_offload_params offloads;
-+ struct nvsp_message *init_packet;
-+ int t;
-+ struct ndis_recv_scale_cap rsscap;
-+ u32 rsscap_size = sizeof(struct ndis_recv_scale_cap);
-
- rndis_device = get_rndis_device();
- if (!rndis_device)
-@@ -913,6 +1037,7 @@ int rndis_filter_device_add(struct hv_device *dev,
-
- /* Initialize the rndis device */
- net_device = hv_get_drvdata(dev);
-+ net_device->num_chn = 1;
-
- net_device->extension = rndis_device;
- rndis_device->net_dev = net_device;
-@@ -952,7 +1077,6 @@ int rndis_filter_device_add(struct hv_device *dev,
- if (ret)
- goto err_dev_remv;
-
--
- rndis_filter_query_device_link_status(rndis_device);
-
- device_info->link_state = rndis_device->link_state;
-@@ -961,7 +1085,66 @@ int rndis_filter_device_add(struct hv_device *dev,
- rndis_device->hw_mac_adr,
- device_info->link_state ? "down" : "up");
-
-- return ret;
-+ if (net_device->nvsp_version < NVSP_PROTOCOL_VERSION_5)
-+ return 0;
-+
-+ /* vRSS setup */
-+ memset(&rsscap, 0, rsscap_size);
-+ ret = rndis_filter_query_device(rndis_device,
-+ OID_GEN_RECEIVE_SCALE_CAPABILITIES,
-+ &rsscap, &rsscap_size);
-+ if (ret || rsscap.num_recv_que < 2)
-+ goto out;
-+
-+ net_device->num_chn = (num_online_cpus() < rsscap.num_recv_que) ?
-+ num_online_cpus() : rsscap.num_recv_que;
-+ if (net_device->num_chn == 1)
-+ goto out;
-+
-+ net_device->sub_cb_buf = vzalloc((net_device->num_chn - 1) *
-+ NETVSC_PACKET_SIZE);
-+ if (!net_device->sub_cb_buf) {
-+ net_device->num_chn = 1;
-+ dev_info(&dev->device, "No memory for subchannels.\n");
-+ goto out;
-+ }
-+
-+ vmbus_set_sc_create_callback(dev->channel, netvsc_sc_open);
-+
-+ init_packet = &net_device->channel_init_pkt;
-+ memset(init_packet, 0, sizeof(struct nvsp_message));
-+ init_packet->hdr.msg_type = NVSP_MSG5_TYPE_SUBCHANNEL;
-+ init_packet->msg.v5_msg.subchn_req.op = NVSP_SUBCHANNEL_ALLOCATE;
-+ init_packet->msg.v5_msg.subchn_req.num_subchannels =
-+ net_device->num_chn - 1;
-+ ret = vmbus_sendpacket(dev->channel, init_packet,
-+ sizeof(struct nvsp_message),
-+ (unsigned long)init_packet,
-+ VM_PKT_DATA_INBAND,
-+ VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
-+ if (ret)
-+ goto out;
-+ t = wait_for_completion_timeout(&net_device->channel_init_wait, 5*HZ);
-+ if (t == 0) {
-+ ret = -ETIMEDOUT;
-+ goto out;
-+ }
-+ if (init_packet->msg.v5_msg.subchn_comp.status !=
-+ NVSP_STAT_SUCCESS) {
-+ ret = -ENODEV;
-+ goto out;
-+ }
-+ net_device->num_chn = 1 +
-+ init_packet->msg.v5_msg.subchn_comp.num_subchannels;
-+
-+ vmbus_are_subchannels_present(dev->channel);
-+
-+ ret = rndis_filter_set_rss_param(rndis_device, net_device->num_chn);
-+
-+out:
-+ if (ret)
-+ net_device->num_chn = 1;
-+ return 0; /* return 0 because primary channel can be used alone */
-
- err_dev_remv:
- rndis_filter_device_remove(dev);
---
-2.4.3
-
+++ /dev/null
-From d6bf5567c1438b4f3b1bcff1a1525ddb1754df19 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 14:54:43 -0700
-Subject: [PATCH 17/25] hyperv: Remove recv_pkt_list and lock
-
-Removed recv_pkt_list and lock, and updated related code, so that
-the locking overhead is reduced especially when multiple channels
-are in use.
-
-The recv_pkt_list isn't actually necessary because the packets are
-processed sequentially in each channel. It has been replaced by a
-local variable, and the related lock for this list is also removed.
-The is_data_pkt field is not used in receive path, so its assignment
-is cleaned up.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 33 --------
- drivers/net/hyperv/netvsc.c | 174 +++-----------------------------------
- drivers/net/hyperv/netvsc_drv.c | 2 +-
- drivers/net/hyperv/rndis_filter.c | 2 -
- 4 files changed, 13 insertions(+), 198 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 57eb3f906d64..a1af0f7711e2 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -119,27 +119,14 @@ struct ndis_recv_scale_param { /* NDIS_RECEIVE_SCALE_PARAMETERS */
- };
-
- /* Fwd declaration */
--struct hv_netvsc_packet;
- struct ndis_tcp_ip_checksum_info;
-
--/* Represent the xfer page packet which contains 1 or more netvsc packet */
--struct xferpage_packet {
-- struct list_head list_ent;
-- u32 status;
--
-- /* # of netvsc packets this xfer packet contains */
-- u32 count;
--
-- struct vmbus_channel *channel;
--};
--
- /*
- * Represent netvsc packet which contains 1 RNDIS and 1 ethernet frame
- * within the RNDIS
- */
- struct hv_netvsc_packet {
- /* Bookkeeping stuff */
-- struct list_head list_ent;
- u32 status;
-
- struct hv_device *device;
-@@ -149,19 +136,8 @@ struct hv_netvsc_packet {
- u16 q_idx;
- struct vmbus_channel *channel;
-
-- /*
-- * Valid only for receives when we break a xfer page packet
-- * into multiple netvsc packets
-- */
-- struct xferpage_packet *xfer_page_pkt;
--
- union {
- struct {
-- u64 recv_completion_tid;
-- void *recv_completion_ctx;
-- void (*recv_completion)(void *context);
-- } recv;
-- struct {
- u64 send_completion_tid;
- void *send_completion_ctx;
- void (*send_completion)(void *context);
-@@ -613,9 +589,6 @@ struct nvsp_message {
-
- #define NETVSC_RECEIVE_BUFFER_ID 0xcafe
-
--/* Preallocated receive packets */
--#define NETVSC_RECEIVE_PACKETLIST_COUNT 256
--
- #define NETVSC_PACKET_SIZE 2048
-
- #define VRSS_SEND_TAB_SIZE 16
-@@ -630,12 +603,6 @@ struct netvsc_device {
- wait_queue_head_t wait_drain;
- bool start_remove;
- bool destroy;
-- /*
-- * List of free preallocated hv_netvsc_packet to represent receive
-- * packet
-- */
-- struct list_head recv_pkt_list;
-- spinlock_t recv_pkt_list_lock;
-
- /* Receive buffer allocated by us but manages by NetVSP */
- void *recv_buf;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index e7e77f12bc38..b10334773b32 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -387,7 +387,6 @@ static void netvsc_disconnect_vsp(struct netvsc_device *net_device)
- int netvsc_device_remove(struct hv_device *device)
- {
- struct netvsc_device *net_device;
-- struct hv_netvsc_packet *netvsc_packet, *pos;
- unsigned long flags;
-
- net_device = hv_get_drvdata(device);
-@@ -416,12 +415,6 @@ int netvsc_device_remove(struct hv_device *device)
- vmbus_close(device->channel);
-
- /* Release all resources */
-- list_for_each_entry_safe(netvsc_packet, pos,
-- &net_device->recv_pkt_list, list_ent) {
-- list_del(&netvsc_packet->list_ent);
-- kfree(netvsc_packet);
-- }
--
- if (net_device->sub_cb_buf)
- vfree(net_device->sub_cb_buf);
-
-@@ -641,62 +634,6 @@ retry_send_cmplt:
- }
- }
-
--/* Send a receive completion packet to RNDIS device (ie NetVsp) */
--static void netvsc_receive_completion(void *context)
--{
-- struct hv_netvsc_packet *packet = context;
-- struct hv_device *device = packet->device;
-- struct vmbus_channel *channel;
-- struct netvsc_device *net_device;
-- u64 transaction_id = 0;
-- bool fsend_receive_comp = false;
-- unsigned long flags;
-- struct net_device *ndev;
-- u32 status = NVSP_STAT_NONE;
--
-- /*
-- * Even though it seems logical to do a GetOutboundNetDevice() here to
-- * send out receive completion, we are using GetInboundNetDevice()
-- * since we may have disable outbound traffic already.
-- */
-- net_device = get_inbound_net_device(device);
-- if (!net_device)
-- return;
-- ndev = net_device->ndev;
--
-- /* Overloading use of the lock. */
-- spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
--
-- if (packet->status != NVSP_STAT_SUCCESS)
-- packet->xfer_page_pkt->status = NVSP_STAT_FAIL;
--
-- packet->xfer_page_pkt->count--;
--
-- /*
-- * Last one in the line that represent 1 xfer page packet.
-- * Return the xfer page packet itself to the freelist
-- */
-- if (packet->xfer_page_pkt->count == 0) {
-- fsend_receive_comp = true;
-- channel = packet->xfer_page_pkt->channel;
-- transaction_id = packet->completion.recv.recv_completion_tid;
-- status = packet->xfer_page_pkt->status;
-- list_add_tail(&packet->xfer_page_pkt->list_ent,
-- &net_device->recv_pkt_list);
--
-- }
--
-- /* Put the packet back */
-- list_add_tail(&packet->list_ent, &net_device->recv_pkt_list);
-- spin_unlock_irqrestore(&net_device->recv_pkt_list_lock, flags);
--
-- /* Send a receive completion for the xfer page packet */
-- if (fsend_receive_comp)
-- netvsc_send_recv_completion(device, channel, net_device,
-- transaction_id, status);
--
--}
--
- static void netvsc_receive(struct netvsc_device *net_device,
- struct vmbus_channel *channel,
- struct hv_device *device,
-@@ -704,16 +641,13 @@ static void netvsc_receive(struct netvsc_device *net_device,
- {
- struct vmtransfer_page_packet_header *vmxferpage_packet;
- struct nvsp_message *nvsp_packet;
-- struct hv_netvsc_packet *netvsc_packet = NULL;
-- /* struct netvsc_driver *netvscDriver; */
-- struct xferpage_packet *xferpage_packet = NULL;
-+ struct hv_netvsc_packet nv_pkt;
-+ struct hv_netvsc_packet *netvsc_packet = &nv_pkt;
-+ u32 status = NVSP_STAT_SUCCESS;
- int i;
- int count = 0;
-- unsigned long flags;
- struct net_device *ndev;
-
-- LIST_HEAD(listHead);
--
- ndev = net_device->ndev;
-
- /*
-@@ -746,78 +680,14 @@ static void netvsc_receive(struct netvsc_device *net_device,
- return;
- }
-
-- /*
-- * Grab free packets (range count + 1) to represent this xfer
-- * page packet. +1 to represent the xfer page packet itself.
-- * We grab it here so that we know exactly how many we can
-- * fulfil
-- */
-- spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
-- while (!list_empty(&net_device->recv_pkt_list)) {
-- list_move_tail(net_device->recv_pkt_list.next, &listHead);
-- if (++count == vmxferpage_packet->range_cnt + 1)
-- break;
-- }
-- spin_unlock_irqrestore(&net_device->recv_pkt_list_lock, flags);
--
-- /*
-- * We need at least 2 netvsc pkts (1 to represent the xfer
-- * page and at least 1 for the range) i.e. we can handled
-- * some of the xfer page packet ranges...
-- */
-- if (count < 2) {
-- netdev_err(ndev, "Got only %d netvsc pkt...needed "
-- "%d pkts. Dropping this xfer page packet completely!\n",
-- count, vmxferpage_packet->range_cnt + 1);
--
-- /* Return it to the freelist */
-- spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
-- for (i = count; i != 0; i--) {
-- list_move_tail(listHead.next,
-- &net_device->recv_pkt_list);
-- }
-- spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
-- flags);
--
-- netvsc_send_recv_completion(device, channel, net_device,
-- vmxferpage_packet->d.trans_id,
-- NVSP_STAT_FAIL);
--
-- return;
-- }
--
-- /* Remove the 1st packet to represent the xfer page packet itself */
-- xferpage_packet = (struct xferpage_packet *)listHead.next;
-- list_del(&xferpage_packet->list_ent);
-- xferpage_packet->status = NVSP_STAT_SUCCESS;
-- xferpage_packet->channel = channel;
--
-- /* This is how much we can satisfy */
-- xferpage_packet->count = count - 1;
--
-- if (xferpage_packet->count != vmxferpage_packet->range_cnt) {
-- netdev_err(ndev, "Needed %d netvsc pkts to satisfy "
-- "this xfer page...got %d\n",
-- vmxferpage_packet->range_cnt, xferpage_packet->count);
-- }
-+ count = vmxferpage_packet->range_cnt;
-+ netvsc_packet->device = device;
-+ netvsc_packet->channel = channel;
-
- /* Each range represents 1 RNDIS pkt that contains 1 ethernet frame */
-- for (i = 0; i < (count - 1); i++) {
-- netvsc_packet = (struct hv_netvsc_packet *)listHead.next;
-- list_del(&netvsc_packet->list_ent);
--
-+ for (i = 0; i < count; i++) {
- /* Initialize the netvsc packet */
- netvsc_packet->status = NVSP_STAT_SUCCESS;
-- netvsc_packet->xfer_page_pkt = xferpage_packet;
-- netvsc_packet->completion.recv.recv_completion =
-- netvsc_receive_completion;
-- netvsc_packet->completion.recv.recv_completion_ctx =
-- netvsc_packet;
-- netvsc_packet->device = device;
-- /* Save this so that we can send it back */
-- netvsc_packet->completion.recv.recv_completion_tid =
-- vmxferpage_packet->d.trans_id;
--
- netvsc_packet->data = (void *)((unsigned long)net_device->
- recv_buf + vmxferpage_packet->ranges[i].byte_offset);
- netvsc_packet->total_data_buflen =
-@@ -826,10 +696,12 @@ static void netvsc_receive(struct netvsc_device *net_device,
- /* Pass it to the upper layer */
- rndis_filter_receive(device, netvsc_packet);
-
-- netvsc_receive_completion(netvsc_packet->
-- completion.recv.recv_completion_ctx);
-+ if (netvsc_packet->status != NVSP_STAT_SUCCESS)
-+ status = NVSP_STAT_FAIL;
- }
-
-+ netvsc_send_recv_completion(device, channel, net_device,
-+ vmxferpage_packet->d.trans_id, status);
- }
-
-
-@@ -956,11 +828,9 @@ void netvsc_channel_cb(void *context)
- int netvsc_device_add(struct hv_device *device, void *additional_info)
- {
- int ret = 0;
-- int i;
- int ring_size =
- ((struct netvsc_device_info *)additional_info)->ring_size;
- struct netvsc_device *net_device;
-- struct hv_netvsc_packet *packet, *pos;
- struct net_device *ndev;
-
- net_device = alloc_net_device(device);
-@@ -981,18 +851,6 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
- ndev = net_device->ndev;
-
- /* Initialize the NetVSC channel extension */
-- spin_lock_init(&net_device->recv_pkt_list_lock);
--
-- INIT_LIST_HEAD(&net_device->recv_pkt_list);
--
-- for (i = 0; i < NETVSC_RECEIVE_PACKETLIST_COUNT; i++) {
-- packet = kzalloc(sizeof(struct hv_netvsc_packet), GFP_KERNEL);
-- if (!packet)
-- break;
--
-- list_add_tail(&packet->list_ent,
-- &net_device->recv_pkt_list);
-- }
- init_completion(&net_device->channel_init_wait);
-
- set_per_channel_state(device->channel, net_device->cb_buffer);
-@@ -1028,16 +886,8 @@ close:
-
- cleanup:
-
-- if (net_device) {
-- list_for_each_entry_safe(packet, pos,
-- &net_device->recv_pkt_list,
-- list_ent) {
-- list_del(&packet->list_ent);
-- kfree(packet);
-- }
--
-+ if (net_device)
- kfree(net_device);
-- }
-
- return ret;
- }
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index e486dbd33f61..6cc4db064fec 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -643,7 +643,7 @@ int netvsc_recv_callback(struct hv_device *device_obj,
- __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
- packet->vlan_tci);
-
-- skb_record_rx_queue(skb, packet->xfer_page_pkt->channel->
-+ skb_record_rx_queue(skb, packet->channel->
- offermsg.offer.sub_channel_index %
- net->real_num_rx_queues);
-
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index d92cfbe43410..48f5a0fbd674 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -401,8 +401,6 @@ static void rndis_filter_receive_data(struct rndis_device *dev,
- pkt->total_data_buflen = rndis_pkt->data_len;
- pkt->data = (void *)((unsigned long)pkt->data + data_offset);
-
-- pkt->is_data_pkt = true;
--
- vlan = rndis_get_ppi(rndis_pkt, IEEE_8021Q_INFO);
- if (vlan) {
- pkt->vlan_tci = VLAN_TAG_PRESENT | vlan->vlanid |
---
-2.4.3
-
+++ /dev/null
-From d6eeeb452c1e6e7cf14f4a581a8f2ea2c50ec17a Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 14:54:44 -0700
-Subject: [PATCH 18/25] hyperv: Simplify the send_completion variables
-
-The union contains only one member now, so we use the variables in it directly.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 10 +++-------
- drivers/net/hyperv/netvsc.c | 7 +++----
- drivers/net/hyperv/netvsc_drv.c | 8 ++++----
- drivers/net/hyperv/rndis_filter.c | 2 +-
- 4 files changed, 11 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index a1af0f7711e2..d1f7826aa75f 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -136,13 +136,9 @@ struct hv_netvsc_packet {
- u16 q_idx;
- struct vmbus_channel *channel;
-
-- union {
-- struct {
-- u64 send_completion_tid;
-- void *send_completion_ctx;
-- void (*send_completion)(void *context);
-- } send;
-- } completion;
-+ u64 send_completion_tid;
-+ void *send_completion_ctx;
-+ void (*send_completion)(void *context);
-
- /* This points to the memory after page_buf */
- struct rndis_message *rndis_msg;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index b10334773b32..bbee44635035 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -479,9 +479,8 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- if (nvsc_packet) {
- q_idx = nvsc_packet->q_idx;
- channel = nvsc_packet->channel;
-- nvsc_packet->completion.send.send_completion(
-- nvsc_packet->completion.send.
-- send_completion_ctx);
-+ nvsc_packet->send_completion(nvsc_packet->
-+ send_completion_ctx);
- }
-
- num_outstanding_sends =
-@@ -534,7 +533,7 @@ int netvsc_send(struct hv_device *device,
- 0xFFFFFFFF;
- sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = 0;
-
-- if (packet->completion.send.send_completion)
-+ if (packet->send_completion)
- req_id = (ulong)packet;
- else
- req_id = 0;
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 6cc4db064fec..f3d3525ed42d 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -235,7 +235,7 @@ static void netvsc_xmit_completion(void *context)
- {
- struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
- struct sk_buff *skb = (struct sk_buff *)
-- (unsigned long)packet->completion.send.send_completion_tid;
-+ (unsigned long)packet->send_completion_tid;
-
- kfree(packet);
-
-@@ -426,9 +426,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- (num_data_pgs * sizeof(struct hv_page_buffer)));
-
- /* Set the completion routine */
-- packet->completion.send.send_completion = netvsc_xmit_completion;
-- packet->completion.send.send_completion_ctx = packet;
-- packet->completion.send.send_completion_tid = (unsigned long)skb;
-+ packet->send_completion = netvsc_xmit_completion;
-+ packet->send_completion_ctx = packet;
-+ packet->send_completion_tid = (unsigned long)skb;
-
- isvlan = packet->vlan_tci & VLAN_TAG_PRESENT;
-
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 48f5a0fbd674..99c527adae5b 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -236,7 +236,7 @@ static int rndis_filter_send_request(struct rndis_device *dev,
- packet->page_buf[0].len;
- }
-
-- packet->completion.send.send_completion = NULL;
-+ packet->send_completion = NULL;
-
- ret = netvsc_send(dev->net_dev->dev, packet);
- return ret;
---
-2.4.3
-
+++ /dev/null
-From 4685e50349d5dc5fe485c898ca3ce539e93a0118 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 30 Apr 2014 10:14:31 -0700
-Subject: [PATCH 19/25] hyperv: Enable sendbuf mechanism on the send path
-
-We send packets using a copy-free mechanism (this is the Guest to Host transport
-via VMBUS). While this is obviously optimal for large packets,
-it may not be optimal for small packets. Hyper-V host supports
-a second mechanism for sending packets that is "copy based". We implement that
-mechanism in this patch.
-
-In this version of the patch I have addressed a comment from David Miller.
-
-With this patch (and all of the other offload and VRSS patches), we are now able
-to almost saturate a 10G interface between Linux VMs on Hyper-V
-on different hosts - close to 9 Gbps as measured via iperf.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 14 +++
- drivers/net/hyperv/netvsc.c | 226 ++++++++++++++++++++++++++++++++++++++--
- drivers/net/hyperv/netvsc_drv.c | 3 +-
- 3 files changed, 234 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index d1f7826aa75f..4b7df5a5c966 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -140,6 +140,8 @@ struct hv_netvsc_packet {
- void *send_completion_ctx;
- void (*send_completion)(void *context);
-
-+ u32 send_buf_index;
-+
- /* This points to the memory after page_buf */
- struct rndis_message *rndis_msg;
-
-@@ -582,6 +584,9 @@ struct nvsp_message {
-
- #define NETVSC_RECEIVE_BUFFER_SIZE (1024*1024*16) /* 16MB */
- #define NETVSC_RECEIVE_BUFFER_SIZE_LEGACY (1024*1024*15) /* 15MB */
-+#define NETVSC_SEND_BUFFER_SIZE (1024 * 1024) /* 1MB */
-+#define NETVSC_INVALID_INDEX -1
-+
-
- #define NETVSC_RECEIVE_BUFFER_ID 0xcafe
-
-@@ -607,6 +612,15 @@ struct netvsc_device {
- u32 recv_section_cnt;
- struct nvsp_1_receive_buffer_section *recv_section;
-
-+ /* Send buffer allocated by us */
-+ void *send_buf;
-+ u32 send_buf_size;
-+ u32 send_buf_gpadl_handle;
-+ u32 send_section_cnt;
-+ u32 send_section_size;
-+ unsigned long *send_section_map;
-+ int map_words;
-+
- /* Used for NetVSP initialization protocol */
- struct completion channel_init_wait;
- struct nvsp_message channel_init_pkt;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index bbee44635035..c041f63a6d30 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -28,6 +28,7 @@
- #include <linux/slab.h>
- #include <linux/netdevice.h>
- #include <linux/if_ether.h>
-+#include <asm/sync_bitops.h>
-
- #include "hyperv_net.h"
-
-@@ -80,7 +81,7 @@ get_in_err:
- }
-
-
--static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
-+static int netvsc_destroy_buf(struct netvsc_device *net_device)
- {
- struct nvsp_message *revoke_packet;
- int ret = 0;
-@@ -146,10 +147,62 @@ static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
- net_device->recv_section = NULL;
- }
-
-+ /* Deal with the send buffer we may have setup.
-+ * If we got a send section size, it means we received a
-+ * SendsendBufferComplete msg (ie sent
-+ * NvspMessage1TypeSendReceiveBuffer msg) therefore, we need
-+ * to send a revoke msg here
-+ */
-+ if (net_device->send_section_size) {
-+ /* Send the revoke receive buffer */
-+ revoke_packet = &net_device->revoke_packet;
-+ memset(revoke_packet, 0, sizeof(struct nvsp_message));
-+
-+ revoke_packet->hdr.msg_type =
-+ NVSP_MSG1_TYPE_REVOKE_SEND_BUF;
-+ revoke_packet->msg.v1_msg.revoke_recv_buf.id = 0;
-+
-+ ret = vmbus_sendpacket(net_device->dev->channel,
-+ revoke_packet,
-+ sizeof(struct nvsp_message),
-+ (unsigned long)revoke_packet,
-+ VM_PKT_DATA_INBAND, 0);
-+ /* If we failed here, we might as well return and
-+ * have a leak rather than continue and a bugchk
-+ */
-+ if (ret != 0) {
-+ netdev_err(ndev, "unable to send "
-+ "revoke send buffer to netvsp\n");
-+ return ret;
-+ }
-+ }
-+ /* Teardown the gpadl on the vsp end */
-+ if (net_device->send_buf_gpadl_handle) {
-+ ret = vmbus_teardown_gpadl(net_device->dev->channel,
-+ net_device->send_buf_gpadl_handle);
-+
-+ /* If we failed here, we might as well return and have a leak
-+ * rather than continue and a bugchk
-+ */
-+ if (ret != 0) {
-+ netdev_err(ndev,
-+ "unable to teardown send buffer's gpadl\n");
-+ return ret;
-+ }
-+ net_device->recv_buf_gpadl_handle = 0;
-+ }
-+ if (net_device->send_buf) {
-+ /* Free up the receive buffer */
-+ free_pages((unsigned long)net_device->send_buf,
-+ get_order(net_device->send_buf_size));
-+ net_device->send_buf = NULL;
-+ }
-+ kfree(net_device->send_section_map);
-+
- return ret;
- }
-
--static int netvsc_init_recv_buf(struct hv_device *device)
-+static int netvsc_init_buf(struct hv_device *device)
- {
- int ret = 0;
- int t;
-@@ -248,10 +301,90 @@ static int netvsc_init_recv_buf(struct hv_device *device)
- goto cleanup;
- }
-
-+ /* Now setup the send buffer.
-+ */
-+ net_device->send_buf =
-+ (void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO,
-+ get_order(net_device->send_buf_size));
-+ if (!net_device->send_buf) {
-+ netdev_err(ndev, "unable to allocate send "
-+ "buffer of size %d\n", net_device->send_buf_size);
-+ ret = -ENOMEM;
-+ goto cleanup;
-+ }
-+
-+ /* Establish the gpadl handle for this buffer on this
-+ * channel. Note: This call uses the vmbus connection rather
-+ * than the channel to establish the gpadl handle.
-+ */
-+ ret = vmbus_establish_gpadl(device->channel, net_device->send_buf,
-+ net_device->send_buf_size,
-+ &net_device->send_buf_gpadl_handle);
-+ if (ret != 0) {
-+ netdev_err(ndev,
-+ "unable to establish send buffer's gpadl\n");
-+ goto cleanup;
-+ }
-+
-+ /* Notify the NetVsp of the gpadl handle */
-+ init_packet = &net_device->channel_init_pkt;
-+ memset(init_packet, 0, sizeof(struct nvsp_message));
-+ init_packet->hdr.msg_type = NVSP_MSG1_TYPE_SEND_SEND_BUF;
-+ init_packet->msg.v1_msg.send_recv_buf.gpadl_handle =
-+ net_device->send_buf_gpadl_handle;
-+ init_packet->msg.v1_msg.send_recv_buf.id = 0;
-+
-+ /* Send the gpadl notification request */
-+ ret = vmbus_sendpacket(device->channel, init_packet,
-+ sizeof(struct nvsp_message),
-+ (unsigned long)init_packet,
-+ VM_PKT_DATA_INBAND,
-+ VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
-+ if (ret != 0) {
-+ netdev_err(ndev,
-+ "unable to send send buffer's gpadl to netvsp\n");
-+ goto cleanup;
-+ }
-+
-+ t = wait_for_completion_timeout(&net_device->channel_init_wait, 5*HZ);
-+ BUG_ON(t == 0);
-+
-+ /* Check the response */
-+ if (init_packet->msg.v1_msg.
-+ send_send_buf_complete.status != NVSP_STAT_SUCCESS) {
-+ netdev_err(ndev, "Unable to complete send buffer "
-+ "initialization with NetVsp - status %d\n",
-+ init_packet->msg.v1_msg.
-+ send_recv_buf_complete.status);
-+ ret = -EINVAL;
-+ goto cleanup;
-+ }
-+
-+ /* Parse the response */
-+ net_device->send_section_size = init_packet->msg.
-+ v1_msg.send_send_buf_complete.section_size;
-+
-+ /* Section count is simply the size divided by the section size.
-+ */
-+ net_device->send_section_cnt =
-+ net_device->send_buf_size/net_device->send_section_size;
-+
-+ dev_info(&device->device, "Send section size: %d, Section count:%d\n",
-+ net_device->send_section_size, net_device->send_section_cnt);
-+
-+ /* Setup state for managing the send buffer. */
-+ net_device->map_words = DIV_ROUND_UP(net_device->send_section_cnt,
-+ BITS_PER_LONG);
-+
-+ net_device->send_section_map =
-+ kzalloc(net_device->map_words * sizeof(ulong), GFP_KERNEL);
-+ if (net_device->send_section_map == NULL)
-+ goto cleanup;
-+
- goto exit;
-
- cleanup:
-- netvsc_destroy_recv_buf(net_device);
-+ netvsc_destroy_buf(net_device);
-
- exit:
- return ret;
-@@ -369,8 +502,9 @@ static int netvsc_connect_vsp(struct hv_device *device)
- net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE_LEGACY;
- else
- net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE;
-+ net_device->send_buf_size = NETVSC_SEND_BUFFER_SIZE;
-
-- ret = netvsc_init_recv_buf(device);
-+ ret = netvsc_init_buf(device);
-
- cleanup:
- return ret;
-@@ -378,7 +512,7 @@ cleanup:
-
- static void netvsc_disconnect_vsp(struct netvsc_device *net_device)
- {
-- netvsc_destroy_recv_buf(net_device);
-+ netvsc_destroy_buf(net_device);
- }
-
- /*
-@@ -440,6 +574,12 @@ static inline u32 hv_ringbuf_avail_percent(
- return avail_write * 100 / ring_info->ring_datasize;
- }
-
-+static inline void netvsc_free_send_slot(struct netvsc_device *net_device,
-+ u32 index)
-+{
-+ sync_change_bit(index, net_device->send_section_map);
-+}
-+
- static void netvsc_send_completion(struct netvsc_device *net_device,
- struct hv_device *device,
- struct vmpacket_descriptor *packet)
-@@ -447,6 +587,7 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- struct nvsp_message *nvsp_packet;
- struct hv_netvsc_packet *nvsc_packet;
- struct net_device *ndev;
-+ u32 send_index;
-
- ndev = net_device->ndev;
-
-@@ -477,6 +618,9 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-
- /* Notify the layer above us */
- if (nvsc_packet) {
-+ send_index = nvsc_packet->send_buf_index;
-+ if (send_index != NETVSC_INVALID_INDEX)
-+ netvsc_free_send_slot(net_device, send_index);
- q_idx = nvsc_packet->q_idx;
- channel = nvsc_packet->channel;
- nvsc_packet->send_completion(nvsc_packet->
-@@ -504,6 +648,52 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-
- }
-
-+static u32 netvsc_get_next_send_section(struct netvsc_device *net_device)
-+{
-+ unsigned long index;
-+ u32 max_words = net_device->map_words;
-+ unsigned long *map_addr = (unsigned long *)net_device->send_section_map;
-+ u32 section_cnt = net_device->send_section_cnt;
-+ int ret_val = NETVSC_INVALID_INDEX;
-+ int i;
-+ int prev_val;
-+
-+ for (i = 0; i < max_words; i++) {
-+ if (!~(map_addr[i]))
-+ continue;
-+ index = ffz(map_addr[i]);
-+ prev_val = sync_test_and_set_bit(index, &map_addr[i]);
-+ if (prev_val)
-+ continue;
-+ if ((index + (i * BITS_PER_LONG)) >= section_cnt)
-+ break;
-+ ret_val = (index + (i * BITS_PER_LONG));
-+ break;
-+ }
-+ return ret_val;
-+}
-+
-+u32 netvsc_copy_to_send_buf(struct netvsc_device *net_device,
-+ unsigned int section_index,
-+ struct hv_netvsc_packet *packet)
-+{
-+ char *start = net_device->send_buf;
-+ char *dest = (start + (section_index * net_device->send_section_size));
-+ int i;
-+ u32 msg_size = 0;
-+
-+ for (i = 0; i < packet->page_buf_cnt; i++) {
-+ char *src = phys_to_virt(packet->page_buf[i].pfn << PAGE_SHIFT);
-+ u32 offset = packet->page_buf[i].offset;
-+ u32 len = packet->page_buf[i].len;
-+
-+ memcpy(dest, (src + offset), len);
-+ msg_size += len;
-+ dest += len;
-+ }
-+ return msg_size;
-+}
-+
- int netvsc_send(struct hv_device *device,
- struct hv_netvsc_packet *packet)
- {
-@@ -513,6 +703,10 @@ int netvsc_send(struct hv_device *device,
- struct net_device *ndev;
- struct vmbus_channel *out_channel = NULL;
- u64 req_id;
-+ unsigned int section_index = NETVSC_INVALID_INDEX;
-+ u32 msg_size = 0;
-+ struct sk_buff *skb;
-+
-
- net_device = get_outbound_net_device(device);
- if (!net_device)
-@@ -528,10 +722,26 @@ int netvsc_send(struct hv_device *device,
- sendMessage.msg.v1_msg.send_rndis_pkt.channel_type = 1;
- }
-
-- /* Not using send buffer section */
-+ /* Attempt to send via sendbuf */
-+ if (packet->total_data_buflen < net_device->send_section_size) {
-+ section_index = netvsc_get_next_send_section(net_device);
-+ if (section_index != NETVSC_INVALID_INDEX) {
-+ msg_size = netvsc_copy_to_send_buf(net_device,
-+ section_index,
-+ packet);
-+ skb = (struct sk_buff *)
-+ (unsigned long)packet->send_completion_tid;
-+ if (skb)
-+ dev_kfree_skb_any(skb);
-+ packet->page_buf_cnt = 0;
-+ }
-+ }
-+ packet->send_buf_index = section_index;
-+
-+
- sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_index =
-- 0xFFFFFFFF;
-- sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = 0;
-+ section_index;
-+ sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = msg_size;
-
- if (packet->send_completion)
- req_id = (ulong)packet;
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index f3d3525ed42d..9a19aa5672e6 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -236,10 +236,11 @@ static void netvsc_xmit_completion(void *context)
- struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
- struct sk_buff *skb = (struct sk_buff *)
- (unsigned long)packet->send_completion_tid;
-+ u32 index = packet->send_buf_index;
-
- kfree(packet);
-
-- if (skb)
-+ if (skb && (index == NETVSC_INVALID_INDEX))
- dev_kfree_skb_any(skb);
- }
-
---
-2.4.3
-
+++ /dev/null
-From 3f0b77385356301cf4718a94f76a4068588ecb8e Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Thu, 8 May 2014 15:14:10 -0700
-Subject: [PATCH 20/25] Add support for netvsc build without CONFIG_SYSFS flag
-
-This change ensures the driver can be built successfully without the
-CONFIG_SYSFS flag.
-MS-TFS: 182270
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 9a19aa5672e6..346f1aeb9c24 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -645,8 +645,7 @@ int netvsc_recv_callback(struct hv_device *device_obj,
- packet->vlan_tci);
-
- skb_record_rx_queue(skb, packet->channel->
-- offermsg.offer.sub_channel_index %
-- net->real_num_rx_queues);
-+ offermsg.offer.sub_channel_index);
-
- net->stats.rx_packets++;
- net->stats.rx_bytes += packet->total_data_buflen;
-@@ -829,8 +828,6 @@ static int netvsc_probe(struct hv_device *dev,
- nvdev = hv_get_drvdata(dev);
- netif_set_real_num_tx_queues(net, nvdev->num_chn);
- netif_set_real_num_rx_queues(net, nvdev->num_chn);
-- dev_info(&dev->device, "real num tx,rx queues:%u, %u\n",
-- net->real_num_tx_queues, net->real_num_rx_queues);
-
- ret = register_netdev(net);
- if (ret != 0) {
---
-2.4.3
-
+++ /dev/null
-From 1267d9b235e7612f8cdfa842a0433bb82e75f7fb Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Wed, 21 May 2014 12:55:39 -0700
-Subject: [PATCH 21/25] hyperv: Add hash value into RNDIS Per-packet info
-
-It passes the hash value as the RNDIS Per-packet info to the Hyper-V host,
-so that the send completion notices can be spread across multiple channels.
-MS-TFS: 140273
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 4 ++++
- drivers/net/hyperv/netvsc_drv.c | 18 ++++++++++++++----
- 2 files changed, 18 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 4b7df5a5c966..6cc37c15e0bf 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -791,6 +791,7 @@ enum ndis_per_pkt_info_type {
- IEEE_8021Q_INFO,
- ORIGINAL_PKTINFO,
- PACKET_CANCEL_ID,
-+ NBL_HASH_VALUE = PACKET_CANCEL_ID,
- ORIGINAL_NET_BUFLIST,
- CACHED_NET_BUFLIST,
- SHORT_PKT_PADINFO,
-@@ -937,6 +938,9 @@ struct ndis_tcp_lso_info {
- #define NDIS_LSO_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
- sizeof(struct ndis_tcp_lso_info))
-
-+#define NDIS_HASH_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-+ sizeof(u32))
-+
- /* Format of Information buffer passed in a SetRequest for the OID */
- /* OID_GEN_RNDIS_CONFIG_PARAMETER. */
- struct rndis_config_parameter_info {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 346f1aeb9c24..bd3b3acd04dc 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -224,9 +224,11 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
- if (nvsc_dev == NULL || ndev->real_num_tx_queues <= 1)
- return 0;
-
-- if (netvsc_set_hash(&hash, skb))
-+ if (netvsc_set_hash(&hash, skb)) {
- q_idx = nvsc_dev->send_table[hash % VRSS_SEND_TAB_SIZE] %
- ndev->real_num_tx_queues;
-+ skb_set_hash(skb, hash, PKT_HASH_TYPE_L3);
-+ }
-
- return q_idx;
- }
-@@ -385,6 +387,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- struct ndis_tcp_lso_info *lso_info;
- int hdr_offset;
- u32 net_trans_info;
-+ u32 hash;
-
-
- /* We will atmost need two pages to describe the rndis
-@@ -403,9 +406,8 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- packet = kzalloc(sizeof(struct hv_netvsc_packet) +
- (num_data_pgs * sizeof(struct hv_page_buffer)) +
- sizeof(struct rndis_message) +
-- NDIS_VLAN_PPI_SIZE +
-- NDIS_CSUM_PPI_SIZE +
-- NDIS_LSO_PPI_SIZE, GFP_ATOMIC);
-+ NDIS_VLAN_PPI_SIZE + NDIS_CSUM_PPI_SIZE +
-+ NDIS_LSO_PPI_SIZE + NDIS_HASH_PPI_SIZE, GFP_ATOMIC);
- if (!packet) {
- /* out of memory, drop packet */
- netdev_err(net, "unable to allocate hv_netvsc_packet\n");
-@@ -444,6 +446,14 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-
- rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
-
-+ hash = skb_get_hash_raw(skb);
-+ if (hash != 0 && net->real_num_tx_queues > 1) {
-+ rndis_msg_size += NDIS_HASH_PPI_SIZE;
-+ ppi = init_ppi_data(rndis_msg, NDIS_HASH_PPI_SIZE,
-+ NBL_HASH_VALUE);
-+ *(u32 *)((void *)ppi + ppi->ppi_offset) = hash;
-+ }
-+
- if (isvlan) {
- struct ndis_pkt_8021q_info *vlan;
-
---
-2.4.3
-
+++ /dev/null
-From ee99150c7f34737e4382e7199d2ffe3dfbb54a5c Mon Sep 17 00:00:00 2001
-From: Dave Jones <davej@redhat.com>
-Date: Mon, 16 Jun 2014 16:59:02 -0400
-Subject: [PATCH 22/25] hyperv: fix apparent cut-n-paste error in send path
- teardown
-
-c25aaf814a63: "hyperv: Enable sendbuf mechanism on the send path" added
-some teardown code that looks like it was copied from the recieve path
-above, but missed a variable name replacement.
-
-Signed-off-by: Dave Jones <davej@redhat.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index c041f63a6d30..4ed38eaecea8 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -189,7 +189,7 @@ static int netvsc_destroy_buf(struct netvsc_device *net_device)
- "unable to teardown send buffer's gpadl\n");
- return ret;
- }
-- net_device->recv_buf_gpadl_handle = 0;
-+ net_device->send_buf_gpadl_handle = 0;
- }
- if (net_device->send_buf) {
- /* Free up the receive buffer */
---
-2.4.3
-
+++ /dev/null
-From f1009dfec7c439a958bd9ed8893dd6aa692c61f5 Mon Sep 17 00:00:00 2001
-From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
-Date: Wed, 23 Jul 2014 09:00:35 +0800
-Subject: [PATCH 23/25] hyperv: Fix error return code in netvsc_init_buf()
-
-Fix to return -ENOMEM from the kalloc error handling
-case instead of 0.
-
-Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 4ed38eaecea8..d97d5f39a04e 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -378,8 +378,10 @@ static int netvsc_init_buf(struct hv_device *device)
-
- net_device->send_section_map =
- kzalloc(net_device->map_words * sizeof(ulong), GFP_KERNEL);
-- if (net_device->send_section_map == NULL)
-+ if (net_device->send_section_map == NULL) {
-+ ret = -ENOMEM;
- goto cleanup;
-+ }
-
- goto exit;
-
---
-2.4.3
-
+++ /dev/null
-From 38bca2d5bd6fdaa0b8e1e415f79d89322c6825a8 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 5 Oct 2014 10:42:51 -0700
-Subject: [PATCH 24/25] hyperv: Fix a bug in netvsc_send()
-
-[ Upstream commit 3a67c9ccad926a168d8b7891537a452018368a5b ]
-
-After the packet is successfully sent, we should not touch the packet
-as it may have been freed. This patch is based on the work done by
-Long Li <longli@microsoft.com>.
-
-David, please queue this up for stable.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/hyperv/netvsc.c | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index d97d5f39a04e..7edf976ecfa0 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -708,6 +708,7 @@ int netvsc_send(struct hv_device *device,
- unsigned int section_index = NETVSC_INVALID_INDEX;
- u32 msg_size = 0;
- struct sk_buff *skb;
-+ u16 q_idx = packet->q_idx;
-
-
- net_device = get_outbound_net_device(device);
-@@ -772,24 +773,24 @@ int netvsc_send(struct hv_device *device,
-
- if (ret == 0) {
- atomic_inc(&net_device->num_outstanding_sends);
-- atomic_inc(&net_device->queue_sends[packet->q_idx]);
-+ atomic_inc(&net_device->queue_sends[q_idx]);
-
- if (hv_ringbuf_avail_percent(&out_channel->outbound) <
- RING_AVAIL_PERCENT_LOWATER) {
- netif_tx_stop_queue(netdev_get_tx_queue(
-- ndev, packet->q_idx));
-+ ndev, q_idx));
-
- if (atomic_read(&net_device->
-- queue_sends[packet->q_idx]) < 1)
-+ queue_sends[q_idx]) < 1)
- netif_tx_wake_queue(netdev_get_tx_queue(
-- ndev, packet->q_idx));
-+ ndev, q_idx));
- }
- } else if (ret == -EAGAIN) {
- netif_tx_stop_queue(netdev_get_tx_queue(
-- ndev, packet->q_idx));
-- if (atomic_read(&net_device->queue_sends[packet->q_idx]) < 1) {
-+ ndev, q_idx));
-+ if (atomic_read(&net_device->queue_sends[q_idx]) < 1) {
- netif_tx_wake_queue(netdev_get_tx_queue(
-- ndev, packet->q_idx));
-+ ndev, q_idx));
- ret = -ENOSPC;
- }
- } else {
---
-2.4.3
-
+++ /dev/null
-From 4b71288758aa1d510402b84ca93b1ef566575d22 Mon Sep 17 00:00:00 2001
-From: "K. Y. Srinivasan" <kys@microsoft.com>
-Date: Mon, 3 Feb 2014 12:42:45 -0800
-Subject: [PATCH 25/25] Drivers: hv: vmbus: Support per-channel driver state
-
-As we implement Virtual Receive Side Scaling on the networking side
-(the VRSS patches are currently under review), it will be useful to have
-per-channel state that vmbus drivers can manage. Add support for
-managing per-channel state.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- include/linux/hyperv.h | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
-index 6088058a3e00..732dc7e37e96 100644
---- a/include/linux/hyperv.h
-+++ b/include/linux/hyperv.h
-@@ -1045,6 +1045,10 @@ struct vmbus_channel {
- * This will be NULL for the primary channel.
- */
- struct vmbus_channel *primary_channel;
-+ /*
-+ * Support per-channel state for use by vmbus drivers.
-+ */
-+ void *per_channel_state;
- };
-
- static inline void set_channel_read_state(struct vmbus_channel *c, bool state)
-@@ -1052,6 +1056,16 @@ static inline void set_channel_read_state(struct vmbus_channel *c, bool state)
- c->batched_reading = state;
- }
-
-+static inline void set_per_channel_state(struct vmbus_channel *c, void *s)
-+{
-+ c->per_channel_state = s;
-+}
-+
-+static inline void *get_per_channel_state(struct vmbus_channel *c)
-+{
-+ return c->per_channel_state;
-+}
-+
- void vmbus_onmessage(void *context);
-
- int vmbus_request_offers(void);
---
-2.4.3
-
+++ /dev/null
-From bcdbd313c0e6fd630a8945fd58dc5383631dc6dd Mon Sep 17 00:00:00 2001
-From: Timothy McCaffrey <timothy.mccaffrey@unisys.com>
-Date: Tue, 13 Jan 2015 13:16:43 -0500
-Subject: [PATCH] crypto: aesni - Add support for 192 & 256 bit keys to AESNI
- RFC4106
-
-These patches fix the RFC4106 implementation in the aesni-intel
-module so it supports 192 & 256 bit keys.
-
-Since the AVX support that was added to this module also only
-supports 128 bit keys, and this patch only affects the SSE
-implementation, changes were also made to use the SSE version
-if key sizes other than 128 are specified.
-
-RFC4106 specifies that 192 & 256 bit keys must be supported (section
-8.4).
-
-Also, this should fix Strongswan issue 341 where the aesni module
-needs to be unloaded if 256 bit keys are used:
-
-http://wiki.strongswan.org/issues/341
-
-This patch has been tested with Sandy Bridge and Haswell processors.
-With 128 bit keys and input buffers > 512 bytes a slight performance
-degradation was noticed (~1%). For input buffers of less than 512
-bytes there was no performance impact. Compared to 128 bit keys,
-256 bit key size performance is approx. .5 cycles per byte slower
-on Sandy Bridge, and .37 cycles per byte slower on Haswell (vs.
-SSE code).
-
-This patch has also been tested with StrongSwan IPSec connections
-where it worked correctly.
-
-I created this diff from a git clone of crypto-2.6.git.
-
-Any questions, please feel free to contact me.
-
-Signed-off-by: Timothy McCaffrey <timothy.mccaffrey@unisys.com>
-Signed-off-by: Jarod Wilson <jarod@redhat.com>
-Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
----
- arch/x86/crypto/aesni-intel_asm.S | 342 +++++++++++++++++++------------------
- arch/x86/crypto/aesni-intel_glue.c | 31 +++-
- 2 files changed, 202 insertions(+), 171 deletions(-)
-
-diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S
-index c92c7d8..f5cdfbf 100644
---- a/arch/x86/crypto/aesni-intel_asm.S
-+++ b/arch/x86/crypto/aesni-intel_asm.S
-@@ -33,12 +33,23 @@
- #include <asm/inst.h>
- #include <asm/alternative-asm.h>
-
-+/*
-+ * The following macros are used to move an (un)aligned 16 byte value to/from
-+ * an XMM register. This can done for either FP or integer values, for FP use
-+ * movaps (move aligned packed single) or integer use movdqa (move double quad
-+ * aligned). It doesn't make a performance difference which instruction is used
-+ * since Nehalem (original Core i7) was released. However, the movaps is a byte
-+ * shorter, so that is the one we'll use for now. (same for unaligned).
-+ */
-+#define MOVADQ movaps
-+#define MOVUDQ movups
-+
- #ifdef __x86_64__
-+
- .data
- .align 16
- .Lgf128mul_x_ble_mask:
- .octa 0x00000000000000010000000000000087
--
- POLY: .octa 0xC2000000000000000000000000000001
- TWOONE: .octa 0x00000001000000000000000000000001
-
-@@ -90,6 +101,7 @@ enc: .octa 0x2
- #define arg8 STACK_OFFSET+16(%r14)
- #define arg9 STACK_OFFSET+24(%r14)
- #define arg10 STACK_OFFSET+32(%r14)
-+#define keysize 2*15*16(%arg1)
- #endif
-
-
-@@ -214,10 +226,12 @@ enc: .octa 0x2
-
- .macro INITIAL_BLOCKS_DEC num_initial_blocks TMP1 TMP2 TMP3 TMP4 TMP5 XMM0 XMM1 \
- XMM2 XMM3 XMM4 XMMDst TMP6 TMP7 i i_seq operation
-+ MOVADQ SHUF_MASK(%rip), %xmm14
- mov arg7, %r10 # %r10 = AAD
- mov arg8, %r15 # %r15 = aadLen
- mov %r15, %r11
- pxor %xmm\i, %xmm\i
-+
- _get_AAD_loop\num_initial_blocks\operation:
- movd (%r10), \TMP1
- pslldq $12, \TMP1
-@@ -226,6 +240,7 @@ _get_AAD_loop\num_initial_blocks\operation:
- add $4, %r10
- sub $4, %r15
- jne _get_AAD_loop\num_initial_blocks\operation
-+
- cmp $16, %r11
- je _get_AAD_loop2_done\num_initial_blocks\operation
- mov $16, %r15
-@@ -234,8 +249,8 @@ _get_AAD_loop2\num_initial_blocks\operation:
- sub $4, %r15
- cmp %r11, %r15
- jne _get_AAD_loop2\num_initial_blocks\operation
-+
- _get_AAD_loop2_done\num_initial_blocks\operation:
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, %xmm\i # byte-reflect the AAD data
-
- xor %r11, %r11 # initialise the data pointer offset as zero
-@@ -244,59 +259,34 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-
- mov %arg5, %rax # %rax = *Y0
- movdqu (%rax), \XMM0 # XMM0 = Y0
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM0
-
- .if (\i == 5) || (\i == 6) || (\i == 7)
-+ MOVADQ ONE(%RIP),\TMP1
-+ MOVADQ (%arg1),\TMP2
- .irpc index, \i_seq
-- paddd ONE(%rip), \XMM0 # INCR Y0
-+ paddd \TMP1, \XMM0 # INCR Y0
- movdqa \XMM0, %xmm\index
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, %xmm\index # perform a 16 byte swap
--
--.endr
--.irpc index, \i_seq
-- pxor 16*0(%arg1), %xmm\index
--.endr
--.irpc index, \i_seq
-- movaps 0x10(%rdi), \TMP1
-- AESENC \TMP1, %xmm\index # Round 1
--.endr
--.irpc index, \i_seq
-- movaps 0x20(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
-+ pxor \TMP2, %xmm\index
- .endr
--.irpc index, \i_seq
-- movaps 0x30(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x40(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x50(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x60(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x70(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x80(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x90(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
-+ lea 0x10(%arg1),%r10
-+ mov keysize,%eax
-+ shr $2,%eax # 128->4, 192->6, 256->8
-+ add $5,%eax # 128->9, 192->11, 256->13
-+
-+aes_loop_initial_dec\num_initial_blocks:
-+ MOVADQ (%r10),\TMP1
-+.irpc index, \i_seq
-+ AESENC \TMP1, %xmm\index
- .endr
-+ add $16,%r10
-+ sub $1,%eax
-+ jnz aes_loop_initial_dec\num_initial_blocks
-+
-+ MOVADQ (%r10), \TMP1
- .irpc index, \i_seq
-- movaps 0xa0(%arg1), \TMP1
-- AESENCLAST \TMP1, %xmm\index # Round 10
-+ AESENCLAST \TMP1, %xmm\index # Last Round
- .endr
- .irpc index, \i_seq
- movdqu (%arg3 , %r11, 1), \TMP1
-@@ -306,10 +296,8 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- add $16, %r11
-
- movdqa \TMP1, %xmm\index
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, %xmm\index
--
-- # prepare plaintext/ciphertext for GHASH computation
-+ # prepare plaintext/ciphertext for GHASH computation
- .endr
- .endif
- GHASH_MUL %xmm\i, \TMP3, \TMP1, \TMP2, \TMP4, \TMP5, \XMM1
-@@ -339,30 +327,28 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- * Precomputations for HashKey parallel with encryption of first 4 blocks.
- * Haskey_i_k holds XORed values of the low and high parts of the Haskey_i
- */
-- paddd ONE(%rip), \XMM0 # INCR Y0
-- movdqa \XMM0, \XMM1
-- movdqa SHUF_MASK(%rip), %xmm14
-+ MOVADQ ONE(%rip), \TMP1
-+ paddd \TMP1, \XMM0 # INCR Y0
-+ MOVADQ \XMM0, \XMM1
- PSHUFB_XMM %xmm14, \XMM1 # perform a 16 byte swap
-
-- paddd ONE(%rip), \XMM0 # INCR Y0
-- movdqa \XMM0, \XMM2
-- movdqa SHUF_MASK(%rip), %xmm14
-+ paddd \TMP1, \XMM0 # INCR Y0
-+ MOVADQ \XMM0, \XMM2
- PSHUFB_XMM %xmm14, \XMM2 # perform a 16 byte swap
-
-- paddd ONE(%rip), \XMM0 # INCR Y0
-- movdqa \XMM0, \XMM3
-- movdqa SHUF_MASK(%rip), %xmm14
-+ paddd \TMP1, \XMM0 # INCR Y0
-+ MOVADQ \XMM0, \XMM3
- PSHUFB_XMM %xmm14, \XMM3 # perform a 16 byte swap
-
-- paddd ONE(%rip), \XMM0 # INCR Y0
-- movdqa \XMM0, \XMM4
-- movdqa SHUF_MASK(%rip), %xmm14
-+ paddd \TMP1, \XMM0 # INCR Y0
-+ MOVADQ \XMM0, \XMM4
- PSHUFB_XMM %xmm14, \XMM4 # perform a 16 byte swap
-
-- pxor 16*0(%arg1), \XMM1
-- pxor 16*0(%arg1), \XMM2
-- pxor 16*0(%arg1), \XMM3
-- pxor 16*0(%arg1), \XMM4
-+ MOVADQ 0(%arg1),\TMP1
-+ pxor \TMP1, \XMM1
-+ pxor \TMP1, \XMM2
-+ pxor \TMP1, \XMM3
-+ pxor \TMP1, \XMM4
- movdqa \TMP3, \TMP5
- pshufd $78, \TMP3, \TMP1
- pxor \TMP3, \TMP1
-@@ -400,7 +386,23 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- pshufd $78, \TMP5, \TMP1
- pxor \TMP5, \TMP1
- movdqa \TMP1, HashKey_4_k(%rsp)
-- movaps 0xa0(%arg1), \TMP2
-+ lea 0xa0(%arg1),%r10
-+ mov keysize,%eax
-+ shr $2,%eax # 128->4, 192->6, 256->8
-+ sub $4,%eax # 128->0, 192->2, 256->4
-+ jz aes_loop_pre_dec_done\num_initial_blocks
-+
-+aes_loop_pre_dec\num_initial_blocks:
-+ MOVADQ (%r10),\TMP2
-+.irpc index, 1234
-+ AESENC \TMP2, %xmm\index
-+.endr
-+ add $16,%r10
-+ sub $1,%eax
-+ jnz aes_loop_pre_dec\num_initial_blocks
-+
-+aes_loop_pre_dec_done\num_initial_blocks:
-+ MOVADQ (%r10), \TMP2
- AESENCLAST \TMP2, \XMM1
- AESENCLAST \TMP2, \XMM2
- AESENCLAST \TMP2, \XMM3
-@@ -422,15 +424,11 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- movdqu \XMM4, 16*3(%arg2 , %r11 , 1)
- movdqa \TMP1, \XMM4
- add $64, %r11
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM1 # perform a 16 byte swap
- pxor \XMMDst, \XMM1
- # combine GHASHed value with the corresponding ciphertext
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM2 # perform a 16 byte swap
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM3 # perform a 16 byte swap
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM4 # perform a 16 byte swap
-
- _initial_blocks_done\num_initial_blocks\operation:
-@@ -452,6 +450,7 @@ _initial_blocks_done\num_initial_blocks\operation:
-
- .macro INITIAL_BLOCKS_ENC num_initial_blocks TMP1 TMP2 TMP3 TMP4 TMP5 XMM0 XMM1 \
- XMM2 XMM3 XMM4 XMMDst TMP6 TMP7 i i_seq operation
-+ MOVADQ SHUF_MASK(%rip), %xmm14
- mov arg7, %r10 # %r10 = AAD
- mov arg8, %r15 # %r15 = aadLen
- mov %r15, %r11
-@@ -473,7 +472,6 @@ _get_AAD_loop2\num_initial_blocks\operation:
- cmp %r11, %r15
- jne _get_AAD_loop2\num_initial_blocks\operation
- _get_AAD_loop2_done\num_initial_blocks\operation:
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, %xmm\i # byte-reflect the AAD data
-
- xor %r11, %r11 # initialise the data pointer offset as zero
-@@ -482,59 +480,35 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-
- mov %arg5, %rax # %rax = *Y0
- movdqu (%rax), \XMM0 # XMM0 = Y0
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM0
-
- .if (\i == 5) || (\i == 6) || (\i == 7)
--.irpc index, \i_seq
-- paddd ONE(%rip), \XMM0 # INCR Y0
-- movdqa \XMM0, %xmm\index
-- movdqa SHUF_MASK(%rip), %xmm14
-- PSHUFB_XMM %xmm14, %xmm\index # perform a 16 byte swap
-
--.endr
--.irpc index, \i_seq
-- pxor 16*0(%arg1), %xmm\index
--.endr
--.irpc index, \i_seq
-- movaps 0x10(%rdi), \TMP1
-- AESENC \TMP1, %xmm\index # Round 1
--.endr
--.irpc index, \i_seq
-- movaps 0x20(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
-+ MOVADQ ONE(%RIP),\TMP1
-+ MOVADQ 0(%arg1),\TMP2
- .irpc index, \i_seq
-- movaps 0x30(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
-+ paddd \TMP1, \XMM0 # INCR Y0
-+ MOVADQ \XMM0, %xmm\index
-+ PSHUFB_XMM %xmm14, %xmm\index # perform a 16 byte swap
-+ pxor \TMP2, %xmm\index
- .endr
--.irpc index, \i_seq
-- movaps 0x40(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x50(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x60(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x70(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x80(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
--.endr
--.irpc index, \i_seq
-- movaps 0x90(%arg1), \TMP1
-- AESENC \TMP1, %xmm\index # Round 2
-+ lea 0x10(%arg1),%r10
-+ mov keysize,%eax
-+ shr $2,%eax # 128->4, 192->6, 256->8
-+ add $5,%eax # 128->9, 192->11, 256->13
-+
-+aes_loop_initial_enc\num_initial_blocks:
-+ MOVADQ (%r10),\TMP1
-+.irpc index, \i_seq
-+ AESENC \TMP1, %xmm\index
- .endr
-+ add $16,%r10
-+ sub $1,%eax
-+ jnz aes_loop_initial_enc\num_initial_blocks
-+
-+ MOVADQ (%r10), \TMP1
- .irpc index, \i_seq
-- movaps 0xa0(%arg1), \TMP1
-- AESENCLAST \TMP1, %xmm\index # Round 10
-+ AESENCLAST \TMP1, %xmm\index # Last Round
- .endr
- .irpc index, \i_seq
- movdqu (%arg3 , %r11, 1), \TMP1
-@@ -542,8 +516,6 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- movdqu %xmm\index, (%arg2 , %r11, 1)
- # write back plaintext/ciphertext for num_initial_blocks
- add $16, %r11
--
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, %xmm\index
-
- # prepare plaintext/ciphertext for GHASH computation
-@@ -576,30 +548,28 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- * Precomputations for HashKey parallel with encryption of first 4 blocks.
- * Haskey_i_k holds XORed values of the low and high parts of the Haskey_i
- */
-- paddd ONE(%rip), \XMM0 # INCR Y0
-- movdqa \XMM0, \XMM1
-- movdqa SHUF_MASK(%rip), %xmm14
-+ MOVADQ ONE(%RIP),\TMP1
-+ paddd \TMP1, \XMM0 # INCR Y0
-+ MOVADQ \XMM0, \XMM1
- PSHUFB_XMM %xmm14, \XMM1 # perform a 16 byte swap
-
-- paddd ONE(%rip), \XMM0 # INCR Y0
-- movdqa \XMM0, \XMM2
-- movdqa SHUF_MASK(%rip), %xmm14
-+ paddd \TMP1, \XMM0 # INCR Y0
-+ MOVADQ \XMM0, \XMM2
- PSHUFB_XMM %xmm14, \XMM2 # perform a 16 byte swap
-
-- paddd ONE(%rip), \XMM0 # INCR Y0
-- movdqa \XMM0, \XMM3
-- movdqa SHUF_MASK(%rip), %xmm14
-+ paddd \TMP1, \XMM0 # INCR Y0
-+ MOVADQ \XMM0, \XMM3
- PSHUFB_XMM %xmm14, \XMM3 # perform a 16 byte swap
-
-- paddd ONE(%rip), \XMM0 # INCR Y0
-- movdqa \XMM0, \XMM4
-- movdqa SHUF_MASK(%rip), %xmm14
-+ paddd \TMP1, \XMM0 # INCR Y0
-+ MOVADQ \XMM0, \XMM4
- PSHUFB_XMM %xmm14, \XMM4 # perform a 16 byte swap
-
-- pxor 16*0(%arg1), \XMM1
-- pxor 16*0(%arg1), \XMM2
-- pxor 16*0(%arg1), \XMM3
-- pxor 16*0(%arg1), \XMM4
-+ MOVADQ 0(%arg1),\TMP1
-+ pxor \TMP1, \XMM1
-+ pxor \TMP1, \XMM2
-+ pxor \TMP1, \XMM3
-+ pxor \TMP1, \XMM4
- movdqa \TMP3, \TMP5
- pshufd $78, \TMP3, \TMP1
- pxor \TMP3, \TMP1
-@@ -637,7 +607,23 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- pshufd $78, \TMP5, \TMP1
- pxor \TMP5, \TMP1
- movdqa \TMP1, HashKey_4_k(%rsp)
-- movaps 0xa0(%arg1), \TMP2
-+ lea 0xa0(%arg1),%r10
-+ mov keysize,%eax
-+ shr $2,%eax # 128->4, 192->6, 256->8
-+ sub $4,%eax # 128->0, 192->2, 256->4
-+ jz aes_loop_pre_enc_done\num_initial_blocks
-+
-+aes_loop_pre_enc\num_initial_blocks:
-+ MOVADQ (%r10),\TMP2
-+.irpc index, 1234
-+ AESENC \TMP2, %xmm\index
-+.endr
-+ add $16,%r10
-+ sub $1,%eax
-+ jnz aes_loop_pre_enc\num_initial_blocks
-+
-+aes_loop_pre_enc_done\num_initial_blocks:
-+ MOVADQ (%r10), \TMP2
- AESENCLAST \TMP2, \XMM1
- AESENCLAST \TMP2, \XMM2
- AESENCLAST \TMP2, \XMM3
-@@ -656,15 +642,11 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- movdqu \XMM4, 16*3(%arg2 , %r11 , 1)
-
- add $64, %r11
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM1 # perform a 16 byte swap
- pxor \XMMDst, \XMM1
- # combine GHASHed value with the corresponding ciphertext
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM2 # perform a 16 byte swap
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM3 # perform a 16 byte swap
-- movdqa SHUF_MASK(%rip), %xmm14
- PSHUFB_XMM %xmm14, \XMM4 # perform a 16 byte swap
-
- _initial_blocks_done\num_initial_blocks\operation:
-@@ -795,7 +777,23 @@ TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation
- AESENC \TMP3, \XMM3
- AESENC \TMP3, \XMM4
- PCLMULQDQ 0x00, \TMP5, \XMM8 # XMM8 = a0*b0
-- movaps 0xa0(%arg1), \TMP3
-+ lea 0xa0(%arg1),%r10
-+ mov keysize,%eax
-+ shr $2,%eax # 128->4, 192->6, 256->8
-+ sub $4,%eax # 128->0, 192->2, 256->4
-+ jz aes_loop_par_enc_done
-+
-+aes_loop_par_enc:
-+ MOVADQ (%r10),\TMP3
-+.irpc index, 1234
-+ AESENC \TMP3, %xmm\index
-+.endr
-+ add $16,%r10
-+ sub $1,%eax
-+ jnz aes_loop_par_enc
-+
-+aes_loop_par_enc_done:
-+ MOVADQ (%r10), \TMP3
- AESENCLAST \TMP3, \XMM1 # Round 10
- AESENCLAST \TMP3, \XMM2
- AESENCLAST \TMP3, \XMM3
-@@ -987,8 +985,24 @@ TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation
- AESENC \TMP3, \XMM3
- AESENC \TMP3, \XMM4
- PCLMULQDQ 0x00, \TMP5, \XMM8 # XMM8 = a0*b0
-- movaps 0xa0(%arg1), \TMP3
-- AESENCLAST \TMP3, \XMM1 # Round 10
-+ lea 0xa0(%arg1),%r10
-+ mov keysize,%eax
-+ shr $2,%eax # 128->4, 192->6, 256->8
-+ sub $4,%eax # 128->0, 192->2, 256->4
-+ jz aes_loop_par_dec_done
-+
-+aes_loop_par_dec:
-+ MOVADQ (%r10),\TMP3
-+.irpc index, 1234
-+ AESENC \TMP3, %xmm\index
-+.endr
-+ add $16,%r10
-+ sub $1,%eax
-+ jnz aes_loop_par_dec
-+
-+aes_loop_par_dec_done:
-+ MOVADQ (%r10), \TMP3
-+ AESENCLAST \TMP3, \XMM1 # last round
- AESENCLAST \TMP3, \XMM2
- AESENCLAST \TMP3, \XMM3
- AESENCLAST \TMP3, \XMM4
-@@ -1156,33 +1170,29 @@ TMP7 XMM1 XMM2 XMM3 XMM4 XMMDst
- pxor \TMP6, \XMMDst # reduced result is in XMMDst
- .endm
-
--/* Encryption of a single block done*/
--.macro ENCRYPT_SINGLE_BLOCK XMM0 TMP1
-
-- pxor (%arg1), \XMM0
-- movaps 16(%arg1), \TMP1
-- AESENC \TMP1, \XMM0
-- movaps 32(%arg1), \TMP1
-- AESENC \TMP1, \XMM0
-- movaps 48(%arg1), \TMP1
-- AESENC \TMP1, \XMM0
-- movaps 64(%arg1), \TMP1
-- AESENC \TMP1, \XMM0
-- movaps 80(%arg1), \TMP1
-- AESENC \TMP1, \XMM0
-- movaps 96(%arg1), \TMP1
-- AESENC \TMP1, \XMM0
-- movaps 112(%arg1), \TMP1
-- AESENC \TMP1, \XMM0
-- movaps 128(%arg1), \TMP1
-- AESENC \TMP1, \XMM0
-- movaps 144(%arg1), \TMP1
-- AESENC \TMP1, \XMM0
-- movaps 160(%arg1), \TMP1
-- AESENCLAST \TMP1, \XMM0
--.endm
-+/* Encryption of a single block
-+* uses eax & r10
-+*/
-
-+.macro ENCRYPT_SINGLE_BLOCK XMM0 TMP1
-
-+ pxor (%arg1), \XMM0
-+ mov keysize,%eax
-+ shr $2,%eax # 128->4, 192->6, 256->8
-+ add $5,%eax # 128->9, 192->11, 256->13
-+ lea 16(%arg1), %r10 # get first expanded key address
-+
-+_esb_loop_\@:
-+ MOVADQ (%r10),\TMP1
-+ AESENC \TMP1,\XMM0
-+ add $16,%r10
-+ sub $1,%eax
-+ jnz _esb_loop_\@
-+
-+ MOVADQ (%r10),\TMP1
-+ AESENCLAST \TMP1,\XMM0
-+.endm
- /*****************************************************************************
- * void aesni_gcm_dec(void *aes_ctx, // AES Key schedule. Starts on a 16 byte boundary.
- * u8 *out, // Plaintext output. Encrypt in-place is allowed.
-diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
-index 6d4faba..bfaf817 100644
---- a/arch/x86/crypto/aesni-intel_glue.c
-+++ b/arch/x86/crypto/aesni-intel_glue.c
-@@ -177,7 +177,8 @@ static void aesni_gcm_enc_avx(void *ctx, u8 *out,
- u8 *hash_subkey, const u8 *aad, unsigned long aad_len,
- u8 *auth_tag, unsigned long auth_tag_len)
- {
-- if (plaintext_len < AVX_GEN2_OPTSIZE) {
-+ struct crypto_aes_ctx *aes_ctx = (struct crypto_aes_ctx*)ctx;
-+ if ((plaintext_len < AVX_GEN2_OPTSIZE) || (aes_ctx-> key_length != AES_KEYSIZE_128)){
- aesni_gcm_enc(ctx, out, in, plaintext_len, iv, hash_subkey, aad,
- aad_len, auth_tag, auth_tag_len);
- } else {
-@@ -192,7 +193,8 @@ static void aesni_gcm_dec_avx(void *ctx, u8 *out,
- u8 *hash_subkey, const u8 *aad, unsigned long aad_len,
- u8 *auth_tag, unsigned long auth_tag_len)
- {
-- if (ciphertext_len < AVX_GEN2_OPTSIZE) {
-+ struct crypto_aes_ctx *aes_ctx = (struct crypto_aes_ctx*)ctx;
-+ if ((ciphertext_len < AVX_GEN2_OPTSIZE) || (aes_ctx-> key_length != AES_KEYSIZE_128)) {
- aesni_gcm_dec(ctx, out, in, ciphertext_len, iv, hash_subkey, aad,
- aad_len, auth_tag, auth_tag_len);
- } else {
-@@ -226,7 +228,8 @@ static void aesni_gcm_enc_avx2(void *ctx, u8 *out,
- u8 *hash_subkey, const u8 *aad, unsigned long aad_len,
- u8 *auth_tag, unsigned long auth_tag_len)
- {
-- if (plaintext_len < AVX_GEN2_OPTSIZE) {
-+ struct crypto_aes_ctx *aes_ctx = (struct crypto_aes_ctx*)ctx;
-+ if ((plaintext_len < AVX_GEN2_OPTSIZE) || (aes_ctx-> key_length != AES_KEYSIZE_128)) {
- aesni_gcm_enc(ctx, out, in, plaintext_len, iv, hash_subkey, aad,
- aad_len, auth_tag, auth_tag_len);
- } else if (plaintext_len < AVX_GEN4_OPTSIZE) {
-@@ -245,7 +248,8 @@ static void aesni_gcm_dec_avx2(void *ctx, u8 *out,
- u8 *hash_subkey, const u8 *aad, unsigned long aad_len,
- u8 *auth_tag, unsigned long auth_tag_len)
- {
-- if (ciphertext_len < AVX_GEN2_OPTSIZE) {
-+ struct crypto_aes_ctx *aes_ctx = (struct crypto_aes_ctx*)ctx;
-+ if ((ciphertext_len < AVX_GEN2_OPTSIZE) || (aes_ctx-> key_length != AES_KEYSIZE_128)) {
- aesni_gcm_dec(ctx, out, in, ciphertext_len, iv, hash_subkey,
- aad, aad_len, auth_tag, auth_tag_len);
- } else if (ciphertext_len < AVX_GEN4_OPTSIZE) {
-@@ -878,7 +882,8 @@ static int rfc4106_set_key(struct crypto_aead *parent, const u8 *key,
- }
- /*Account for 4 byte nonce at the end.*/
- key_len -= 4;
-- if (key_len != AES_KEYSIZE_128) {
-+ if (key_len != AES_KEYSIZE_128 && key_len != AES_KEYSIZE_192 &&
-+ key_len != AES_KEYSIZE_256) {
- crypto_tfm_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
- return -EINVAL;
- }
-@@ -989,6 +994,7 @@ static int __driver_rfc4106_encrypt(struct aead_request *req)
- __be32 counter = cpu_to_be32(1);
- struct crypto_aead *tfm = crypto_aead_reqtfm(req);
- struct aesni_rfc4106_gcm_ctx *ctx = aesni_rfc4106_gcm_ctx_get(tfm);
-+ u32 key_len = ctx->aes_key_expanded.key_length;
- void *aes_ctx = &(ctx->aes_key_expanded);
- unsigned long auth_tag_len = crypto_aead_authsize(tfm);
- u8 iv_tab[16+AESNI_ALIGN];
-@@ -1003,6 +1009,13 @@ static int __driver_rfc4106_encrypt(struct aead_request *req)
- /* to 8 or 12 bytes */
- if (unlikely(req->assoclen != 8 && req->assoclen != 12))
- return -EINVAL;
-+ if (unlikely(auth_tag_len != 8 && auth_tag_len != 12 && auth_tag_len != 16))
-+ return -EINVAL;
-+ if (unlikely(key_len != AES_KEYSIZE_128 &&
-+ key_len != AES_KEYSIZE_192 &&
-+ key_len != AES_KEYSIZE_256))
-+ return -EINVAL;
-+
- /* IV below built */
- for (i = 0; i < 4; i++)
- *(iv+i) = ctx->nonce[i];
-@@ -1067,6 +1080,7 @@ static int __driver_rfc4106_decrypt(struct aead_request *req)
- int retval = 0;
- struct crypto_aead *tfm = crypto_aead_reqtfm(req);
- struct aesni_rfc4106_gcm_ctx *ctx = aesni_rfc4106_gcm_ctx_get(tfm);
-+ u32 key_len = ctx->aes_key_expanded.key_length;
- void *aes_ctx = &(ctx->aes_key_expanded);
- unsigned long auth_tag_len = crypto_aead_authsize(tfm);
- u8 iv_and_authTag[32+AESNI_ALIGN];
-@@ -1080,6 +1094,13 @@ static int __driver_rfc4106_decrypt(struct aead_request *req)
- if (unlikely((req->cryptlen < auth_tag_len) ||
- (req->assoclen != 8 && req->assoclen != 12)))
- return -EINVAL;
-+ if (unlikely(auth_tag_len != 8 && auth_tag_len != 12 && auth_tag_len != 16))
-+ return -EINVAL;
-+ if (unlikely(key_len != AES_KEYSIZE_128 &&
-+ key_len != AES_KEYSIZE_192 &&
-+ key_len != AES_KEYSIZE_256))
-+ return -EINVAL;
-+
- /* Assuming we are supporting rfc4106 64-bit extended */
- /* sequence numbers We need to have the AAD length */
- /* equal to 8 or 12 bytes */
---
-2.7.4
-
+++ /dev/null
-From a289eb38cfb481de48e36b481c72fb2492c6d242 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds@linux-foundation.org>
-Date: Thu, 13 Oct 2016 13:07:36 -0700
-Subject: [PATCH] mm: remove gup_flags FOLL_WRITE games from __get_user_pages()
-
-commit 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 upstream.
-
-This is an ancient bug that was actually attempted to be fixed once
-(badly) by me eleven years ago in commit 4ceb5db9757a ("Fix
-get_user_pages() race for write access") but that was then undone due to
-problems on s390 by commit f33ea7f404e5 ("fix get_user_pages bug").
-
-In the meantime, the s390 situation has long been fixed, and we can now
-fix it by checking the pte_dirty() bit properly (and do it better). The
-s390 dirty bit was implemented in abf09bed3cce ("s390/mm: implement
-software dirty bits") which made it into v3.9. Earlier kernels will
-have to look at the page state itself.
-
-Also, the VM has become more scalable, and what used a purely
-theoretical race back then has become easier to trigger.
-
-To fix it, we introduce a new internal FOLL_COW flag to mark the "yes,
-we already did a COW" rather than play racy games with FOLL_WRITE that
-is very fundamental, and then use the pte dirty flag to validate that
-the FOLL_COW flag is still valid.
-
-Reported-and-tested-by: Phil "not Paul" Oester <kernel@linuxace.com>
-Acked-by: Hugh Dickins <hughd@google.com>
-Reviewed-by: Michal Hocko <mhocko@suse.com>
-Cc: Andy Lutomirski <luto@kernel.org>
-Cc: Kees Cook <keescook@chromium.org>
-Cc: Oleg Nesterov <oleg@redhat.com>
-Cc: Willy Tarreau <w@1wt.eu>
-Cc: Nick Piggin <npiggin@gmail.com>
-Cc: Greg Thelen <gthelen@google.com>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Jiri Slaby <jslaby@suse.cz>
----
- include/linux/mm.h | 1 +
- mm/memory.c | 14 ++++++++++++--
- 2 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/include/linux/mm.h b/include/linux/mm.h
-index 5aef73c..6f56355 100644
---- a/include/linux/mm.h
-+++ b/include/linux/mm.h
-@@ -1964,6 +1964,7 @@ static inline struct page *follow_page(struct vm_area_struct *vma,
- #define FOLL_HWPOISON 0x100 /* check page is hwpoisoned */
- #define FOLL_NUMA 0x200 /* force NUMA hinting page fault */
- #define FOLL_MIGRATION 0x400 /* wait for page to replace migration entry */
-+#define FOLL_COW 0x4000 /* internal GUP flag */
-
- typedef int (*pte_fn_t)(pte_t *pte, pgtable_t token, unsigned long addr,
- void *data);
-diff --git a/mm/memory.c b/mm/memory.c
-index e9f4d40..5c1df12 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -1449,6 +1449,16 @@ int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
- }
- EXPORT_SYMBOL_GPL(zap_vma_ptes);
-
-+/*
-+ * FOLL_FORCE can write to even unwritable pte's, but only
-+ * after we've gone through a COW cycle and they are dirty.
-+ */
-+static inline bool can_follow_write_pte(pte_t pte, unsigned int flags)
-+{
-+ return pte_write(pte) ||
-+ ((flags & FOLL_FORCE) && (flags & FOLL_COW) && pte_dirty(pte));
-+}
-+
- /**
- * follow_page_mask - look up a page descriptor from a user-virtual address
- * @vma: vm_area_struct mapping @address
-@@ -1569,7 +1579,7 @@ split_fallthrough:
- }
- if ((flags & FOLL_NUMA) && pte_numa(pte))
- goto no_page;
-- if ((flags & FOLL_WRITE) && !pte_write(pte))
-+ if ((flags & FOLL_WRITE) && !can_follow_write_pte(pte, flags))
- goto unlock;
-
- page = vm_normal_page(vma, address, pte);
-@@ -1866,7 +1876,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
- */
- if ((ret & VM_FAULT_WRITE) &&
- !(vma->vm_flags & VM_WRITE))
-- foll_flags &= ~FOLL_WRITE;
-+ foll_flags |= FOLL_COW;
-
- cond_resched();
- }
---
-2.7.4
-
--- /dev/null
+diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htt_rx.c backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htt_rx.c
+--- backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htt_rx.c 2015-11-15 22:19:40.000000000 +0100
++++ backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htt_rx.c 2016-03-26 10:48:17.189430101 +0100
+@@ -1476,7 +1476,7 @@
+ */
+
+ if (!rx_status->freq) {
+- ath10k_warn(ar, "no channel configured; ignoring frame(s)!\n");
++ ath10k_dbg(ar,ATH10K_DBG_DATA ,"no channel configured; ignoring frame(s)!\n");
+ return false;
+ }
+
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
-index 494b888..851e01f 100644
+index 95c32f2..93fada5 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
-@@ -203,6 +203,125 @@ config RIONET_RX_SIZE
+@@ -260,6 +260,125 @@ config RIONET_RX_SIZE
depends on RIONET
default "128"
+ and distribute bandwidth among them. Iptables is used to specify
+ through which IMQ device, if any, packets travel.
+
-+ More information at: http://www.linuximq.net/
++ More information at: https://github.com/imq/linuximq
+
+ To compile this driver as a module, choose M here: the module
+ will be called imq. If unsure, say N.
+ This settings are specially usefull when trying to use IMQ
+ to shape NATed clients.
+
-+ More information can be found at: www.linuximq.net
++ More information can be found at: https://github.com/imq/linuximq
+
+ If not sure leave the default settings alone.
+
+ PREROUTING: After NAT
+ POSTROUTING: After NAT
+
-+ More information can be found at: www.linuximq.net
++ More information can be found at: https://github.com/imq/linuximq
+
+ If not sure leave the default settings alone.
+
+ PREROUTING: After NAT
+ POSTROUTING: Before NAT
+
-+ More information can be found at: www.linuximq.net
++ More information can be found at: https://github.com/imq/linuximq
+
+ If not sure leave the default settings alone.
+
+ PREROUTING: Before NAT
+ POSTROUTING: After NAT
+
-+ More information can be found at: www.linuximq.net
++ More information can be found at: https://github.com/imq/linuximq
+
+ If not sure leave the default settings alone.
+
+ PREROUTING: Before NAT
+ POSTROUTING: Before NAT
+
-+ More information can be found at: www.linuximq.net
++ More information can be found at: https://github.com/imq/linuximq
+
+ If not sure leave the default settings alone.
+
+
+ The default value is 16.
+
-+ More information can be found at: www.linuximq.net
++ More information can be found at: https://github.com/imq/linuximq
+
+ If not sure leave the default settings alone.
+
config TUN
tristate "Universal TUN/TAP device driver support"
- select CRC32
+ depends on INET
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
-index 3fef8a8..12dafc0 100644
+index 7336cbd..d6d7ad4 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
-@@ -9,6 +9,7 @@ obj-$(CONFIG_BONDING) += bonding/
- obj-$(CONFIG_DUMMY) += dummy.o
+@@ -11,6 +11,7 @@ obj-$(CONFIG_DUMMY) += dummy.o
obj-$(CONFIG_EQUALIZER) += eql.o
obj-$(CONFIG_IFB) += ifb.o
+ obj-$(CONFIG_MACSEC) += macsec.o
+obj-$(CONFIG_IMQ) += imq.o
obj-$(CONFIG_MACVLAN) += macvlan.o
obj-$(CONFIG_MACVTAP) += macvtap.o
obj-$(CONFIG_MII) += mii.o
diff --git a/drivers/net/imq.c b/drivers/net/imq.c
new file mode 100644
-index 0000000..2140535
+index 0000000..bc3b997
--- /dev/null
+++ b/drivers/net/imq.c
-@@ -0,0 +1,1011 @@
+@@ -0,0 +1,907 @@
+/*
+ * Pseudo-driver for the intermediate queue device.
+ *
+ *
+ * The first version was written by Martin Devera, <devik@cdi.cz>
+ *
-+ * Credits: Jan Rafaj <imq2t@cedric.vabo.cz>
-+ * - Update patch to 2.4.21
-+ * Sebastian Strollo <sstrollo@nortelnetworks.com>
-+ * - Fix "Dead-loop on netdevice imq"-issue
-+ * Marcel Sebek <sebek64@post.cz>
-+ * - Update to 2.6.2-rc1
-+ *
-+ * After some time of inactivity there is a group taking care
-+ * of IMQ again: http://www.linuximq.net
-+ *
-+ *
-+ * 2004/06/30 - New version of IMQ patch to kernels <=2.6.7
-+ * including the following changes:
-+ *
-+ * - Correction of ipv6 support "+"s issue (Hasso Tepper)
-+ * - Correction of imq_init_devs() issue that resulted in
-+ * kernel OOPS unloading IMQ as module (Norbert Buchmuller)
-+ * - Addition of functionality to choose number of IMQ devices
-+ * during kernel config (Andre Correa)
-+ * - Addition of functionality to choose how IMQ hooks on
-+ * PRE and POSTROUTING (after or before NAT) (Andre Correa)
-+ * - Cosmetic corrections (Norbert Buchmuller) (Andre Correa)
-+ *
-+ *
-+ * 2005/12/16 - IMQ versions between 2.6.7 and 2.6.13 were
-+ * released with almost no problems. 2.6.14-x was released
-+ * with some important changes: nfcache was removed; After
-+ * some weeks of trouble we figured out that some IMQ fields
-+ * in skb were missing in skbuff.c - skb_clone and copy_skb_header.
-+ * These functions are correctly patched by this new patch version.
-+ *
-+ * Thanks for all who helped to figure out all the problems with
-+ * 2.6.14.x: Patrick McHardy, Rune Kock, VeNoMouS, Max CtRiX,
-+ * Kevin Shanahan, Richard Lucassen, Valery Dachev (hopefully
-+ * I didn't forget anybody). I apologize again for my lack of time.
-+ *
-+ *
-+ * 2008/06/17 - 2.6.25 - Changed imq.c to use qdisc_run() instead
-+ * of qdisc_restart() and moved qdisc_run() to tasklet to avoid
-+ * recursive locking. New initialization routines to fix 'rmmod' not
-+ * working anymore. Used code from ifb.c. (Jussi Kivilinna)
-+ *
-+ * 2008/08/06 - 2.6.26 - (JK)
-+ * - Replaced tasklet with 'netif_schedule()'.
-+ * - Cleaned up and added comments for imq_nf_queue().
-+ *
-+ * 2009/04/12
-+ * - Add skb_save_cb/skb_restore_cb helper functions for backuping
-+ * control buffer. This is needed because qdisc-layer on kernels
-+ * 2.6.27 and newer overwrite control buffer. (Jussi Kivilinna)
-+ * - Add better locking for IMQ device. Hopefully this will solve
-+ * SMP issues. (Jussi Kivilinna)
-+ * - Port to 2.6.27
-+ * - Port to 2.6.28
-+ * - Port to 2.6.29 + fix rmmod not working
-+ *
-+ * 2009/04/20 - (Jussi Kivilinna)
-+ * - Use netdevice feature flags to avoid extra packet handling
-+ * by core networking layer and possibly increase performance.
-+ *
-+ * 2009/09/26 - (Jussi Kivilinna)
-+ * - Add imq_nf_reinject_lockless to fix deadlock with
-+ * imq_nf_queue/imq_nf_reinject.
-+ *
-+ * 2009/12/08 - (Jussi Kivilinna)
-+ * - Port to 2.6.32
-+ * - Add check for skb->nf_queue_entry==NULL in imq_dev_xmit()
-+ * - Also add better error checking for skb->nf_queue_entry usage
-+ *
-+ * 2010/02/25 - (Jussi Kivilinna)
-+ * - Port to 2.6.33
-+ *
-+ * 2010/08/15 - (Jussi Kivilinna)
-+ * - Port to 2.6.35
-+ * - Simplify hook registration by using nf_register_hooks.
-+ * - nf_reinject doesn't need spinlock around it, therefore remove
-+ * imq_nf_reinject function. Other nf_reinject users protect
-+ * their own data with spinlock. With IMQ however all data is
-+ * needed is stored per skbuff, so no locking is needed.
-+ * - Changed IMQ to use 'separate' NF_IMQ_QUEUE instead of
-+ * NF_QUEUE, this allows working coexistance of IMQ and other
-+ * NF_QUEUE users.
-+ * - Make IMQ multi-queue. Number of IMQ device queues can be
-+ * increased with 'numqueues' module parameters. Default number
-+ * of queues is 1, in other words by default IMQ works as
-+ * single-queue device. Multi-queue selection is based on
-+ * IFB multi-queue patch by Changli Gao <xiaosuo@gmail.com>.
-+ *
-+ * 2011/03/18 - (Jussi Kivilinna)
-+ * - Port to 2.6.38
-+ *
-+ * 2011/07/12 - (syoder89@gmail.com)
-+ * - Crash fix that happens when the receiving interface has more
-+ * than one queue (add missing skb_set_queue_mapping in
-+ * imq_select_queue).
-+ *
-+ * 2011/07/26 - (Jussi Kivilinna)
-+ * - Add queue mapping checks for packets exiting IMQ.
-+ * - Port to 3.0
-+ *
-+ * 2011/08/16 - (Jussi Kivilinna)
-+ * - Clear IFF_TX_SKB_SHARING flag that was added for linux 3.0.2
-+ *
-+ * 2011/11/03 - Germano Michel <germanomichel@gmail.com>
-+ * - Fix IMQ for net namespaces
-+ *
-+ * 2011/11/04 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ * - Port to 3.1
-+ * - Clean-up, move 'get imq device pointer by imqX name' to
-+ * separate function from imq_nf_queue().
-+ *
-+ * 2012/01/05 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ * - Port to 3.2
-+ *
-+ * 2012/03/19 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ * - Port to 3.3
-+ *
-+ * 2012/12/12 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ * - Port to 3.7
-+ * - Fix checkpatch.pl warnings
-+ *
-+ * 2013/09/10 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
-+ * - Fixed GSO handling for 3.10, see imq_nf_queue() for comments.
-+ * - Don't copy skb->cb_next when copying or cloning skbuffs.
-+ *
-+ * 2013/09/16 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
-+ * - Port to 3.11
-+ *
-+ * 2013/11/12 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
-+ * - Port to 3.12
-+ *
-+ * 2014/02/07 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
-+ * - Port to 3.13
-+ *
-+ * Also, many thanks to pablo Sebastian Greco for making the initial
-+ * patch and to those who helped the testing.
-+ *
-+ * More info at: http://www.linuximq.net/ (Andre Correa)
++ * See Creditis.txt
+ */
+
+#include <linux/module.h>
+ {
+ /* imq_ingress_ipv4 */
+ .hook = imq_nf_hook,
-+ .owner = THIS_MODULE,
+ .pf = PF_INET,
+ .hooknum = NF_INET_PRE_ROUTING,
+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
+ {
+ /* imq_egress_ipv4 */
+ .hook = imq_nf_hook,
-+ .owner = THIS_MODULE,
+ .pf = PF_INET,
+ .hooknum = NF_INET_POST_ROUTING,
+#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
+ {
+ /* imq_ingress_ipv6 */
+ .hook = imq_nf_hook,
-+ .owner = THIS_MODULE,
+ .pf = PF_INET6,
+ .hooknum = NF_INET_PRE_ROUTING,
+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
+ {
+ /* imq_egress_ipv6 */
+ .hook = imq_nf_hook,
-+ .owner = THIS_MODULE,
+ .pf = PF_INET6,
+ .hooknum = NF_INET_POST_ROUTING,
+#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
+#define IMQ_MAX_QUEUES 32
+static int numqueues = 1;
+static u32 imq_hashrnd;
++static int imq_dev_accurate_stats = 1;
+
+static inline __be16 pppoe_proto(const struct sk_buff *skb)
+{
+ struct nf_queue_entry *entry = skb->nf_queue_entry;
+
+ skb->nf_queue_entry = NULL;
-+ dev->trans_start = jiffies;
++ netif_trans_update(dev);
+
+ dev->stats.tx_bytes += skb->len;
+ dev->stats.tx_packets++;
+{
+ struct nf_queue_entry *entry = kmemdup(e, e->size, GFP_ATOMIC);
+ if (entry) {
-+ if (nf_queue_entry_get_refs(entry))
++ nf_queue_entry_get_refs(entry);
+ return entry;
-+ kfree(entry);
+ }
+ return NULL;
+}
+ goto out_no_dev;
+ }
+
-+ if (!skb_is_gso(entry->skb))
-+ return __imq_nf_queue(entry, dev);
-+
+ /* Since 3.10.x, GSO handling moved here as result of upstream commit
+ * a5fedd43d5f6c94c71053a66e4c3d2e35f1731a2 (netfilter: move
+ * skb_gso_segment into nfnetlink_queue module).
+
+ skb = entry->skb;
+
-+ switch (entry->pf) {
++ switch (entry->state.pf) {
+ case NFPROTO_IPV4:
+ skb->protocol = htons(ETH_P_IP);
+ break;
+ break;
+ }
+
++ if (!skb_is_gso(entry->skb))
++ return __imq_nf_queue(entry, dev);
++
+ nf_bridge_adjust_skb_data(skb);
+ segs = skb_gso_segment(skb, 0);
+ /* Does not use PTR_ERR to limit the number of error codes that can be
+
+static int __imq_nf_queue(struct nf_queue_entry *entry, struct net_device *dev)
+{
-+ struct sk_buff *skb_orig, *skb, *skb_shared;
++ struct sk_buff *skb_orig, *skb, *skb_shared, *skb_popd;
+ struct Qdisc *q;
++ struct sk_buff *to_free = NULL;
+ struct netdev_queue *txq;
+ spinlock_t *root_lock;
+ int users;
+ entry->skb = skb;
+ }
+
-+ skb->nf_queue_entry = entry;
-+
+ dev->stats.rx_bytes += skb->len;
+ dev->stats.rx_packets++;
+
+ if (unlikely(!q->enqueue))
+ goto packet_not_eaten_by_imq_dev;
+
++ skb->nf_queue_entry = entry;
+ root_lock = qdisc_lock(q);
+ spin_lock(root_lock);
+
+
+ /* backup skb->cb, as qdisc layer will overwrite it */
+ skb_save_cb(skb_shared);
-+ qdisc_enqueue_root(skb_shared, q); /* might kfree_skb */
-+
++ qdisc_enqueue_root(skb_shared, q, &to_free); /* might kfree_skb */
+ if (likely(atomic_read(&skb_shared->users) == users + 1)) {
++ bool validate;
++
+ kfree_skb(skb_shared); /* decrease reference count by one */
+
+ skb->destructor = &imq_skb_destructor;
+
++ skb_popd = qdisc_dequeue_skb(q, &validate);
++
+ /* cloned? */
+ if (unlikely(skb_orig))
+ kfree_skb(skb_orig); /* free original */
+
+ spin_unlock(root_lock);
-+ rcu_read_unlock_bh();
+
++#if 0
+ /* schedule qdisc dequeue */
+ __netif_schedule(q);
-+
++#else
++ if (likely(skb_popd)) {
++ /* Note that we validate skb (GSO, checksum, ...) outside of locks */
++ if (validate)
++ skb_popd = validate_xmit_skb_list(skb_popd, dev);
++
++ if (skb_popd) {
++ int dummy_ret;
++ int cpu = smp_processor_id(); /* ok because BHs are off */
++
++ txq = skb_get_tx_queue(dev, skb_popd);
++ /*
++ IMQ device will not be frozen or stoped, and it always be successful.
++ So we need not check its status and return value to accelerate.
++ */
++ if (imq_dev_accurate_stats && txq->xmit_lock_owner != cpu) {
++ HARD_TX_LOCK(dev, txq, cpu);
++ if (!netif_xmit_frozen_or_stopped(txq)) {
++ dev_hard_start_xmit(skb_popd, dev, txq, &dummy_ret);
++ }
++ HARD_TX_UNLOCK(dev, txq);
++ } else {
++ if (!netif_xmit_frozen_or_stopped(txq)) {
++ dev_hard_start_xmit(skb_popd, dev, txq, &dummy_ret);
++ }
++ }
++ }
++ } else {
++ /* No ready skb, then schedule it */
++ __netif_schedule(q);
++ }
++#endif
++ rcu_read_unlock_bh();
+ retval = 0;
+ goto out;
+ } else {
+ }
+ retval = -1;
+out:
++ if (unlikely(to_free)) {
++ kfree_skb_list(to_free);
++ }
+ return retval;
+}
-+
-+static unsigned int imq_nf_hook(const struct nf_hook_ops *hook_ops,
-+ struct sk_buff *pskb,
-+ const struct net_device *indev,
-+ const struct net_device *outdev,
-+ int (*okfn)(struct sk_buff *))
++static unsigned int imq_nf_hook(void *priv,
++ struct sk_buff *skb,
++ const struct nf_hook_state *state)
+{
-+ return (pskb->imq_flags & IMQ_F_ENQUEUE) ? NF_IMQ_QUEUE : NF_ACCEPT;
++ return (skb->imq_flags & IMQ_F_ENQUEUE) ? NF_IMQ_QUEUE : NF_ACCEPT;
+}
+
+static int imq_close(struct net_device *dev)
+ struct net_device *dev;
+ int ret;
+
-+ dev = alloc_netdev_mq(0, "imq%d", imq_setup, numqueues);
++ dev = alloc_netdev_mq(0, "imq%d", NET_NAME_UNKNOWN, imq_setup, numqueues);
+ if (!dev)
+ return -ENOMEM;
+
+ return err;
+ }
+
-+ pr_info("IMQ driver loaded successfully. (numdevs = %d, numqueues = %d)\n",
-+ numdevs, numqueues);
++ pr_info("IMQ driver loaded successfully. (numdevs = %d, numqueues = %d, imq_dev_accurate_stats = %d)\n",
++ numdevs, numqueues, imq_dev_accurate_stats);
+
+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
+ pr_info("\tHooking IMQ before NAT on PREROUTING.\n");
+
+module_param(numdevs, int, 0);
+module_param(numqueues, int, 0);
++module_param(imq_dev_accurate_stats, int, 0);
+MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will be created)");
+MODULE_PARM_DESC(numqueues, "number of queues per IMQ device");
-+MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
++MODULE_PARM_DESC(imq_dev_accurate_stats, "Notify if need the accurate imq device stats");
++
++MODULE_AUTHOR("https://github.com/imq/linuximq");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See https://github.com/imq/linuximq/wiki for more information.");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS_RTNL_LINK("imq");
-+
diff --git a/include/linux/imq.h b/include/linux/imq.h
new file mode 100644
index 0000000..1babb09
+
+#endif /* _IMQ_H */
+
+diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
+index e16a2a9..4a1090a 100644
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -3669,6 +3669,19 @@ static inline void netif_tx_unlock_bh(struct net_device *dev)
+ } \
+ }
+
++#define HARD_TX_LOCK_BH(dev, txq) { \
++ if ((dev->features & NETIF_F_LLTX) == 0) { \
++ __netif_tx_lock_bh(txq); \
++ } \
++}
++
++#define HARD_TX_UNLOCK_BH(dev, txq) { \
++ if ((dev->features & NETIF_F_LLTX) == 0) { \
++ __netif_tx_unlock_bh(txq); \
++ } \
++}
++
++
+ static inline void netif_tx_disable(struct net_device *dev)
+ {
+ unsigned int i;
diff --git a/include/linux/netfilter/xt_IMQ.h b/include/linux/netfilter/xt_IMQ.h
new file mode 100644
index 0000000..9b07230
+#endif /* _IP6T_IMQ_H */
+
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index ad8f859..8473090 100644
+index c8f9fa6..6c425c2 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -33,6 +33,9 @@
- #include <linux/dma-mapping.h>
- #include <linux/netdev_features.h>
- #include <net/flow_keys.h>
+@@ -39,6 +39,10 @@
+ #include <linux/in6.h>
+ #include <linux/if_packet.h>
+ #include <net/flow.h>
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+#include <linux/imq.h>
+#endif
++
- /* A. Checksumming of received packets by device.
- *
-@@ -441,6 +444,9 @@ struct sk_buff {
+ /* The interface for checksum offload between the stack and networking drivers
+ * is as follows...
+@@ -654,6 +658,9 @@ struct sk_buff {
* first. This is owned by whoever has the skb queued ATM.
*/
char cb[48] __aligned(8);
+#endif
unsigned long _skb_refdst;
- #ifdef CONFIG_XFRM
-@@ -476,6 +482,9 @@ struct sk_buff {
+ void (*destructor)(struct sk_buff *skb);
+@@ -663,6 +670,9 @@ struct sk_buff {
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
struct nf_conntrack *nfct;
#endif
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+ struct nf_queue_entry *nf_queue_entry;
++ struct nf_queue_entry *nf_queue_entry;
+#endif
- #ifdef CONFIG_BRIDGE_NETFILTER
+ #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
struct nf_bridge_info *nf_bridge;
#endif
-@@ -513,6 +522,9 @@ struct sk_buff {
- */
- __u8 encapsulation:1;
- /* 6/8 bit hole (depending on ndisc_nodetype presence) */
+@@ -743,6 +753,9 @@ struct sk_buff {
+ __u8 offload_fwd_mark:1;
+ #endif
+ /* 2, 4 or 5 bit hole */
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+ __u8 imq_flags:IMQ_F_BITS;
+#endif
- kmemcheck_bitfield_end(flags2);
- #if defined CONFIG_NET_DMA || defined CONFIG_NET_RX_BUSY_POLL
-@@ -653,6 +665,12 @@ void kfree_skb_list(struct sk_buff *segs);
+ #ifdef CONFIG_NET_SCHED
+ __u16 tc_index; /* traffic control index */
+@@ -903,6 +916,12 @@ void kfree_skb_list(struct sk_buff *segs);
void skb_tx_error(struct sk_buff *skb);
void consume_skb(struct sk_buff *skb);
void __kfree_skb(struct sk_buff *skb);
extern struct kmem_cache *skbuff_head_cache;
void kfree_skb_partial(struct sk_buff *skb, bool head_stolen);
-@@ -2739,6 +2757,10 @@ static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src)
- nf_conntrack_get(src->nfct);
- dst->nfctinfo = src->nfctinfo;
+@@ -3594,6 +3613,10 @@ static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src,
+ if (copy)
+ dst->nfctinfo = src->nfctinfo;
#endif
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+ dst->imq_flags = src->imq_flags;
-+ dst->nf_queue_entry = src->nf_queue_entry;
++ dst->imq_flags = src->imq_flags;
++ dst->nf_queue_entry = src->nf_queue_entry;
+#endif
- #ifdef CONFIG_BRIDGE_NETFILTER
+ #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
dst->nf_bridge = src->nf_bridge;
nf_bridge_get(src->nf_bridge);
diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h
-index 84a53d7..6ffb593 100644
+index 2280cfe..ec8fa51 100644
--- a/include/net/netfilter/nf_queue.h
+++ b/include/net/netfilter/nf_queue.h
-@@ -33,6 +33,12 @@ struct nf_queue_handler {
- void nf_register_queue_handler(const struct nf_queue_handler *qh);
- void nf_unregister_queue_handler(void);
+@@ -30,6 +30,12 @@ struct nf_queue_handler {
+ void nf_register_queue_handler(struct net *net, const struct nf_queue_handler *qh);
+ void nf_unregister_queue_handler(struct net *net);
void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
+void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
+
+void nf_unregister_queue_imq_handler(void);
+#endif
- bool nf_queue_entry_get_refs(struct nf_queue_entry *entry);
+ void nf_queue_entry_get_refs(struct nf_queue_entry *entry);
void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
+diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h
+index cd334c9..6757228 100644
+--- a/include/net/pkt_sched.h
++++ b/include/net/pkt_sched.h
+@@ -105,6 +105,8 @@ int sch_direct_xmit(struct sk_buff *skb, struct Qdisc *q,
+
+ void __qdisc_run(struct Qdisc *q);
+
++struct sk_buff *qdisc_dequeue_skb(struct Qdisc *q, bool *validate);
++
+ static inline void qdisc_run(struct Qdisc *q)
+ {
+ if (qdisc_run_begin(q))
+diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
+index e6aa0a2..08b37dc 100644
+--- a/include/net/sch_generic.h
++++ b/include/net/sch_generic.h
+@@ -518,6 +518,13 @@ static inline int qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
+ return sch->enqueue(skb, sch, to_free);
+ }
+
++static inline int qdisc_enqueue_root(struct sk_buff *skb, struct Qdisc *sch,
++ struct sk_buff **to_free)
++{
++ qdisc_skb_cb(skb)->pkt_len = skb->len;
++ return qdisc_enqueue(skb, sch, to_free) & NET_XMIT_MASK;
++}
++
+ static inline bool qdisc_is_percpu_stats(const struct Qdisc *q)
+ {
+ return q->flags & TCQ_F_CPUSTATS;
diff --git a/include/uapi/linux/netfilter.h b/include/uapi/linux/netfilter.h
-index ef1b1f8..079e5ff 100644
+index d93f949..23fb6d1 100644
--- a/include/uapi/linux/netfilter.h
+++ b/include/uapi/linux/netfilter.h
-@@ -13,7 +13,8 @@
+@@ -14,7 +14,8 @@
#define NF_QUEUE 3
#define NF_REPEAT 4
#define NF_STOP 5
/* we overload the higher bits for encoding auxiliary data such as the queue
* number or errno values. Not nice, but better than additional function
diff --git a/net/core/dev.c b/net/core/dev.c
-index 3ed11a5..fd62030 100644
+index 6666b28..3e12add 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -132,6 +132,9 @@
- #include <linux/hashtable.h>
- #include <linux/vmalloc.h>
- #include <linux/if_macvlan.h>
+@@ -141,6 +141,9 @@
+ #include <linux/netfilter_ingress.h>
+ #include <linux/sctp.h>
+ #include <linux/crash_dump.h>
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+#include <linux/imq.h>
+#endif
#include "net-sysfs.h"
-@@ -2611,7 +2614,12 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
- }
- }
+@@ -2906,7 +2909,12 @@ static int xmit_one(struct sk_buff *skb, struct net_device *dev,
+ unsigned int len;
+ int rc;
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+ if (!list_empty(&ptype_all) &&
-+ !(skb->imq_flags & IMQ_F_ENQUEUE))
++ if ((!list_empty(&ptype_all) || !list_empty(&dev->ptype_all)) &&
++ !(skb->imq_flags & IMQ_F_ENQUEUE))
+#else
- if (!list_empty(&ptype_all))
+ if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
+#endif
- dev_queue_xmit_nit(skb, dev);
+ dev_queue_xmit_nit(skb, dev);
+
+ len = skb->len;
+@@ -2945,6 +2953,8 @@ struct sk_buff *dev_hard_start_xmit(struct sk_buff *first, struct net_device *de
+ return skb;
+ }
- skb_len = skb->len;
++EXPORT_SYMBOL_GPL(dev_hard_start_xmit);
++
+ static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb,
+ netdev_features_t features)
+ {
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index baf6fc4..7d30d78 100644
+index 9bf1289..e3fcf17 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
-@@ -77,6 +77,115 @@
-
- struct kmem_cache *skbuff_head_cache __read_mostly;
+@@ -82,6 +82,87 @@ struct kmem_cache *skbuff_head_cache __read_mostly;
static struct kmem_cache *skbuff_fclone_cache __read_mostly;
+ int sysctl_max_skb_frags __read_mostly = MAX_SKB_FRAGS;
+ EXPORT_SYMBOL(sysctl_max_skb_frags);
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+static struct kmem_cache *skbuff_cb_store_cache __read_mostly;
+#endif
+
-+static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
-+ struct pipe_buffer *buf)
-+{
-+ put_page(buf->page);
-+}
-+
-+static void sock_pipe_buf_get(struct pipe_inode_info *pipe,
-+ struct pipe_buffer *buf)
-+{
-+ get_page(buf->page);
-+}
-+
-+static int sock_pipe_buf_steal(struct pipe_inode_info *pipe,
-+ struct pipe_buffer *buf)
-+{
-+ return 1;
-+}
-+
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+/* Control buffer save/restore for IMQ devices */
+struct skb_cb_table {
+}
+EXPORT_SYMBOL(skb_restore_cb);
+
++static void skb_copy_stored_cb(struct sk_buff * , const struct sk_buff * ) __attribute__ ((unused));
+static void skb_copy_stored_cb(struct sk_buff *new, const struct sk_buff *__old)
+{
+ struct skb_cb_table *next;
+ spin_unlock(&skb_cb_store_lock);
+}
+#endif
-+
-+/* Pipe buffer operations for a socket. */
-+static const struct pipe_buf_operations sock_pipe_buf_ops = {
-+ .can_merge = 0,
-+ .map = generic_pipe_buf_map,
-+ .unmap = generic_pipe_buf_unmap,
-+ .confirm = generic_pipe_buf_confirm,
-+ .release = sock_pipe_buf_release,
-+ .steal = sock_pipe_buf_steal,
-+ .get = sock_pipe_buf_get,
-+};
/**
* skb_panic - private function for out-of-line support
-@@ -563,6 +672,28 @@ static void skb_release_head_state(struct sk_buff *skb)
+@@ -654,6 +735,28 @@ static void skb_release_head_state(struct sk_buff *skb)
WARN_ON(in_irq());
skb->destructor(skb);
}
+ while (skb->cb_next != NULL) {
+ if (net_ratelimit())
+ pr_warn("IMQ: kfree_skb: skb->cb_next: %08x\n",
-+ (unsigned int)skb->cb_next);
++ (unsigned int)(uintptr_t)skb->cb_next);
+
+ skb_restore_cb(skb);
+ }
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
nf_conntrack_put(skb->nfct);
#endif
-@@ -694,6 +825,10 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
+@@ -843,6 +946,10 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
new->sp = secpath_get(old->sp);
#endif
- memcpy(new->cb, old->cb, sizeof(old->cb));
+ __nf_copy(new, old, false);
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+ new->cb_next = NULL;
+ /*skb_copy_stored_cb(new, old);*/
+#endif
- new->csum = old->csum;
- new->local_df = old->local_df;
- new->pkt_type = old->pkt_type;
-@@ -3233,6 +3368,13 @@ void __init skb_init(void)
+
+ /* Note : this field could be in headers_start/headers_end section
+ * It is not yet because we do not want to have a 16 bit hole
+@@ -3464,6 +3571,13 @@ void __init skb_init(void)
0,
SLAB_HWCACHE_ALIGN|SLAB_PANIC,
NULL);
/**
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
-index 12f7ef0..deb1c9d 100644
+index 59eb4ed..8020b07 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
-@@ -64,9 +64,6 @@ static int ip6_finish_output2(struct sk_buff *skb)
+@@ -66,9 +66,6 @@ static int ip6_finish_output2(struct net *net, struct sock *sk, struct sk_buff *
struct in6_addr *nexthop;
int ret;
if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
-@@ -143,6 +140,13 @@ int ip6_output(struct sk_buff *skb)
+@@ -150,6 +147,13 @@ int ip6_output(struct net *net, struct sock *sk, struct sk_buff *skb)
return 0;
}
+ /*
-+ * IMQ-patch: moved setting skb->dev and skb->protocol from
-+ * ip6_finish_output2 to fix crashing at netif_skb_features().
-+ */
++ * IMQ-patch: moved setting skb->dev and skb->protocol from
++ * ip6_finish_output2 to fix crashing at netif_skb_features().
++ */
+ skb->protocol = htons(ETH_P_IPV6);
+ skb->dev = dev;
+
- return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev,
+ return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING,
+ net, sk, skb, NULL, dev,
ip6_finish_output,
- !(IP6CB(skb)->flags & IP6SKB_REROUTED));
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
-index e9410d1..ba801d5 100644
+index 4a2e5a3..fc5cc9a 100644
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
-@@ -751,6 +751,18 @@ config NETFILTER_XT_TARGET_LOG
+@@ -833,6 +833,18 @@ config NETFILTER_XT_TARGET_LOG
To compile it as a module, choose M here. If unsure, say N.
tristate '"MARK" target support'
depends on NETFILTER_ADVANCED
diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
-index bffdad7..050e613 100644
+index e5c5e1e..3128bc5 100644
--- a/net/netfilter/Makefile
+++ b/net/netfilter/Makefile
-@@ -103,6 +103,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
+@@ -119,6 +119,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
obj-$(CONFIG_NETFILTER_XT_TARGET_HMARK) += xt_HMARK.o
obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o
obj-$(CONFIG_NETFILTER_XT_TARGET_NETMAP) += xt_NETMAP.o
diff --git a/net/netfilter/core.c b/net/netfilter/core.c
-index 1fbab0c..4493417 100644
+index 004af03..768a08b 100644
--- a/net/netfilter/core.c
+++ b/net/netfilter/core.c
-@@ -191,9 +191,11 @@ next_hook:
+@@ -360,8 +360,11 @@ int nf_hook_slow(struct sk_buff *skb, struct nf_hook_state *state)
ret = NF_DROP_GETERR(verdict);
if (ret == 0)
ret = -EPERM;
- } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE) {
+ } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE ||
+ (verdict & NF_VERDICT_MASK) == NF_IMQ_QUEUE) {
- int err = nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
-- verdict >> NF_VERDICT_QBITS);
-+ verdict >> NF_VERDICT_QBITS,
-+ verdict & NF_VERDICT_MASK);
- if (err < 0) {
- if (err == -ECANCELED)
- goto next_hook;
-diff --git a/net/netfilter/nf_internals.h b/net/netfilter/nf_internals.h
-index 61a3c92..5388a0e 100644
---- a/net/netfilter/nf_internals.h
-+++ b/net/netfilter/nf_internals.h
-@@ -23,7 +23,7 @@ unsigned int nf_iterate(struct list_head *head, struct sk_buff *skb,
- int nf_queue(struct sk_buff *skb, struct nf_hook_ops *elem, u_int8_t pf,
- unsigned int hook, struct net_device *indev,
- struct net_device *outdev, int (*okfn)(struct sk_buff *),
-- unsigned int queuenum);
-+ unsigned int queuenum, unsigned int queuetype);
- int __init netfilter_queue_init(void);
-
- /* nf_log.c */
+ ret = nf_queue(skb, state, &entry, verdict);
++ if (ret == -ECANCELED)
++ goto next_hook;
+ if (ret == 1 && entry)
+ goto next_hook;
+ }
diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c
-index 5d24b1f..28317dc 100644
+index 8f08d75..c12c9eb 100644
--- a/net/netfilter/nf_queue.c
+++ b/net/netfilter/nf_queue.c
@@ -27,6 +27,23 @@
+ * receives, no matter what.
*/
- static const struct nf_queue_handler __rcu *queue_handler __read_mostly;
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+static const struct nf_queue_handler __rcu *queue_imq_handler __read_mostly;
+
/* return EBUSY when somebody else is registered, return EEXIST if the
* same handler is registered, return 0 in case of success. */
- void nf_register_queue_handler(const struct nf_queue_handler *qh)
-@@ -105,7 +122,8 @@ int nf_queue(struct sk_buff *skb,
- struct net_device *indev,
- struct net_device *outdev,
- int (*okfn)(struct sk_buff *),
+ void nf_register_queue_handler(struct net *net, const struct nf_queue_handler *qh)
+@@ -108,16 +125,28 @@ void nf_queue_nf_hook_drop(struct net *net, const struct nf_hook_entry *entry)
+ }
+
+ static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state,
- unsigned int queuenum)
-+ unsigned int queuenum,
-+ unsigned int queuetype)
++ unsigned int verdict)
{
int status = -ENOENT;
struct nf_queue_entry *entry = NULL;
-@@ -115,7 +133,17 @@ int nf_queue(struct sk_buff *skb,
- /* QUEUE == DROP if no one is waiting, to be safe. */
- rcu_read_lock();
+ const struct nf_afinfo *afinfo;
+ const struct nf_queue_handler *qh;
+ struct net *net = state->net;
++ unsigned int queuetype = verdict & NF_VERDICT_MASK;
++ unsigned int queuenum = verdict >> NF_VERDICT_QBITS;
-- qh = rcu_dereference(queue_handler);
+ /* QUEUE == DROP if no one is waiting, to be safe. */
+- qh = rcu_dereference(net->nf.queue_handler);
+ if (queuetype == NF_IMQ_QUEUE) {
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+ qh = rcu_dereference(queue_imq_handler);
+ goto err_unlock;
+#endif
+ } else {
-+ qh = rcu_dereference(queue_handler);
++ qh = rcu_dereference(net->nf.queue_handler);
+ }
+
if (!qh) {
status = -ESRCH;
- goto err_unlock;
-@@ -205,9 +233,11 @@ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict)
+ goto err;
+@@ -164,8 +193,14 @@ int nf_queue(struct sk_buff *skb, struct nf_hook_state *state,
+ int ret;
+
+ RCU_INIT_POINTER(state->hook_entries, entry);
+- ret = __nf_queue(skb, state, verdict >> NF_VERDICT_QBITS);
++ ret = __nf_queue(skb, state, verdict);
+ if (ret < 0) {
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++ if (ret == -ECANCELED && skb->imq_flags == 0) { // down interface
++ *entryp = rcu_dereference(entry->next);
++ return 1;
++ }
++#endif
+ if (ret == -ESRCH &&
+ (verdict & NF_VERDICT_FLAG_QUEUE_BYPASS)) {
+ *entryp = rcu_dereference(entry->next);
+@@ -218,6 +253,7 @@ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict)
local_bh_enable();
break;
case NF_QUEUE:
+ case NF_IMQ_QUEUE:
- err = nf_queue(skb, elem, entry->pf, entry->hook,
- entry->indev, entry->outdev, entry->okfn,
-- verdict >> NF_VERDICT_QBITS);
-+ verdict >> NF_VERDICT_QBITS,
-+ verdict & NF_VERDICT_MASK);
- if (err < 0) {
- if (err == -ECANCELED)
- goto next_hook;
+ err = nf_queue(skb, &entry->state, &hook_entry, verdict);
+ if (err == 1) {
+ if (hook_entry)
diff --git a/net/netfilter/xt_IMQ.c b/net/netfilter/xt_IMQ.c
new file mode 100644
-index 0000000..1c3cd66
+index 0000000..f9c5817
--- /dev/null
+++ b/net/netfilter/xt_IMQ.c
@@ -0,0 +1,72 @@
+module_init(imq_init);
+module_exit(imq_fini);
+
-+MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
++MODULE_AUTHOR("https://github.com/imq/linuximq");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See https://github.com/imq/linuximq/wiki for more information.");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("ipt_IMQ");
+MODULE_ALIAS("ip6t_IMQ");
+
+diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
+index 6cfb6e9..4c675e9 100644
+--- a/net/sched/sch_generic.c
++++ b/net/sched/sch_generic.c
+@@ -154,6 +154,14 @@ static struct sk_buff *dequeue_skb(struct Qdisc *q, bool *validate,
+ return skb;
+ }
+
++struct sk_buff *qdisc_dequeue_skb(struct Qdisc *q, bool *validate)
++{
++ int packets;
++
++ return dequeue_skb(q, validate, &packets);
++}
++EXPORT_SYMBOL(qdisc_dequeue_skb);
++
+ /*
+ * Transmit possibly several skbs, and handle the return status as
+ * required. Owning running seqcount bit guarantees that
-diff -Naur linux-3.14.22.org/include/linux/netfilter/xt_layer7.h linux-3.14.22/include/linux/netfilter/xt_layer7.h
---- linux-3.14.22.org/include/linux/netfilter/xt_layer7.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/include/linux/netfilter/xt_layer7.h 2014-10-24 15:33:21.281274380 +0200
-@@ -0,0 +1,14 @@
+diff --git a/include/linux/netfilter/xt_layer7.h b/include/linux/netfilter/xt_layer7.h
+new file mode 100644
+index 0000000..147cd64
+--- /dev/null
++++ b/include/linux/netfilter/xt_layer7.h
+@@ -0,0 +1,13 @@
+#ifndef _XT_LAYER7_H
+#define _XT_LAYER7_H
+
+ char protocol[MAX_PROTOCOL_LEN];
+ char pattern[MAX_PATTERN_LEN];
+ u_int8_t invert;
-+ u_int8_t pkt;
+};
+
+#endif /* _XT_LAYER7_H */
-diff -Naur linux-3.14.22.org/include/net/netfilter/nf_conntrack.h linux-3.14.22/include/net/netfilter/nf_conntrack.h
---- linux-3.14.22.org/include/net/netfilter/nf_conntrack.h 2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/include/net/netfilter/nf_conntrack.h 2014-10-24 15:33:21.281274380 +0200
-@@ -105,6 +105,22 @@
- struct net *ct_net;
+diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
+index 32810f2..b1e6b5c 100644
+--- a/include/linux/skbuff.h
++++ b/include/linux/skbuff.h
+@@ -663,6 +663,9 @@ struct sk_buff {
+ #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
+ struct nf_conntrack *nfct;
#endif
++#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
++ char layer7_flags[1];
++#endif
+ #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
+ struct nf_bridge_info *nf_bridge;
+ #endif
+diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h
+index d9d52c0..99b7a82 100644
+--- a/include/net/netfilter/nf_conntrack.h
++++ b/include/net/netfilter/nf_conntrack.h
+@@ -120,6 +120,23 @@ struct nf_conn {
+ /* Extensions */
+ struct nf_ct_ext *ext;
+#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || \
+ defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
+ */
+ char *app_data;
+ unsigned int app_data_len;
++ unsigned int packets;
+ } layer7;
+#endif
+
/* Storage reserved for other modules, must be the last member */
union nf_conntrack_proto proto;
};
-diff -Naur linux-3.14.22.org/include/uapi/linux/netfilter/Kbuild linux-3.14.22/include/uapi/linux/netfilter/Kbuild
---- linux-3.14.22.org/include/uapi/linux/netfilter/Kbuild 2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/include/uapi/linux/netfilter/Kbuild 2014-10-24 15:34:39.721663344 +0200
-@@ -59,6 +59,7 @@
- header-y += xt_iprange.h
- header-y += xt_ipvs.h
- header-y += xt_l2tp.h
-+header-y += xt_layer7.h
- header-y += xt_length.h
- header-y += xt_limit.h
- header-y += xt_mac.h
-diff -Naur linux-3.14.22.org/net/netfilter/Kconfig linux-3.14.22/net/netfilter/Kconfig
---- linux-3.14.22.org/net/netfilter/Kconfig 2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/net/netfilter/Kconfig 2014-10-24 15:33:21.281274380 +0200
-@@ -1153,6 +1153,26 @@
+diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
+index e8d56d9..ab4ae1d 100644
+--- a/net/netfilter/Kconfig
++++ b/net/netfilter/Kconfig
+@@ -1238,6 +1238,26 @@ config NETFILTER_XT_MATCH_L2TP
To compile it as a module, choose M here. If unsure, say N.
config NETFILTER_XT_MATCH_LENGTH
tristate '"length" match support'
depends on NETFILTER_ADVANCED
-@@ -1347,6 +1367,12 @@
-
- To compile it as a module, choose M here. If unsure, say N.
-
-+config NETFILTER_XT_MATCH_LAYER7_DEBUG
-+ bool 'Layer 7 debugging output'
-+ depends on NETFILTER_XT_MATCH_LAYER7
-+ help
-+ Say Y to get lots of debugging output.
-+
- config NETFILTER_XT_MATCH_STATISTIC
- tristate '"statistic" match support'
- depends on NETFILTER_ADVANCED
-diff -Naur linux-3.14.22.org/net/netfilter/Makefile linux-3.14.22/net/netfilter/Makefile
---- linux-3.14.22.org/net/netfilter/Makefile 2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/net/netfilter/Makefile 2014-10-24 15:33:21.281274380 +0200
-@@ -158,6 +158,7 @@
+diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
+index c23c3c8..916b9d5 100644
+--- a/net/netfilter/Makefile
++++ b/net/netfilter/Makefile
+@@ -174,6 +174,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT) += xt_recent.o
obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STATISTIC) += xt_statistic.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STRING) += xt_string.o
obj-$(CONFIG_NETFILTER_XT_MATCH_TCPMSS) += xt_tcpmss.o
-diff -Naur linux-3.14.22.org/net/netfilter/nf_conntrack_core.c linux-3.14.22/net/netfilter/nf_conntrack_core.c
---- linux-3.14.22.org/net/netfilter/nf_conntrack_core.c 2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/net/netfilter/nf_conntrack_core.c 2014-10-24 15:33:21.281274380 +0200
-@@ -220,6 +220,13 @@
- * too. */
+diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
+index 0f87e5d..1f355a0 100644
+--- a/net/netfilter/nf_conntrack_core.c
++++ b/net/netfilter/nf_conntrack_core.c
+@@ -406,6 +406,11 @@ destroy_conntrack(struct nf_conntrack *nfct)
+ */
nf_ct_remove_expectations(ct);
+#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
-+ if(ct->layer7.app_proto)
-+ kfree(ct->layer7.app_proto);
+ if(ct->layer7.app_data)
+ kfree(ct->layer7.app_data);
+#endif
+
- /* We overload first tuple to link into unconfirmed or dying list.*/
- BUG_ON(hlist_nulls_unhashed(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode));
- hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
-diff -Naur linux-3.14.22.org/net/netfilter/nf_conntrack_standalone.c linux-3.14.22/net/netfilter/nf_conntrack_standalone.c
---- linux-3.14.22.org/net/netfilter/nf_conntrack_standalone.c 2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/net/netfilter/nf_conntrack_standalone.c 2014-10-24 15:33:21.285274399 +0200
-@@ -240,6 +240,12 @@
- if (ct_show_delta_time(s, ct))
- goto release;
+ nf_ct_del_from_dying_or_unconfirmed_list(ct);
+
+ local_bh_enable();
+diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
+index 5f446cd..92f29f9 100644
+--- a/net/netfilter/nf_conntrack_standalone.c
++++ b/net/netfilter/nf_conntrack_standalone.c
+@@ -274,6 +274,11 @@ static int ct_seq_show(struct seq_file *s, void *v)
+ ct_show_zone(s, ct, NF_CT_DEFAULT_ZONE_DIR);
+ ct_show_delta_time(s, ct);
+#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
-+ if(ct->layer7.app_proto &&
-+ seq_printf(s, "l7proto=%s ", ct->layer7.app_proto))
-+ return -ENOSPC;
++ if(ct->layer7.app_proto)
++ seq_printf(s, "l7proto=%s ", ct->layer7.app_proto);
+#endif
+
- if (seq_printf(s, "use=%u\n", atomic_read(&ct->ct_general.use)))
- goto release;
+ seq_printf(s, "use=%u\n", atomic_read(&ct->ct_general.use));
-diff -Naur linux-3.14.22.org/net/netfilter/regexp/regexp.c linux-3.14.22/net/netfilter/regexp/regexp.c
---- linux-3.14.22.org/net/netfilter/regexp/regexp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/regexp/regexp.c 2014-10-24 15:33:21.285274399 +0200
+ if (seq_has_overflowed(s))
+diff --git a/net/netfilter/regexp/regexp.c b/net/netfilter/regexp/regexp.c
+new file mode 100644
+index 0000000..9006988
+--- /dev/null
++++ b/net/netfilter/regexp/regexp.c
@@ -0,0 +1,1197 @@
+/*
+ * regcomp and regexec -- regsub and regerror are elsewhere
+#endif
+
+
-diff -Naur linux-3.14.22.org/net/netfilter/regexp/regexp.h linux-3.14.22/net/netfilter/regexp/regexp.h
---- linux-3.14.22.org/net/netfilter/regexp/regexp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/regexp/regexp.h 2014-10-24 15:33:21.285274399 +0200
+diff --git a/net/netfilter/regexp/regexp.h b/net/netfilter/regexp/regexp.h
+new file mode 100644
+index 0000000..a72eba7
+--- /dev/null
++++ b/net/netfilter/regexp/regexp.h
@@ -0,0 +1,41 @@
+/*
+ * Definitions etc. for regexp(3) routines.
+void regerror(char *s);
+
+#endif
-diff -Naur linux-3.14.22.org/net/netfilter/regexp/regmagic.h linux-3.14.22/net/netfilter/regexp/regmagic.h
---- linux-3.14.22.org/net/netfilter/regexp/regmagic.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/regexp/regmagic.h 2014-10-24 15:33:21.285274399 +0200
+diff --git a/net/netfilter/regexp/regmagic.h b/net/netfilter/regexp/regmagic.h
+new file mode 100644
+index 0000000..5acf447
+--- /dev/null
++++ b/net/netfilter/regexp/regmagic.h
@@ -0,0 +1,5 @@
+/*
+ * The first byte of the regexp internal "program" is actually this magic
+ * number; the start node begins in the second byte.
+ */
+#define MAGIC 0234
-diff -Naur linux-3.14.22.org/net/netfilter/regexp/regsub.c linux-3.14.22/net/netfilter/regexp/regsub.c
---- linux-3.14.22.org/net/netfilter/regexp/regsub.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/regexp/regsub.c 2014-10-24 15:33:21.285274399 +0200
+diff --git a/net/netfilter/regexp/regsub.c b/net/netfilter/regexp/regsub.c
+new file mode 100644
+index 0000000..339631f
+--- /dev/null
++++ b/net/netfilter/regexp/regsub.c
@@ -0,0 +1,95 @@
+/*
+ * regsub
+ }
+ *dst++ = '\0';
+}
-diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilter/xt_layer7.c
---- linux-3.14.22.org/net/netfilter/xt_layer7.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/xt_layer7.c 2014-10-24 15:33:21.285274399 +0200
-@@ -0,0 +1,665 @@
+diff --git a/net/netfilter/xt_layer7.c b/net/netfilter/xt_layer7.c
+new file mode 100644
+index 0000000..4a4f3f9
+--- /dev/null
++++ b/net/netfilter/xt_layer7.c
+@@ -0,0 +1,682 @@
+/*
+ Kernel module to match application layer (OSI layer 7) data in connections.
+
+#include <net/ip.h>
+#include <net/tcp.h>
+#include <linux/module.h>
-+#include <linux/seq_file.h>
+#include <linux/skbuff.h>
+#include <linux/netfilter.h>
+#include <net/netfilter/nf_conntrack.h>
+#include <net/netfilter/nf_conntrack_core.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+#include <net/netfilter/nf_conntrack_extend.h>
+#include <net/netfilter/nf_conntrack_acct.h>
++#endif
+#include <linux/netfilter/x_tables.h>
+#include <linux/netfilter/xt_layer7.h>
+#include <linux/ctype.h>
+#include "regexp/regexp.c"
+
+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Matthew Strait <quadong@users.sf.net>, Ethan Sommer <sommere@users.sf.net>");
++MODULE_AUTHOR("Matthew Strait <quadong@users.sf.net>, Ethan Sommer <sommere@users.sf.net>, Arne Fitzenreiter <arne_f@ipfire.org>");
+MODULE_DESCRIPTION("iptables application layer match module");
+MODULE_ALIAS("ipt_layer7");
-+MODULE_VERSION("2.21");
++MODULE_VERSION("2.30");
+
+static int maxdatalen = 2048; // this is the default
+module_param(maxdatalen, int, 0444);
+ struct pattern_cache * next;
+} * first_pattern_cache = NULL;
+
-+DEFINE_SPINLOCK(l7_lock);
++static struct proto_cache {
++ char * proto_string;
++ struct proto_cache * next;
++} * first_proto_cache = NULL;
+
-+static int total_acct_packets(struct nf_conn *ct)
-+{
-+ struct nf_conn_counter *acct;
-+
-+ BUG_ON(ct == NULL);
-+ acct = nf_conn_acct_find(ct);
-+ if (!acct)
-+ return 0;
-+ return (atomic64_read(&acct[IP_CT_DIR_ORIGINAL].packets) + atomic64_read(&acct[IP_CT_DIR_REPLY].packets));
-+}
++DEFINE_SPINLOCK(l7_lock);
+
+#ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
+/* Converts an unfriendly string into a friendly one by
+ return node->pattern;
+}
+
-+static int can_handle(const struct sk_buff *skb)
++static char * get_protostr_ptr(const char * protocol)
+{
-+ struct iphdr iphdr_tmp;
-+ struct iphdr *iphdr;
-+ int offset;
-+
-+ if (!ip_hdr(skb))
-+ return 0;
++ struct proto_cache * node = first_proto_cache;
++ struct proto_cache * last_proto_cache = first_proto_cache;
++ struct proto_cache * tmp;
+
-+ offset = ((uintptr_t)ip_hdr(skb)) - ((uintptr_t)skb->data);
-+
-+ iphdr = skb_header_pointer(skb, offset, sizeof(*iphdr), &iphdr_tmp);
-+ if (!iphdr)
-+ return 0;
++ while (node != NULL) {
++ if (!strcmp(node->proto_string, protocol))
++ return node->proto_string;
+
-+ if (iphdr->protocol == IPPROTO_TCP ||
-+ iphdr->protocol == IPPROTO_UDP ||
-+ iphdr->protocol == IPPROTO_ICMP)
-+ return 1;
++ last_proto_cache = node;/* points at the last non-NULL node */
++ node = node->next;
++ }
+
-+ return 0;
-+}
++ /* If we reach the end of the list, then we have not yet cached protocol
++ Be paranoid about running out of memory to avoid list corruption. */
++ tmp = kmalloc(sizeof(struct proto_cache), GFP_ATOMIC);
+
-+static int app_data_offset(const struct sk_buff *skb)
-+{
-+ int offset;
-+ struct iphdr iphdr_tmp;
-+ struct iphdr *iphdr;
-+ struct tcphdr tcphdr_tmp;
-+ struct tcphdr *tcphdr;
++ if(!tmp) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in "
++ "proto_cache add, bailing.\n");
++ return NULL;
++ }
+
-+ if (!ip_hdr(skb))
-+ return -1;
++ tmp->proto_string = kmalloc(strlen(protocol) + 1 , GFP_ATOMIC);
++ tmp->next = NULL;
+
-+ offset = ((uintptr_t)ip_hdr(skb)) - ((uintptr_t)skb->data);
++ if(!tmp->proto_string) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in "
++ "proto_cache add, bailing.\n");
++ kfree(tmp->proto_string);
++ kfree(tmp);
++ return NULL;
++ }
+
-+ iphdr = skb_header_pointer(skb, offset, sizeof(*iphdr), &iphdr_tmp);
-+ if (!iphdr)
-+ return -1;
++ /* Ok. The new node is all ready now. */
++ node = tmp;
+
-+ offset += iphdr->ihl * 4;
++ if(first_proto_cache == NULL) /* list is empty */
++ first_proto_cache = node; /* make node the beginning */
++ else
++ last_proto_cache->next = node; /* attach node to the end */
+
-+ if (iphdr->protocol == IPPROTO_TCP) {
-+ tcphdr = skb_header_pointer(skb, offset, sizeof(*tcphdr),
-+ &tcphdr_tmp);
-+ if (!tcphdr)
-+ return -1;
++ strcpy(node->proto_string, protocol);
++ return node->proto_string;
++}
+
-+ offset += tcphdr->doff * 4;
++static int can_handle(const struct sk_buff *skb)
++{
++ if(!ip_hdr(skb)) /* not IP */
++ return 0;
++ if(ip_hdr(skb)->protocol != IPPROTO_TCP &&
++ ip_hdr(skb)->protocol != IPPROTO_UDP &&
++ ip_hdr(skb)->protocol != IPPROTO_ICMP)
++ return 0;
++ return 1;
++}
+
-+ return offset;
++/* Returns offset the into the skb->data that the application data starts */
++static int app_data_offset(const struct sk_buff *skb)
++{
++ /* In case we are ported somewhere (ebtables?) where ip_hdr(skb)
++ isn't set, this can be gotten from 4*(skb->data[0] & 0x0f) as well. */
++ int ip_hl = 4*ip_hdr(skb)->ihl;
++
++ if( ip_hdr(skb)->protocol == IPPROTO_TCP ) {
++ /* 12 == offset into TCP header for the header length field.
++ Can't get this with skb->h.th->doff because the tcphdr
++ struct doesn't get set when routing (this is confirmed to be
++ true in Netfilter as well as QoS.) */
++ int tcp_hl = 4*(skb->data[ip_hl + 12] >> 4);
++
++ return ip_hl + tcp_hl;
++ } else if( ip_hdr(skb)->protocol == IPPROTO_UDP ) {
++ return ip_hl + 8; /* UDP header is always 8 bytes */
++ } else if( ip_hdr(skb)->protocol == IPPROTO_ICMP ) {
++ return ip_hl + 8; /* ICMP header is 8 bytes */
++ } else {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: tried to handle unknown "
++ "protocol!\n");
++ return ip_hl + 8; /* something reasonable */
+ }
-+
-+ if (iphdr->protocol == IPPROTO_UDP)
-+ return offset + 8;
-+
-+ if (iphdr->protocol == IPPROTO_ICMP)
-+ return offset + 8;
-+
-+ if (net_ratelimit())
-+ pr_err(KERN_ERR "layer7: tried to handle unknown protocol!\n");
-+
-+ return offset + 8; /* something reasonable */
+}
+
+/* handles whether there's a match when we aren't appending data anymore */
+ hex_print(master_conntrack->layer7.app_data);
+ DPRINTK("\nl7-filter gave up after %d bytes "
+ "(%d packets):\n%s\n",
-+ strlen(f), total_acct_packets(master_conntrack), f);
++ strlen(f), master_conntrack->layer7.packets, f);
+ kfree(f);
+ DPRINTK("In hex: %s\n", g);
+ kfree(g);
+ if(master_conntrack->layer7.app_proto){
+ /* Here child connections set their .app_proto (for /proc) */
+ if(!conntrack->layer7.app_proto) {
-+ conntrack->layer7.app_proto =
-+ kmalloc(strlen(master_conntrack->layer7.app_proto)+1,
-+ GFP_ATOMIC);
-+ if(!conntrack->layer7.app_proto){
-+ if (net_ratelimit())
-+ printk(KERN_ERR "layer7: out of memory "
-+ "in match_no_append, "
-+ "bailing.\n");
-+ return 1;
-+ }
-+ strcpy(conntrack->layer7.app_proto,
-+ master_conntrack->layer7.app_proto);
++ conntrack->layer7.app_proto = master_conntrack->layer7.app_proto;
+ }
+
+ return (!strcmp(master_conntrack->layer7.app_proto,
+ else {
+ /* If not classified, set to "unknown" to distinguish from
+ connections that are still being tested. */
-+ master_conntrack->layer7.app_proto =
-+ kmalloc(strlen("unknown")+1, GFP_ATOMIC);
-+ if(!master_conntrack->layer7.app_proto){
-+ if (net_ratelimit())
-+ printk(KERN_ERR "layer7: out of memory in "
-+ "match_no_append, bailing.\n");
-+ return 1;
-+ }
-+ strcpy(master_conntrack->layer7.app_proto, "unknown");
++ master_conntrack->layer7.app_proto = get_protostr_ptr("unknown");
+ return 0;
+ }
+}
+
+/* add the new app data to the conntrack. Return number of bytes added. */
-+static int add_datastr(char *target, int offset, char *app_data, int len)
++static int add_data(struct nf_conn * master_conntrack,
++ char * app_data, int appdatalen)
+{
+ int length = 0, i;
-+ if (!target) return 0;
++ int oldlength = master_conntrack->layer7.app_data_len;
++
++ /* This is a fix for a race condition by Deti Fliegl. However, I'm not
++ clear on whether the race condition exists or whether this really
++ fixes it. I might just be being dense... Anyway, if it's not really
++ a fix, all it does is waste a very small amount of time. */
++ if(!master_conntrack->layer7.app_data) return 0;
+
+ /* Strip nulls. Make everything lower case (our regex lib doesn't
+ do case insensitivity). Add it to the end of the current data. */
-+ for(i = 0; i < maxdatalen-offset-1 && i < len; i++) {
++ for(i = 0; i < maxdatalen-oldlength-1 &&
++ i < appdatalen; i++) {
+ if(app_data[i] != '\0') {
+ /* the kernel version of tolower mungs 'upper ascii' */
-+ target[length+offset] =
++ master_conntrack->layer7.app_data[length+oldlength] =
+ isascii(app_data[i])?
+ tolower(app_data[i]) : app_data[i];
+ length++;
+ }
+ }
-+ target[length+offset] = '\0';
-+
-+ return length;
-+}
-+
-+/* add the new app data to the buffer. Return number of bytes added. */
-+static int add_data(char *target, int offset, const struct sk_buff *skb)
-+{
-+ int length, length_sum = 0;
-+ int data_start = app_data_offset(skb);
-+ int remaining = skb->len - data_start;
-+ int to_copy;
-+ uint8_t buf[512];
-+ uint8_t *data;
-+
-+ while ((offset < maxdatalen - 1) && (remaining > 0)) {
-+ to_copy = min_t(int, remaining, sizeof(buf));
-+
-+ data = skb_header_pointer(skb, data_start, to_copy, buf);
-+ length = add_datastr(target, offset, data, to_copy);
-+
-+ remaining -= to_copy;
-+ data_start += to_copy;
-+ offset += length;
-+ length_sum += length;
-+ }
+
-+ return length_sum;
-+}
-+
-+/* add the new app data to the conntrack. Return number of bytes added. */
-+static int add_data_conntrack(struct nf_conn *master_conntrack,
-+ const struct sk_buff *skb)
-+{
-+ int length;
-+
-+ length = add_data(master_conntrack->layer7.app_data,
-+ master_conntrack->layer7.app_data_len, skb);
-+ master_conntrack->layer7.app_data_len += length;
++ master_conntrack->layer7.app_data[length+oldlength] = '\0';
++ master_conntrack->layer7.app_data_len = length + oldlength;
+
+ return length;
+}
+ return count;
+}
+
-+static bool match(const struct sk_buff *skbin, struct xt_action_param *par)
++static bool
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
++match(const struct sk_buff *skbin, struct xt_action_param *par)
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++match(const struct sk_buff *skbin, const struct xt_match_param *par)
++#else
++match(const struct sk_buff *skbin,
++ const struct net_device *in,
++ const struct net_device *out,
++ const struct xt_match *match,
++ const void *matchinfo,
++ int offset,
++ unsigned int protoff,
++ bool *hotdrop)
++#endif
+{
+ /* sidestep const without getting a compiler warning... */
-+ struct sk_buff *skb = (struct sk_buff *)skbin;
++ struct sk_buff * skb = (struct sk_buff *)skbin;
+
-+ const struct xt_layer7_info * info = par->matchinfo;
++ const struct xt_layer7_info * info =
++ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++ par->matchinfo;
++ #else
++ matchinfo;
++ #endif
+
+ enum ip_conntrack_info master_ctinfo, ctinfo;
+ struct nf_conn *master_conntrack, *conntrack;
-+ unsigned char *tmp_data;
-+ unsigned int pattern_result;
++ unsigned char * app_data;
++ unsigned int pattern_result, appdatalen;
+ regexp * comppattern;
+
+ /* Be paranoid/incompetent - lock the entire match function. */
+ spin_lock_bh(&l7_lock);
+
-+ if (!can_handle(skbin)) {
++ if(!can_handle(skb)){
+ DPRINTK("layer7: This is some protocol I can't handle.\n");
+ spin_unlock_bh(&l7_lock);
+ return info->invert;
+ /* Treat parent & all its children together as one connection, except
+ for the purpose of setting conntrack->layer7.app_proto in the actual
+ connection. This makes /proc/net/ip_conntrack more satisfying. */
-+ conntrack = nf_ct_get(skbin, &ctinfo);
-+ master_conntrack = nf_ct_get(skbin, &master_ctinfo);
-+ if (!conntrack || !master_conntrack) {
++ if(!(conntrack = nf_ct_get(skb, &ctinfo)) ||
++ !(master_conntrack=nf_ct_get(skb,&master_ctinfo))){
+ DPRINTK("layer7: couldn't get conntrack.\n");
+ spin_unlock_bh(&l7_lock);
+ return info->invert;
+ while (master_ct(master_conntrack) != NULL)
+ master_conntrack = master_ct(master_conntrack);
+
++ /* free unused conntrack data if different master conntrack exists */
++ if (master_conntrack != conntrack) {
++ if (conntrack->layer7.app_data) {
++ DPRINTK("layer7: free unused conntrack memory.\n");
++ kfree(conntrack->layer7.app_data);
++ conntrack->layer7.app_data = NULL; /* don't free again */
++ }
++ }
++
+ /* if we've classified it or seen too many packets */
-+ if(!info->pkt && (total_acct_packets(master_conntrack) > num_packets ||
-+ master_conntrack->layer7.app_proto)) {
++ if( master_conntrack->layer7.packets >= num_packets ||
++ master_conntrack->layer7.app_proto) {
+
+ pattern_result = match_no_append(conntrack, master_conntrack,
+ ctinfo, master_ctinfo, info);
+
-+ /* skb->cb[0] == seen. Don't do things twice if there are
-+ multiple l7 rules. I'm not sure that using cb for this purpose
-+ is correct, even though it says "put your private variables
-+ there". But it doesn't look like it is being used for anything
-+ else in the skbs that make it here. */
-+ skb->cb[0] = 1; /* marking it seen here's probably irrelevant */
++ skb->layer7_flags[0] = 1; /* marking it seen here's probably irrelevant */
+
+ spin_unlock_bh(&l7_lock);
+ return (pattern_result ^ info->invert);
+ }
+
-+ /* the return value gets checked later, when we're ready to use it */
-+ comppattern = compile_and_cache(info->pattern, info->protocol);
-+
-+ if (info->pkt) {
-+ tmp_data = kmalloc(maxdatalen, GFP_ATOMIC);
-+ if(!tmp_data){
++ if(skb_is_nonlinear(skb)){
++ if(skb_linearize(skb) != 0){
+ if (net_ratelimit())
-+ printk(KERN_ERR "layer7: out of memory in match, bailing.\n");
++ printk(KERN_ERR "layer7: failed to linearize "
++ "packet, bailing.\n");
++ spin_unlock_bh(&l7_lock);
+ return info->invert;
+ }
++ }
+
-+ tmp_data[0] = '\0';
-+ add_data(tmp_data, 0, skbin);
-+ pattern_result = ((comppattern && regexec(comppattern, tmp_data)) ? 1 : 0);
-+
-+ kfree(tmp_data);
-+ tmp_data = NULL;
-+ spin_unlock_bh(&l7_lock);
++ /* now that the skb is linearized, it's safe to set these. */
++ app_data = skb->data + app_data_offset(skb);
++ appdatalen = skb_tail_pointer(skb) - app_data;
+
-+ return (pattern_result ^ info->invert);
-+ }
++ /* the return value gets checked later, when we're ready to use it */
++ comppattern = compile_and_cache(info->pattern, info->protocol);
+
-+ /* On the first packet of a connection, allocate space for app data */
-+ if(total_acct_packets(master_conntrack) == 1 && !skb->cb[0] &&
++ /* allocate space for app data if not done */
++ if(master_conntrack->layer7.packets < num_packets &&
+ !master_conntrack->layer7.app_data){
+ master_conntrack->layer7.app_data =
+ kmalloc(maxdatalen, GFP_ATOMIC);
+ master_conntrack->layer7.app_data[0] = '\0';
+ }
+
-+ /* Can be here, but unallocated, if numpackets is increased near
-+ the beginning of a connection */
-+ if(master_conntrack->layer7.app_data == NULL){
-+ spin_unlock_bh(&l7_lock);
-+ return info->invert; /* unmatched */
-+ }
-+
-+ if(!skb->cb[0]){
++ if(!skb->layer7_flags[0]){
+ int newbytes;
-+ newbytes = add_data_conntrack(master_conntrack, skb);
-+
++ master_conntrack->layer7.packets++;
++ newbytes = add_data(master_conntrack, app_data, appdatalen);
+ if(newbytes == 0) { /* didn't add any data */
-+ skb->cb[0] = 1;
++ skb->layer7_flags[0] = 1;
+ /* Didn't match before, not going to match now */
+ spin_unlock_bh(&l7_lock);
+ return info->invert;
+ pattern_result = 2;
+ DPRINTK("layer7: matched unset: not yet classified "
+ "(%d/%d packets)\n",
-+ total_acct_packets(master_conntrack), num_packets);
++ master_conntrack->layer7.packets, num_packets);
+ /* If the regexp failed to compile, don't bother running it */
+ } else if(comppattern &&
+ regexec(comppattern, master_conntrack->layer7.app_data)){
+ } else pattern_result = 0;
+
+ if(pattern_result == 1) {
-+ master_conntrack->layer7.app_proto =
-+ kmalloc(strlen(info->protocol)+1, GFP_ATOMIC);
-+ if(!master_conntrack->layer7.app_proto){
-+ if (net_ratelimit())
-+ printk(KERN_ERR "layer7: out of memory in "
-+ "match, bailing.\n");
-+ spin_unlock_bh(&l7_lock);
-+ return (pattern_result ^ info->invert);
-+ }
-+ strcpy(master_conntrack->layer7.app_proto, info->protocol);
++ master_conntrack->layer7.app_proto=get_protostr_ptr(info->protocol);
+ } else if(pattern_result > 1) { /* cleanup from "unset" */
+ pattern_result = 1;
+ }
+
+ /* mark the packet seen */
-+ skb->cb[0] = 1;
++ skb->layer7_flags[0] = 1;
+
+ spin_unlock_bh(&l7_lock);
+ return (pattern_result ^ info->invert);
+}
+
+// load nf_conntrack_ipv4
-+static int check(const struct xt_mtchk_param *par)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
++static int
++#else
++static bool
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++check(const struct xt_mtchk_param *par)
+{
+ if (nf_ct_l3proto_try_module_get(par->match->family) < 0) {
+ printk(KERN_WARNING "can't load conntrack support for "
+ "proto=%d\n", par->match->family);
++#else
++check(const char *tablename, const void *inf,
++ const struct xt_match *match, void *matchinfo,
++ unsigned int hook_mask)
++{
++ if (nf_ct_l3proto_try_module_get(match->family) < 0) {
++ printk(KERN_WARNING "can't load conntrack support for "
++ "proto=%d\n", match->family);
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+ return -EINVAL;
+ }
+ return 0;
++#else
++ return 0;
++ }
++ return 1;
++#endif
+}
+
+
-+static void destroy(const struct xt_mtdtor_param *par)
-+{
-+ nf_ct_l3proto_module_put(par->match->family);
-+}
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++ static void destroy(const struct xt_mtdtor_param *par)
++ {
++ nf_ct_l3proto_module_put(par->match->family);
++ }
++#else
++ static void destroy(const struct xt_match *match, void *matchinfo)
++ {
++ nf_ct_l3proto_module_put(match->family);
++ }
++#endif
+
+static struct xt_match xt_layer7_match[] __read_mostly = {
+{
+ .name = "layer7",
-+ .family = AF_INET,
++ .family = NFPROTO_IPV4,
+ .checkentry = check,
+ .match = match,
+ .destroy = destroy,
+
+static void __exit xt_layer7_fini(void)
+{
++ struct pattern_cache * node = first_pattern_cache;
++ struct pattern_cache * next = first_pattern_cache;
++
+ remove_proc_entry("layer7_numpackets", init_net.proc_net);
+ xt_unregister_matches(xt_layer7_match, ARRAY_SIZE(xt_layer7_match));
++
++ /* Free pattern cache at module unload.
++ Important: don't free string cache because conntrack pointers are
++ still points to this strings */
++ spin_lock_bh(&l7_lock);
++ while (node != NULL) {
++ next=node->next;
++ if (node->regex_string!=NULL) kfree(node->regex_string);
++ if (node->pattern!=NULL) kfree(node->pattern);
++ kfree(node);
++ node=next;
++ }
++ spin_unlock_bh(&l7_lock);
++
+}
+
+module_init(xt_layer7_init);
+module_exit(xt_layer7_fini);
++
-diff -Naur linux-3.14.22.org/drivers/leds/trigger/Kconfig linux-3.14.22/drivers/leds/trigger/Kconfig
---- linux-3.14.22.org/drivers/leds/trigger/Kconfig 2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/drivers/leds/trigger/Kconfig 2014-11-06 17:52:02.303748375 +0100
-@@ -108,4 +108,11 @@
- This enables direct flash/torch on/off by the driver, kernel space.
+diff -Naur linux-4.9.16.org/drivers/leds/trigger/Kconfig linux-4.9.16/drivers/leds/trigger/Kconfig
+--- linux-4.9.16.org/drivers/leds/trigger/Kconfig 2017-03-18 12:15:30.000000000 +0100
++++ linux-4.9.16/drivers/leds/trigger/Kconfig 2017-03-18 16:53:42.290859631 +0100
+@@ -126,4 +126,11 @@
+ a different trigger.
If unsure, say Y.
+config LEDS_TRIGGER_NETDEV
+ If unsure, say Y.
+
endif # LEDS_TRIGGERS
-diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22/drivers/leds/trigger/ledtrig-netdev.c
---- linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/drivers/leds/trigger/ledtrig-netdev.c 2014-11-06 17:47:09.913748236 +0100
-@@ -0,0 +1,438 @@
+diff -Naur linux-4.9.16.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.16/drivers/leds/trigger/ledtrig-netdev.c
+--- linux-4.9.16.org/drivers/leds/trigger/ledtrig-netdev.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9.16/drivers/leds/trigger/ledtrig-netdev.c 2017-03-18 16:53:44.280859607 +0100
+@@ -0,0 +1,444 @@
+/*
+ * LED Kernel Netdev Trigger
+ *
+#define MODE_RX 4
+
+struct led_netdev_data {
-+ rwlock_t lock;
++ spinlock_t lock;
+
+ struct timer_list timer;
+ struct notifier_block notifier;
+
+ if ((trigger_data->mode & (MODE_TX | MODE_RX)) != 0 && trigger_data->link_up)
+ mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
-+ else
-+ del_timer(&trigger_data->timer);
+}
+
+static ssize_t led_device_name_show(struct device *dev,
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+
-+ read_lock(&trigger_data->lock);
++ spin_lock_bh(&trigger_data->lock);
+ sprintf(buf, "%s\n", trigger_data->device_name);
-+ read_unlock(&trigger_data->lock);
++ spin_unlock_bh(&trigger_data->lock);
+
+ return strlen(buf) + 1;
+}
+ if (size < 0 || size >= IFNAMSIZ)
+ return -EINVAL;
+
-+ write_lock(&trigger_data->lock);
++ spin_lock_bh(&trigger_data->lock);
++ del_timer_sync(&trigger_data->timer);
+
+ strcpy(trigger_data->device_name, buf);
+ if (size > 0 && trigger_data->device_name[size-1] == '\n')
+ trigger_data->device_name[size-1] = 0;
++ trigger_data->link_up = 0;
++ trigger_data->last_activity = 0;
+
+ if (trigger_data->device_name[0] != 0) {
+ /* check for existing device to update from */
+ trigger_data->net_dev = dev_get_by_name(&init_net, trigger_data->device_name);
+ if (trigger_data->net_dev != NULL)
+ trigger_data->link_up = (dev_get_flags(trigger_data->net_dev) & IFF_LOWER_UP) != 0;
-+ set_baseline_state(trigger_data); /* updates LEDs, may start timers */
+ }
+
-+ write_unlock(&trigger_data->lock);
++ set_baseline_state(trigger_data);
++ spin_unlock_bh(&trigger_data->lock);
++
+ return size;
+}
+
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+
-+ read_lock(&trigger_data->lock);
++ spin_lock_bh(&trigger_data->lock);
+
+ if (trigger_data->mode == 0) {
+ strcpy(buf, "none\n");
+ strcat(buf, "\n");
+ }
+
-+ read_unlock(&trigger_data->lock);
++ spin_unlock_bh(&trigger_data->lock);
+
+ return strlen(buf)+1;
+}
+ if (new_mode == -1)
+ return -EINVAL;
+
-+ write_lock(&trigger_data->lock);
++ spin_lock_bh(&trigger_data->lock);
++ del_timer_sync(&trigger_data->timer);
++
+ trigger_data->mode = new_mode;
++
+ set_baseline_state(trigger_data);
-+ write_unlock(&trigger_data->lock);
++ spin_unlock_bh(&trigger_data->lock);
+
+ return size;
+}
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+
-+ read_lock(&trigger_data->lock);
++ spin_lock_bh(&trigger_data->lock);
+ sprintf(buf, "%u\n", jiffies_to_msecs(trigger_data->interval));
-+ read_unlock(&trigger_data->lock);
++ spin_unlock_bh(&trigger_data->lock);
+
+ return strlen(buf) + 1;
+}
+
+ /* impose some basic bounds on the timer interval */
+ if (count == size && value >= 5 && value <= 10000) {
-+ write_lock(&trigger_data->lock);
++ spin_lock_bh(&trigger_data->lock);
++ del_timer_sync(&trigger_data->timer);
++
+ trigger_data->interval = msecs_to_jiffies(value);
++
+ set_baseline_state(trigger_data); /* resets timer */
-+ write_unlock(&trigger_data->lock);
++ spin_unlock_bh(&trigger_data->lock);
++
+ ret = count;
+ }
+
+ struct net_device *dev = netdev_notifier_info_to_dev((struct netdev_notifier_info *) dv);
+ struct led_netdev_data *trigger_data = container_of(nb, struct led_netdev_data, notifier);
+
-+ if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER)
++ if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER && evt != NETDEV_CHANGENAME)
+ return NOTIFY_DONE;
+
-+ write_lock(&trigger_data->lock);
++ spin_lock_bh(&trigger_data->lock);
+
+ if (strcmp(dev->name, trigger_data->device_name))
+ goto done;
+
-+ if (evt == NETDEV_REGISTER) {
++ del_timer_sync(&trigger_data->timer);
++
++ if (evt == NETDEV_REGISTER || evt == NETDEV_CHANGENAME) {
+ if (trigger_data->net_dev != NULL)
+ dev_put(trigger_data->net_dev);
++
+ dev_hold(dev);
+ trigger_data->net_dev = dev;
+ trigger_data->link_up = 0;
+ set_baseline_state(trigger_data);
+
+done:
-+ write_unlock(&trigger_data->lock);
++ spin_unlock_bh(&trigger_data->lock);
+ return NOTIFY_DONE;
+}
+
+ unsigned new_activity;
+ struct rtnl_link_stats64 temp;
+
-+ write_lock(&trigger_data->lock);
-+
+ if (!trigger_data->link_up || !trigger_data->net_dev || (trigger_data->mode & (MODE_TX | MODE_RX)) == 0) {
+ /* we don't need to do timer work, just reflect link state. */
+ led_set_brightness(trigger_data->led_cdev, ((trigger_data->mode & MODE_LINK) != 0 && trigger_data->link_up) ? LED_FULL : LED_OFF);
-+ goto no_restart;
++ return;
+ }
+
+ dev_stats = dev_get_stats(trigger_data->net_dev, &temp);
+
+ trigger_data->last_activity = new_activity;
+ mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
-+
-+no_restart:
-+ write_unlock(&trigger_data->lock);
+}
+
+static void netdev_trig_activate(struct led_classdev *led_cdev)
+ if (!trigger_data)
+ return;
+
-+ rwlock_init(&trigger_data->lock);
++ spin_lock_init(&trigger_data->lock);
+
+ trigger_data->notifier.notifier_call = netdev_trig_notify;
+ trigger_data->notifier.priority = 10;
+ device_remove_file(led_cdev->dev, &dev_attr_mode);
+ device_remove_file(led_cdev->dev, &dev_attr_interval);
+
-+ write_lock(&trigger_data->lock);
++ spin_lock_bh(&trigger_data->lock);
++ del_timer_sync(&trigger_data->timer);
+
+ if (trigger_data->net_dev) {
+ dev_put(trigger_data->net_dev);
+ trigger_data->net_dev = NULL;
+ }
+
-+ write_unlock(&trigger_data->lock);
-+
-+ del_timer_sync(&trigger_data->timer);
++ spin_unlock_bh(&trigger_data->lock);
+
+ kfree(trigger_data);
+ }
+MODULE_AUTHOR("Oliver Jowett <oliver@opencloud.com>");
+MODULE_DESCRIPTION("Netdev LED trigger");
+MODULE_LICENSE("GPL");
-diff -Naur linux-3.14.22.org/drivers/leds/trigger/Makefile linux-3.14.22/drivers/leds/trigger/Makefile
---- linux-3.14.22.org/drivers/leds/trigger/Makefile 2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/drivers/leds/trigger/Makefile 2014-11-06 17:51:29.818748360 +0100
-@@ -8,3 +8,4 @@
- obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
+diff -Naur linux-4.9.16.org/drivers/leds/trigger/Makefile linux-4.9.16/drivers/leds/trigger/Makefile
+--- linux-4.9.16.org/drivers/leds/trigger/Makefile 2017-03-18 12:15:30.000000000 +0100
++++ linux-4.9.16/drivers/leds/trigger/Makefile 2017-03-18 16:53:44.280859607 +0100
+@@ -10,3 +10,4 @@
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o
+ obj-$(CONFIG_LEDS_TRIGGER_PANIC) += ledtrig-panic.o
+obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
--- /dev/null
+diff -Naur linux-4.9.17.org/drivers/net/ethernet/intel/e1000e/netdev.c linux-4.9.17/drivers/net/ethernet/intel/e1000e/netdev.c
+--- linux-4.9.17.org/drivers/net/ethernet/intel/e1000e/netdev.c 2017-03-22 12:44:07.000000000 +0100
++++ linux-4.9.17/drivers/net/ethernet/intel/e1000e/netdev.c 2017-03-26 16:20:47.253511522 +0200
+@@ -5924,10 +5924,14 @@
+ struct rtnl_link_stats64 *stats)
+ {
+ struct e1000_adapter *adapter = netdev_priv(netdev);
++ int has_lock = 0;
+
+ memset(stats, 0, sizeof(struct rtnl_link_stats64));
+- spin_lock(&adapter->stats64_lock);
+- e1000e_update_stats(adapter);
++ if (spin_trylock(&adapter->stats64_lock)) {
++ e1000e_update_stats(adapter);
++ has_lock = 1;
++ }
++
+ /* Fill out the OS statistics structure */
+ stats->rx_bytes = adapter->stats.gorc;
+ stats->rx_packets = adapter->stats.gprc;
+@@ -5957,7 +5961,7 @@
+
+ /* Tx Dropped needs to be maintained elsewhere */
+
+- spin_unlock(&adapter->stats64_lock);
++ if (has_lock) spin_unlock(&adapter->stats64_lock);
+ return stats;
+ }
+
+diff -Naur linux-4.9.17.org/drivers/net/ethernet/intel/igb/igb_main.c linux-4.9.17/drivers/net/ethernet/intel/igb/igb_main.c
+--- linux-4.9.17.org/drivers/net/ethernet/intel/igb/igb_main.c 2017-03-22 12:44:07.000000000 +0100
++++ linux-4.9.17/drivers/net/ethernet/intel/igb/igb_main.c 2017-03-26 16:02:46.820093793 +0200
+@@ -5391,10 +5391,11 @@
+ {
+ struct igb_adapter *adapter = netdev_priv(netdev);
+
+- spin_lock(&adapter->stats64_lock);
+- igb_update_stats(adapter, &adapter->stats64);
++ if (spin_trylock(&adapter->stats64_lock)) {
++ igb_update_stats(adapter, &adapter->stats64);
++ spin_unlock(&adapter->stats64_lock);
++ }
+ memcpy(stats, &adapter->stats64, sizeof(*stats));
+- spin_unlock(&adapter->stats64_lock);
+
+ return stats;
+ }
-diff -Naur linux-3.14.65.org/arch/x86/Kconfig linux-3.14.65/arch/x86/Kconfig
---- linux-3.14.65.org/arch/x86/Kconfig 2016-03-16 16:42:30.000000000 +0100
-+++ linux-3.14.65/arch/x86/Kconfig 2016-03-25 14:36:22.953256019 +0100
-@@ -2287,6 +2287,7 @@
+diff -Naur linux-4.9.8.org/arch/x86/Kconfig linux-4.9.8/arch/x86/Kconfig
+--- linux-4.9.8.org/arch/x86/Kconfig 2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/arch/x86/Kconfig 2017-02-09 19:29:59.244945360 +0100
+@@ -2604,6 +2604,7 @@
- AC adapter status updates
- Battery status updates
config ALIX
bool "PCEngines ALIX System Support (LED setup)"
select GPIOLIB
-@@ -2325,6 +2326,18 @@
+@@ -2642,6 +2643,18 @@
endif # X86_32
config AMD_NB
def_bool y
depends on CPU_SUP_AMD && PCI
-diff -Naur linux-3.14.65.org/arch/x86/platform/apu/apu2-led.c linux-3.14.65/arch/x86/platform/apu/apu2-led.c
---- linux-3.14.65.org/arch/x86/platform/apu/apu2-led.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.65/arch/x86/platform/apu/apu2-led.c 2016-03-25 15:04:34.476689422 +0100
+diff -Naur linux-4.9.8.org/arch/x86/platform/apu/apu2-led.c linux-4.9.8/arch/x86/platform/apu/apu2-led.c
+--- linux-4.9.8.org/arch/x86/platform/apu/apu2-led.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9.8/arch/x86/platform/apu/apu2-led.c 2017-02-09 19:29:59.244945360 +0100
@@ -0,0 +1,180 @@
+/*
+ * LEDs driver for PCEngines apu2
+MODULE_AUTHOR("Arne Fitzenreiter");
+MODULE_DESCRIPTION("PCEngines apu2 LED driver");
+MODULE_LICENSE("GPL");
-diff -Naur linux-3.14.65.org/arch/x86/platform/apu/apu-led.c linux-3.14.65/arch/x86/platform/apu/apu-led.c
---- linux-3.14.65.org/arch/x86/platform/apu/apu-led.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.65/arch/x86/platform/apu/apu-led.c 2016-03-25 15:05:35.776693425 +0100
+diff -Naur linux-4.9.8.org/arch/x86/platform/apu/apu-led.c linux-4.9.8/arch/x86/platform/apu/apu-led.c
+--- linux-4.9.8.org/arch/x86/platform/apu/apu-led.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9.8/arch/x86/platform/apu/apu-led.c 2017-02-09 19:29:59.244945360 +0100
@@ -0,0 +1,181 @@
+/*
+ * LEDs driver for PCEngines apu
+MODULE_AUTHOR("Christian Herzog");
+MODULE_DESCRIPTION("PCEngines apu LED driver");
+MODULE_LICENSE("GPL");
-diff -Naur linux-3.14.65.org/arch/x86/platform/apu/Makefile linux-3.14.65/arch/x86/platform/apu/Makefile
---- linux-3.14.65.org/arch/x86/platform/apu/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.65/arch/x86/platform/apu/Makefile 2016-03-25 14:35:30.506585952 +0100
+diff -Naur linux-4.9.8.org/arch/x86/platform/apu/Makefile linux-4.9.8/arch/x86/platform/apu/Makefile
+--- linux-4.9.8.org/arch/x86/platform/apu/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9.8/arch/x86/platform/apu/Makefile 2017-02-09 19:29:59.244945360 +0100
@@ -0,0 +1,2 @@
+obj-$(CONFIG_APULED) += apu-led.o
+obj-$(CONFIG_APU2LED) += apu2-led.o
-diff -Naur linux-3.14.65.org/arch/x86/platform/Makefile linux-3.14.65/arch/x86/platform/Makefile
---- linux-3.14.65.org/arch/x86/platform/Makefile 2016-03-16 16:42:30.000000000 +0100
-+++ linux-3.14.65/arch/x86/platform/Makefile 2016-03-25 14:31:04.079903947 +0100
+diff -Naur linux-4.9.8.org/arch/x86/platform/Makefile linux-4.9.8/arch/x86/platform/Makefile
+--- linux-4.9.8.org/arch/x86/platform/Makefile 2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/arch/x86/platform/Makefile 2017-02-09 19:32:31.768269470 +0100
@@ -1,4 +1,5 @@
# Platform specific code goes here
+obj-y += apu/
+ obj-y += atom/
obj-y += ce4100/
obj-y += efi/
- obj-y += geode/
--- /dev/null
+diff -Naur linux-4.9.8.org/drivers/net/wireless/ath/regd.c linux-4.9.8/drivers/net/wireless/ath/regd.c
+--- linux-4.9.8.org/drivers/net/wireless/ath/regd.c 2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/drivers/net/wireless/ath/regd.c 2017-02-11 15:31:20.502527360 +0100
+@@ -341,6 +341,8 @@
+ struct ieee80211_channel *ch;
+ unsigned int i;
+
++ return;
++
+ for (band = 0; band < NUM_NL80211_BANDS; band++) {
+ if (!wiphy->bands[band])
+ continue;
+@@ -374,6 +376,8 @@
+ {
+ struct ieee80211_supported_band *sband;
+
++ return;
++
+ sband = wiphy->bands[NL80211_BAND_2GHZ];
+ if (!sband)
+ return;
+@@ -402,6 +406,8 @@
+ struct ieee80211_channel *ch;
+ unsigned int i;
+
++ return;
++
+ if (!wiphy->bands[NL80211_BAND_5GHZ])
+ return;
+
+@@ -632,6 +638,8 @@
+ {
+ const struct ieee80211_regdomain *regd;
+
++ return 0;
++
+ wiphy->reg_notifier = reg_notifier;
+ wiphy->regulatory_flags |= REGULATORY_STRICT_REG |
+ REGULATORY_CUSTOM_REG;
-diff -Naur linux-3.14.22.org/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c linux-3.14.22/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c
---- linux-3.14.22.org/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c 2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c 2014-10-24 17:33:57.165155190 +0200
-@@ -613,14 +613,15 @@
+diff -Naur linux-4.9.8.org/drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c linux-4.9.8/drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c
+--- linux-4.9.8.org/drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c 2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c 2017-02-11 10:35:20.216560908 +0100
+@@ -615,14 +615,15 @@
/* set no-HT40, will enable as appropriate later */
channel->flags = IEEE80211_CHAN_NO_HT40;
--- /dev/null
+diff -Naur linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2800usb.c linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
+--- linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2800usb.c 2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2800usb.c 2017-02-11 10:50:04.909859370 +0100
+@@ -448,7 +448,7 @@
+
+ rt2x00usb_register_read(rt2x00dev, TXRXQ_PCNT, ®);
+ if (rt2x00_get_field32(reg, TXRXQ_PCNT_TX0Q)) {
+- rt2x00_warn(rt2x00dev, "TX HW queue 0 timed out, invoke forced kick\n");
++ rt2x00_dbg(rt2x00dev, "TX HW queue 0 timed out, invoke forced kick\n");
+
+ rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf40012);
+
+@@ -463,7 +463,7 @@
+
+ rt2x00usb_register_read(rt2x00dev, TXRXQ_PCNT, ®);
+ if (rt2x00_get_field32(reg, TXRXQ_PCNT_TX1Q)) {
+- rt2x00_warn(rt2x00dev, "TX HW queue 1 timed out, invoke forced kick\n");
++ rt2x00_dbg(rt2x00dev, "TX HW queue 1 timed out, invoke forced kick\n");
+
+ rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf4000a);
+
+@@ -613,7 +613,7 @@
+
+ if (unlikely(test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
+ !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))) {
+- rt2x00_warn(rt2x00dev, "Data pending for entry %u in queue %u\n",
++ rt2x00_dbg(rt2x00dev, "Data pending for entry %u in queue %u\n",
+ entry->entry_idx, qid);
+ break;
+ }
+diff -Naur linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
+--- linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c 2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c 2017-02-11 10:50:04.909859370 +0100
+@@ -524,7 +524,7 @@
+
+ static void rt2x00usb_watchdog_tx_dma(struct data_queue *queue)
+ {
+- rt2x00_warn(queue->rt2x00dev, "TX queue %d DMA timed out, invoke forced forced reset\n",
++ rt2x00_dbg(queue->rt2x00dev, "TX queue %d DMA timed out, invoke forced reset\n",
+ queue->qid);
+
+ rt2x00queue_stop_queue(queue);
--- /dev/null
+diff -Naur linux-4.9.8.org/sound/pci/cs5535audio/cs5535audio.c linux-4.9.8/sound/pci/cs5535audio/cs5535audio.c
+--- linux-4.9.8.org/sound/pci/cs5535audio/cs5535audio.c 2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/sound/pci/cs5535audio/cs5535audio.c 2017-02-09 19:24:55.658297050 +0100
+@@ -83,9 +83,9 @@
+ break;
+ udelay(1);
+ } while (--timeout);
+- if (!timeout)
+- dev_err(cs5535au->card->dev,
+- "Failure writing to cs5535 codec\n");
++// if (!timeout)
++// dev_err(cs5535au->card->dev,
++// "Failure writing to cs5535 codec\n");
+ }
+
+ static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au,
+@@ -109,10 +109,10 @@
+ break;
+ udelay(1);
+ } while (--timeout);
+- if (!timeout)
+- dev_err(cs5535au->card->dev,
+- "Failure reading codec reg 0x%x, Last value=0x%x\n",
+- reg, val);
++// if (!timeout)
++// dev_err(cs5535au->card->dev,
++// "Failure reading codec reg 0x%x, Last value=0x%x\n",
++// reg, val);
+
+ return (unsigned short) val;
+ }
--- /dev/null
+diff -Naur net-tools-1.60.org/iptunnel.c net-tools-1.60/iptunnel.c
+--- net-tools-1.60.org/iptunnel.c 2001-04-08 19:04:23.000000000 +0200
++++ net-tools-1.60/iptunnel.c 2017-02-07 17:37:17.956405434 +0100
+@@ -26,7 +26,7 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <netinet/in.h>
+-#include <netinet/ip.h>
++#include <linux/ip.h>
+ #include <arpa/inet.h>
+ #if defined(__GLIBC__) && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1))
+ #include <net/if.h>
--- /dev/null
+diff -Naur postfix-2.10.0.org/makedefs postfix-2.10.0/makedefs
+--- postfix-2.10.0.org/makedefs 2013-02-04 02:33:13.000000000 +0100
++++ postfix-2.10.0/makedefs 2017-02-08 10:10:56.713314716 +0100
+@@ -347,7 +347,7 @@
+ fi;;
+ esac
+ ;;
+- Linux.3*) SYSTYPE=LINUX3
++ Linux.[34]*) SYSTYPE=LINUX3
+ case "$CCARGS" in
+ *-DNO_DB*) ;;
+ *) if [ -f /usr/include/db.h ]
--- /dev/null
+diff -Naur ppp-2.4.7.org/pppd/plugins/rp-pppoe/plugin.c ppp-2.4.7/pppd/plugins/rp-pppoe/plugin.c
+--- ppp-2.4.7.org/pppd/plugins/rp-pppoe/plugin.c 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7/pppd/plugins/rp-pppoe/plugin.c 2017-02-09 08:45:12.567493723 +0100
+@@ -49,6 +49,8 @@
+ #include <net/ethernet.h>
+ #include <net/if_arp.h>
+ #include <linux/ppp_defs.h>
++#define _LINUX_IN_H
++#define _LINUX_IN6_H
+ #include <linux/if_pppox.h>
+
+ #ifndef _ROOT_PATH
--- /dev/null
+diff -Naur systemd-208.org/src/udev/mtd_probe/mtd_probe.h systemd-208/src/udev/mtd_probe/mtd_probe.h
+--- systemd-208.org/src/udev/mtd_probe/mtd_probe.h 2013-08-13 22:02:47.000000000 +0200
++++ systemd-208/src/udev/mtd_probe/mtd_probe.h 2017-02-07 18:08:33.492985563 +0100
+@@ -18,6 +18,7 @@
+ */
+
+ #include <mtd/mtd-user.h>
++#include <stdint.h>
+
+ /* Full oob structure as written on the flash */
+ struct sm_oob {