Merge sdk-v37.4.2.89
diff --git a/arch/arc/Makefile b/arch/arc/Makefile
index ce84396..ab521e6 100644
--- a/arch/arc/Makefile
+++ b/arch/arc/Makefile
@@ -48,7 +48,6 @@
 LINUXINCLUDE	+=  -include ${src}/arch/arc/include/asm/current.h -I$(srctree)/arch/arc/plat-qtn/sdk-qsr1000/ -I$(srctree)/arch/arc/plat-qtn/sdk-qsr1000/include/
 LINUXINCLUDE	+=  -include $(src)/arch/arc/plat-qtn/sdk-qsr1000/common/ruby_mem.h
 LINUXINCLUDE	+=  -include $(src)/arch/arc/plat-qtn/sdk-qsr1000/common/current_platform.h -include $(src)/arch/arc/plat-qtn/sdk-qsr1000/common/common_mem.h
-LINUXINCLUDE	+=  -include ${src}/arch/arc/include/asm/current.h
 endif
 
 upto_gcc44    :=  $(call cc-ifversion, -le, 0404, y)
diff --git a/arch/arc/boot/dts/topaz.dts b/arch/arc/boot/dts/topaz.dts
index dee273d..aba5d1f 100644
--- a/arch/arc/boot/dts/topaz.dts
+++ b/arch/arc/boot/dts/topaz.dts
@@ -16,8 +16,7 @@
 	interrupt-parent = <&core_intc>;
 
 	chosen {
-		bootargs = "earlyprintk=1 debug console=ttyS0,115200n8 print-fatal-signals=1";
-/*		bootargs = "earlycon debug console=ttyS0,115200n8";*/
+		bootargs = "earlycon debug console=ttyS0,115200n8";
 		stdout-path = &uart0;
 	};
 	memory {
@@ -40,7 +39,6 @@
 		#interrupt-cells = <1>;
 	};
 	uart0: dw-apb-uart {
-/*		compatible = "snps,dw-apb-uart", "ns16550";*/
 		compatible = "snps,dw-apb-uart", "ns16550a";
 		reg = <0xF0000000 0x100>;
 		clock-frequency = <125000000>;
@@ -50,23 +48,4 @@
 		reg-shift = <2>;
 		reg-io-width = <4>;
 	};
-/*	pcie: pcie@e9000000 {*/
-/*		compatible = "snps,dw-pcie";*/
-/*		reg = <0xe9000000 0x2000>,*/
-		/* Controller registers */
-/*		     <0xcf000000 0x10000>;*/
-		/* PCI config space */
-/*		reg-names = "ctrlreg", "config";*/
-/*		device_type = "pci";*/
-/*		num-lanes = <1>;*/
-/*		interrupt-parent = <&core_intc>;*/
-/*		interrupts = <28>, <18>;*/
-/*		#address-cells = <3>;*/
-/*		#size-cells = <2>;*/
-/*		ranges = <0x82000000 0 0xc0000000 0xc0000000 0 0x01000000*/
-/*		          0x83000000 0 0xc1000000 0xc1000000 0 0x01000000>;*/
-/*		#interrupt-cells = <1>;*/
-/*		interrupt-map-mask = <0x0 0 0 1>;*/
-/*		interrupt-map = <0x0 0 0 1 &core_intc 28>;*/
-/*	};*/
 };
diff --git a/arch/arc/configs/topaz_config b/arch/arc/configs/topaz_config
index 3d5c929..a5e6884 100644
--- a/arch/arc/configs/topaz_config
+++ b/arch/arc/configs/topaz_config
@@ -18,7 +18,6 @@
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_IRQ_WORK=y
-CONFIG_QTN_PLATFORM_MISALIGN_WAR=y
 CONFIG_BUILDTIME_EXTABLE_SORT=y
 
 #
@@ -26,17 +25,17 @@
 #
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE="/usr/local/arcgcc48/bin/arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="/usr/local/arcgcc48_linux4.7.0/bin/arc-linux-uclibc-"
 # CONFIG_COMPILE_TEST is not set
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_DEFAULT_HOSTNAME="ARCLinux"
+CONFIG_DEFAULT_HOSTNAME="Topaz"
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_CROSS_MEMORY_ATTACH is not set
-# CONFIG_FHANDLE is not set
+CONFIG_FHANDLE=y
 # CONFIG_USELIB is not set
 # CONFIG_AUDIT is not set
 
@@ -48,6 +47,7 @@
 CONFIG_IRQ_DOMAIN=y
 CONFIG_GENERIC_MSI_IRQ=y
 CONFIG_HANDLE_DOMAIN_IRQ=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_GENERIC_CLOCKEVENTS=y
 
 #
@@ -112,7 +112,7 @@
 CONFIG_EXPERT=y
 CONFIG_MULTIUSER=y
 # CONFIG_SGETMASK_SYSCALL is not set
-# CONFIG_SYSFS_SYSCALL is not set
+CONFIG_SYSFS_SYSCALL=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
@@ -133,8 +133,8 @@
 CONFIG_AIO=y
 # CONFIG_ADVISE_SYSCALLS is not set
 # CONFIG_USERFAULTFD is not set
-# CONFIG_PCI_QUIRKS is not set
-# CONFIG_MEMBARRIER is not set
+CONFIG_PCI_QUIRKS=y
+CONFIG_MEMBARRIER=y
 CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 CONFIG_PERF_USE_VMALLOC=y
@@ -143,7 +143,7 @@
 # Kernel Performance Events And Counters
 #
 # CONFIG_PERF_EVENTS is not set
-CONFIG_VM_EVENT_COUNTERS=y
+# CONFIG_VM_EVENT_COUNTERS is not set
 # CONFIG_SLUB_DEBUG is not set
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_SLAB is not set
@@ -152,10 +152,9 @@
 # CONFIG_SYSTEM_DATA_VERIFICATION is not set
 # CONFIG_PROFILING is not set
 CONFIG_HAVE_OPROFILE=y
-CONFIG_KPROBES=y
+# CONFIG_KPROBES is not set
 # CONFIG_UPROBES is not set
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
-CONFIG_KRETPROBES=y
 CONFIG_HAVE_IOREMAP_PROT=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
@@ -174,6 +173,7 @@
 #
 # GCOV-based kernel profiling
 #
+# CONFIG_GCOV_KERNEL is not set
 # CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_RT_MUTEXES=y
@@ -205,10 +205,12 @@
 # IO Schedulers
 #
 CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_NOOP=y
-CONFIG_DEFAULT_IOSCHED="noop"
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
@@ -247,7 +249,7 @@
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
 # CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
 # CONFIG_SWITCH_RTL8365MB is not set
-CONFIG_SWITCH_RTL8363SB=m
+# CONFIG_SWITCH_RTL8363SB is not set
 # CONFIG_QTN_SKB_RECYCLE is not set
 
 #
@@ -287,7 +289,7 @@
 # CONFIG_HIGHMEM is not set
 # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
 CONFIG_ARC_PLAT_NEEDS_PHYS_TO_DMA=y
-CONFIG_ARC_KVADDR_SIZE=64
+CONFIG_ARC_KVADDR_SIZE=160
 CONFIG_ARC_CURR_IN_REG=y
 CONFIG_ARC_EMUL_UNALIGNED=y
 CONFIG_HZ=200
@@ -331,6 +333,7 @@
 # CONFIG_IDLE_PAGE_TRACKING is not set
 CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_NET=y
+CONFIG_NET_INGRESS=y
 
 #
 # Networking options
@@ -340,20 +343,26 @@
 CONFIG_UNIX=y
 CONFIG_UNIX_DIAG=y
 CONFIG_XFRM=y
-CONFIG_XFRM_ALGO=y
 # CONFIG_XFRM_USER is not set
 # CONFIG_XFRM_SUB_POLICY is not set
 # CONFIG_XFRM_MIGRATE is not set
 # CONFIG_XFRM_STATISTICS is not set
-CONFIG_NET_KEY=y
-# CONFIG_NET_KEY_MIGRATE is not set
+# CONFIG_NET_KEY is not set
 CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+# CONFIG_IP_FIB_TRIE_STATS is not set
+# CONFIG_IP_MULTIPLE_TABLES is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
 # CONFIG_IP_PNP is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE_DEMUX is not set
 CONFIG_NET_IP_TUNNEL=y
+CONFIG_IP_MROUTE=y
+# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
+# CONFIG_IP_PIMSM_V1 is not set
+# CONFIG_IP_PIMSM_V2 is not set
 # CONFIG_SYN_COOKIES is not set
 # CONFIG_NET_IPVTI is not set
 # CONFIG_NET_UDP_TUNNEL is not set
@@ -382,6 +391,7 @@
 # CONFIG_INET6_ESP is not set
 # CONFIG_INET6_IPCOMP is not set
 # CONFIG_IPV6_MIP6 is not set
+# CONFIG_IPV6_ILA is not set
 # CONFIG_INET6_XFRM_TUNNEL is not set
 # CONFIG_INET6_TUNNEL is not set
 CONFIG_INET6_XFRM_MODE_TRANSPORT=y
@@ -400,7 +410,193 @@
 # CONFIG_NETWORK_SECMARK is not set
 # CONFIG_NET_PTP_CLASSIFY is not set
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+# CONFIG_BRIDGE_NETFILTER is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_INGRESS=y
+# CONFIG_NETFILTER_NETLINK_ACCT is not set
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_LOG_COMMON=m
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+# CONFIG_NF_CONNTRACK_TIMEOUT is not set
+# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
+# CONFIG_NF_CT_PROTO_DCCP is not set
+CONFIG_NF_CT_PROTO_GRE=m
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_SNMP is not set
+CONFIG_NF_CONNTRACK_PPTP=m
+# CONFIG_NF_CONNTRACK_SANE is not set
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+# CONFIG_NF_CT_NETLINK is not set
+# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+# CONFIG_NF_NAT_AMANDA is not set
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
+# CONFIG_NF_TABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+
+#
+# Xtables combined modules
+#
+# CONFIG_NETFILTER_XT_MARK is not set
+CONFIG_NETFILTER_XT_CONNMARK=m
+
+#
+# Xtables targets
+#
+# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_HL is not set
+# CONFIG_NETFILTER_XT_TARGET_HMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+CONFIG_NETFILTER_XT_NAT=m
+# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
+# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set
+# CONFIG_NETFILTER_XT_TARGET_TEE is not set
+# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
+
+#
+# Xtables matches
+#
+# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_BPF is not set
+# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+# CONFIG_NETFILTER_XT_MATCH_CPU is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ECN is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+# CONFIG_NETFILTER_XT_MATCH_HL is not set
+# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
+# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
+# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
+# CONFIG_NETFILTER_XT_MATCH_STATE is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_IP_SET is not set
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_NF_DUP_IPV4 is not set
+# CONFIG_NF_LOG_ARP is not set
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_IP_NF_IPTABLES=m
+# CONFIG_IP_NF_MATCH_AH is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_RPFILTER is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+# CONFIG_IP_NF_TARGET_SYNPROXY is not set
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+# CONFIG_IP_NF_TARGET_NETMAP is not set
+# CONFIG_IP_NF_TARGET_REDIRECT is not set
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV6=m
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_NF_DUP_IPV6 is not set
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_RPFILTER is not set
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_TARGET_HL is not set
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+# CONFIG_IP6_NF_TARGET_SYNPROXY is not set
+CONFIG_IP6_NF_MANGLE=m
+# CONFIG_IP6_NF_RAW is not set
+CONFIG_IP6_NF_NAT=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+# CONFIG_IP6_NF_TARGET_NPT is not set
+# CONFIG_BRIDGE_NF_EBTABLES is not set
 # CONFIG_IP_DCCP is not set
 # CONFIG_IP_SCTP is not set
 # CONFIG_RDS is not set
@@ -412,6 +608,7 @@
 CONFIG_BRIDGE_IGMP_SNOOPING=y
 # CONFIG_BRIDGE_VLAN_FILTERING is not set
 CONFIG_HAVE_NET_DSA=y
+CONFIG_NET_DSA=y
 CONFIG_VLAN_8021Q=y
 # CONFIG_VLAN_8021Q_GVRP is not set
 # CONFIG_VLAN_8021Q_MVRP is not set
@@ -477,8 +674,8 @@
 # CONFIG_NETLINK_DIAG is not set
 # CONFIG_MPLS is not set
 # CONFIG_HSR is not set
-# CONFIG_NET_SWITCHDEV is not set
-# CONFIG_NET_L3_MASTER_DEV is not set
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_L3_MASTER_DEV=y
 # CONFIG_SOCK_CGROUP_DATA is not set
 CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
@@ -487,7 +684,6 @@
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
-# CONFIG_NET_TCPPROBE is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_CAN is not set
 # CONFIG_IRDA is not set
@@ -499,12 +695,19 @@
 CONFIG_WEXT_CORE=y
 CONFIG_WEXT_PROC=y
 CONFIG_WEXT_PRIV=y
-# CONFIG_CFG80211 is not set
+CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+CONFIG_CFG80211_DEVELOPER_WARNINGS=y
+CONFIG_CFG80211_CERTIFICATION_ONUS=y
+# CONFIG_CFG80211_REG_CELLULAR_HINTS is not set
+# CONFIG_CFG80211_REG_RELAX_NO_IR is not set
+# CONFIG_CFG80211_DEFAULT_PS is not set
+CONFIG_CFG80211_DEBUGFS=y
+CONFIG_CFG80211_INTERNAL_REGDB=y
+CONFIG_CFG80211_CRDA_SUPPORT=y
+CONFIG_CFG80211_WEXT=y
 # CONFIG_LIB80211 is not set
-
-#
-# CFG80211 needs to be enabled for MAC80211
-#
+# CONFIG_MAC80211 is not set
 CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
 # CONFIG_WIMAX is not set
 # CONFIG_RFKILL is not set
@@ -525,17 +728,18 @@
 # Generic Driver Options
 #
 CONFIG_UEVENT_HELPER=y
-CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_DEVTMPFS=y
-# CONFIG_DEVTMPFS_MOUNT is not set
+CONFIG_DEVTMPFS_MOUNT=y
 # CONFIG_STANDALONE is not set
 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
 CONFIG_FW_LOADER=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_ALLOW_DEV_COREDUMP is not set
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+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_SYS_HYPERVISOR is not set
@@ -582,7 +786,7 @@
 CONFIG_MTD_CFI_I2=y
 # CONFIG_MTD_CFI_I4 is not set
 # CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_RAM=y
+# CONFIG_MTD_RAM is not set
 # CONFIG_MTD_ROM is not set
 # CONFIG_MTD_ABSENT is not set
 
@@ -590,7 +794,6 @@
 # Mapping drivers for chip access
 #
 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP_OF=y
 # CONFIG_MTD_INTEL_VR_NOR is not set
 # CONFIG_MTD_PLATRAM is not set
 
@@ -767,60 +970,117 @@
 #
 # Distributed Switch Architecture drivers
 #
+# CONFIG_NET_DSA_MV88E6060 is not set
+# CONFIG_NET_DSA_MV88E6XXX is not set
+# CONFIG_NET_DSA_BCM_SF2 is not set
 CONFIG_ETHERNET=y
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_ADAPTEC is not set
-# CONFIG_NET_VENDOR_AGERE is not set
-# CONFIG_NET_VENDOR_ALTEON is not set
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_TYPHOON is not set
+CONFIG_NET_VENDOR_ADAPTEC=y
+# CONFIG_ADAPTEC_STARFIRE is not set
+CONFIG_NET_VENDOR_AGERE=y
+# CONFIG_ET131X is not set
+CONFIG_NET_VENDOR_ALTEON=y
+# CONFIG_ACENIC is not set
 # CONFIG_ALTERA_TSE is not set
-# CONFIG_NET_VENDOR_AMD is not set
+CONFIG_NET_VENDOR_AMD=y
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_PCNET32 is not set
 CONFIG_NET_VENDOR_ARC=y
 # CONFIG_ARC_EMAC is not set
-# CONFIG_NET_VENDOR_ATHEROS is not set
+CONFIG_NET_VENDOR_ATHEROS=y
+# CONFIG_ATL2 is not set
+# CONFIG_ATL1 is not set
+# CONFIG_ATL1E is not set
+# CONFIG_ATL1C is not set
+# CONFIG_ALX is not set
 # CONFIG_NET_VENDOR_AURORA is not set
 # CONFIG_NET_CADENCE is not set
 # CONFIG_NET_VENDOR_BROADCOM is not set
-# CONFIG_NET_VENDOR_BROCADE is not set
-# CONFIG_NET_VENDOR_CAVIUM is not set
-# CONFIG_NET_VENDOR_CHELSIO is not set
-# CONFIG_NET_VENDOR_CISCO is not set
+CONFIG_NET_VENDOR_BROCADE=y
+# CONFIG_BNA is not set
+CONFIG_NET_VENDOR_CAVIUM=y
+CONFIG_NET_VENDOR_CHELSIO=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_CHELSIO_T4 is not set
+# CONFIG_CHELSIO_T4VF is not set
+CONFIG_NET_VENDOR_CISCO=y
+# CONFIG_ENIC is not set
 # CONFIG_DNET is not set
-# CONFIG_NET_VENDOR_DEC is not set
-# CONFIG_NET_VENDOR_DLINK is not set
-# CONFIG_NET_VENDOR_EMULEX is not set
+CONFIG_NET_VENDOR_DEC=y
+# CONFIG_NET_TULIP is not set
+CONFIG_NET_VENDOR_DLINK=y
+# CONFIG_DL2K is not set
+# CONFIG_SUNDANCE is not set
+CONFIG_NET_VENDOR_EMULEX=y
+# CONFIG_BE2NET is not set
 # CONFIG_NET_VENDOR_EZCHIP is not set
-# CONFIG_NET_VENDOR_EXAR is not set
-# CONFIG_NET_VENDOR_HP is not set
+CONFIG_NET_VENDOR_EXAR=y
+# CONFIG_S2IO is not set
+# CONFIG_VXGE is not set
+CONFIG_NET_VENDOR_HP=y
+# CONFIG_HP100 is not set
 # CONFIG_NET_VENDOR_INTEL is not set
 # CONFIG_JME is not set
 # CONFIG_NET_VENDOR_MARVELL is not set
-# CONFIG_NET_VENDOR_MELLANOX is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_MLX4_EN is not set
+# CONFIG_MLX4_CORE is not set
+# CONFIG_MLX5_CORE is not set
+# CONFIG_MLXSW_CORE is not set
 # CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MYRI is not set
+CONFIG_NET_VENDOR_MYRI=y
+# CONFIG_MYRI10GE is not set
 # CONFIG_FEALNX is not set
 # CONFIG_NET_VENDOR_NATSEMI is not set
 # CONFIG_NET_VENDOR_NETRONOME is not set
-# CONFIG_NET_VENDOR_NVIDIA is not set
-# CONFIG_NET_VENDOR_OKI is not set
+CONFIG_NET_VENDOR_NVIDIA=y
+# CONFIG_FORCEDETH is not set
+CONFIG_NET_VENDOR_OKI=y
 # CONFIG_ETHOC is not set
-# CONFIG_NET_PACKET_ENGINE is not set
-# CONFIG_NET_VENDOR_QLOGIC is not set
+CONFIG_NET_PACKET_ENGINE=y
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_NET_VENDOR_QLOGIC=y
+# CONFIG_QLA3XXX is not set
+# CONFIG_QLCNIC is not set
+# CONFIG_QLGE is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_QED is not set
 # CONFIG_NET_VENDOR_QUALCOMM is not set
-# CONFIG_NET_VENDOR_REALTEK is not set
+CONFIG_NET_VENDOR_REALTEK=y
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_R8169 is not set
 # CONFIG_NET_VENDOR_RENESAS is not set
-# CONFIG_NET_VENDOR_RDC is not set
+CONFIG_NET_VENDOR_RDC=y
+# CONFIG_R6040 is not set
 # CONFIG_NET_VENDOR_ROCKER is not set
 # CONFIG_NET_VENDOR_SAMSUNG is not set
 # CONFIG_NET_VENDOR_SEEQ is not set
-# CONFIG_NET_VENDOR_SILAN is not set
-# CONFIG_NET_VENDOR_SIS is not set
+CONFIG_NET_VENDOR_SILAN=y
+# CONFIG_SC92031 is not set
+CONFIG_NET_VENDOR_SIS=y
+# CONFIG_SIS900 is not set
+# CONFIG_SIS190 is not set
 # CONFIG_SFC is not set
-# CONFIG_NET_VENDOR_SMSC is not set
+CONFIG_NET_VENDOR_SMSC=y
+# CONFIG_EPIC100 is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_SMSC9420 is not set
 # CONFIG_NET_VENDOR_STMICRO is not set
-# CONFIG_NET_VENDOR_SUN is not set
+CONFIG_NET_VENDOR_SUN=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NIU is not set
 # CONFIG_NET_VENDOR_SYNOPSYS is not set
-# CONFIG_NET_VENDOR_TEHUTI is not set
-# CONFIG_NET_VENDOR_TI is not set
+CONFIG_NET_VENDOR_TEHUTI=y
+# CONFIG_TEHUTI is not set
+CONFIG_NET_VENDOR_TI=y
+# CONFIG_TI_CPSW_ALE is not set
+# CONFIG_TLAN is not set
 # CONFIG_NET_VENDOR_VIA is not set
 # CONFIG_NET_VENDOR_WIZNET is not set
 # CONFIG_FDDI is not set
@@ -864,7 +1124,25 @@
 #
 # Host-side USB support is needed for USB Network Adapter support
 #
-# CONFIG_WLAN is not set
+CONFIG_WLAN=y
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
+# CONFIG_WLAN_VENDOR_ATH is not set
+# CONFIG_WLAN_VENDOR_ATMEL is not set
+# CONFIG_WLAN_VENDOR_BROADCOM is not set
+# CONFIG_WLAN_VENDOR_CISCO is not set
+# CONFIG_WLAN_VENDOR_INTEL is not set
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+# CONFIG_LIBERTAS is not set
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_PCIE=m
+# CONFIG_WLAN_VENDOR_MEDIATEK is not set
+# CONFIG_WLAN_VENDOR_RALINK is not set
+# CONFIG_WLAN_VENDOR_REALTEK is not set
+# CONFIG_WLAN_VENDOR_RSI is not set
+# CONFIG_WLAN_VENDOR_ST is not set
+# CONFIG_WLAN_VENDOR_TI is not set
+# CONFIG_WLAN_VENDOR_ZYDAS is not set
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -920,7 +1198,7 @@
 # CONFIG_NOZOMI is not set
 # CONFIG_N_GSM is not set
 # CONFIG_TRACE_SINK is not set
-# CONFIG_DEVMEM is not set
+CONFIG_DEVMEM=y
 # CONFIG_DEVKMEM is not set
 
 #
@@ -931,7 +1209,7 @@
 # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
 # CONFIG_SERIAL_8250_FINTEK is not set
 CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_PCI is not set
+CONFIG_SERIAL_8250_PCI=y
 CONFIG_SERIAL_8250_NR_UARTS=2
 CONFIG_SERIAL_8250_RUNTIME_UARTS=2
 CONFIG_SERIAL_8250_EXTENDED=y
@@ -940,7 +1218,7 @@
 # CONFIG_SERIAL_8250_DETECT_IRQ is not set
 # CONFIG_SERIAL_8250_RSA is not set
 # CONFIG_SERIAL_8250_FSL is not set
-# CONFIG_SERIAL_8250_DW is not set
+CONFIG_SERIAL_8250_DW=y
 # CONFIG_SERIAL_8250_RT288X is not set
 # CONFIG_SERIAL_8250_MOXA is not set
 CONFIG_SERIAL_OF_PLATFORM=y
@@ -1224,7 +1502,8 @@
 #
 # Graphics support
 #
-# CONFIG_VGA_ARB is not set
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
 # CONFIG_DRM is not set
 
 #
@@ -1375,8 +1654,14 @@
 #
 CONFIG_PCI=y
 CONFIG_PCI_SYSCALL=y
-# CONFIG_PCIEAER is not set
-# CONFIG_PCIEASPM is not set
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+# CONFIG_PCIEAER_INJECT is not set
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEBUG is not set
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_PERFORMANCE is not set
 # CONFIG_PCIE_DPC is not set
 CONFIG_PCI_MSI=y
 # CONFIG_PCI_DEBUG is not set
@@ -1390,7 +1675,8 @@
 #
 # PCI host controller drivers
 #
-# CONFIG_PCIE_DW_PLAT is not set
+CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_DW=y
 
 #
 # File systems
@@ -1405,11 +1691,13 @@
 # CONFIG_F2FS_FS is not set
 # CONFIG_FS_DAX is not set
 # CONFIG_FS_POSIX_ACL is not set
-# CONFIG_FILE_LOCKING is not set
+CONFIG_EXPORTFS=y
+CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
 # CONFIG_FS_ENCRYPTION is not set
-# CONFIG_FSNOTIFY is not set
-# CONFIG_DNOTIFY is not set
-# CONFIG_INOTIFY_USER is not set
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
 # CONFIG_FANOTIFY is not set
 # CONFIG_QUOTA is not set
 # CONFIG_QUOTACTL is not set
@@ -1501,11 +1789,16 @@
 CONFIG_PRINTK_TIME=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
 
 #
 # Compile-time checks and compiler options
 #
-# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_INFO_SPLIT is not set
+# CONFIG_DEBUG_INFO_DWARF4 is not set
+# CONFIG_GDB_SCRIPTS is not set
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_FRAME_WARN=1024
@@ -1513,7 +1806,7 @@
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 # CONFIG_PAGE_OWNER is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
@@ -1528,7 +1821,6 @@
 # CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_PAGE_POISONING is not set
 # CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_VM is not set
@@ -1540,13 +1832,18 @@
 #
 # Debug Lockups and Hangs
 #
-# CONFIG_LOCKUP_DETECTOR is not set
-# 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_LOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=1
+CONFIG_WQ_WATCHDOG=y
+CONFIG_PANIC_ON_OOPS=y
+CONFIG_PANIC_ON_OOPS_VALUE=1
+CONFIG_PANIC_TIMEOUT=3
+# CONFIG_SCHED_DEBUG is not set
 # CONFIG_SCHED_INFO is not set
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_SCHED_STACK_END_CHECK is not set
@@ -1606,8 +1903,8 @@
 #
 # Runtime Testing
 #
+# CONFIG_LKDTM is not set
 # CONFIG_TEST_LIST_SORT is not set
-# CONFIG_KPROBES_SANITY_TEST is not set
 # CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_RBTREE_TEST is not set
 # CONFIG_INTERVAL_TREE_TEST is not set
@@ -1650,20 +1947,22 @@
 #
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=m
 CONFIG_CRYPTO_AEAD2=y
 CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH=m
 CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG=m
 CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=m
 CONFIG_CRYPTO_AKCIPHER2=y
 # CONFIG_CRYPTO_RSA is not set
-CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER=m
 CONFIG_CRYPTO_MANAGER2=y
 # CONFIG_CRYPTO_USER is not set
-# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
 # CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_NULL2=y
 CONFIG_CRYPTO_WORKQUEUE=y
 # CONFIG_CRYPTO_CRYPTD is not set
@@ -1678,7 +1977,7 @@
 # CONFIG_CRYPTO_GCM is not set
 # CONFIG_CRYPTO_CHACHA20POLY1305 is not set
 # CONFIG_CRYPTO_SEQIV is not set
-# CONFIG_CRYPTO_ECHAINIV is not set
+CONFIG_CRYPTO_ECHAINIV=m
 
 #
 # Block modes
@@ -1696,14 +1995,14 @@
 # Hash modes
 #
 # CONFIG_CRYPTO_CMAC is not set
-CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_HMAC=m
 # CONFIG_CRYPTO_XCBC is not set
 # CONFIG_CRYPTO_VMAC is not set
 
 #
 # Digest
 #
-CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CRC32C is not set
 # CONFIG_CRYPTO_CRC32 is not set
 # CONFIG_CRYPTO_CRCT10DIF is not set
 # CONFIG_CRYPTO_GHASH is not set
@@ -1716,7 +2015,7 @@
 # CONFIG_CRYPTO_RMD256 is not set
 # CONFIG_CRYPTO_RMD320 is not set
 # CONFIG_CRYPTO_SHA1 is not set
-CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA256=m
 # CONFIG_CRYPTO_SHA512 is not set
 # CONFIG_CRYPTO_TGR192 is not set
 # CONFIG_CRYPTO_WP512 is not set
@@ -1753,18 +2052,19 @@
 #
 # Random Number Generation
 #
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_DRBG_MENU=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_DRBG_MENU=m
 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_DRBG=m
+CONFIG_CRYPTO_JITTERENTROPY=m
 # CONFIG_CRYPTO_USER_API_HASH is not set
 # CONFIG_CRYPTO_USER_API_SKCIPHER is not set
 # CONFIG_CRYPTO_USER_API_RNG is not set
 # CONFIG_CRYPTO_USER_API_AEAD is not set
-# CONFIG_CRYPTO_HW is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
 
 #
 # Certificates for signature checking
@@ -1800,8 +2100,15 @@
 CONFIG_ZLIB_DEFLATE=y
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
-# CONFIG_XZ_DEC is not set
-# CONFIG_XZ_DEC_BCJ is not set
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_BCJ=y
+# CONFIG_XZ_DEC_TEST is not set
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_DMA=y
 CONFIG_DQL=y
diff --git a/arch/arc/configs/topaz_umm_config b/arch/arc/configs/topaz_umm_config
index 3d5c929..a5e6884 100644
--- a/arch/arc/configs/topaz_umm_config
+++ b/arch/arc/configs/topaz_umm_config
@@ -18,7 +18,6 @@
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_IRQ_WORK=y
-CONFIG_QTN_PLATFORM_MISALIGN_WAR=y
 CONFIG_BUILDTIME_EXTABLE_SORT=y
 
 #
@@ -26,17 +25,17 @@
 #
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE="/usr/local/arcgcc48/bin/arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="/usr/local/arcgcc48_linux4.7.0/bin/arc-linux-uclibc-"
 # CONFIG_COMPILE_TEST is not set
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_DEFAULT_HOSTNAME="ARCLinux"
+CONFIG_DEFAULT_HOSTNAME="Topaz"
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_CROSS_MEMORY_ATTACH is not set
-# CONFIG_FHANDLE is not set
+CONFIG_FHANDLE=y
 # CONFIG_USELIB is not set
 # CONFIG_AUDIT is not set
 
@@ -48,6 +47,7 @@
 CONFIG_IRQ_DOMAIN=y
 CONFIG_GENERIC_MSI_IRQ=y
 CONFIG_HANDLE_DOMAIN_IRQ=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_GENERIC_CLOCKEVENTS=y
 
 #
@@ -112,7 +112,7 @@
 CONFIG_EXPERT=y
 CONFIG_MULTIUSER=y
 # CONFIG_SGETMASK_SYSCALL is not set
-# CONFIG_SYSFS_SYSCALL is not set
+CONFIG_SYSFS_SYSCALL=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
@@ -133,8 +133,8 @@
 CONFIG_AIO=y
 # CONFIG_ADVISE_SYSCALLS is not set
 # CONFIG_USERFAULTFD is not set
-# CONFIG_PCI_QUIRKS is not set
-# CONFIG_MEMBARRIER is not set
+CONFIG_PCI_QUIRKS=y
+CONFIG_MEMBARRIER=y
 CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 CONFIG_PERF_USE_VMALLOC=y
@@ -143,7 +143,7 @@
 # Kernel Performance Events And Counters
 #
 # CONFIG_PERF_EVENTS is not set
-CONFIG_VM_EVENT_COUNTERS=y
+# CONFIG_VM_EVENT_COUNTERS is not set
 # CONFIG_SLUB_DEBUG is not set
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_SLAB is not set
@@ -152,10 +152,9 @@
 # CONFIG_SYSTEM_DATA_VERIFICATION is not set
 # CONFIG_PROFILING is not set
 CONFIG_HAVE_OPROFILE=y
-CONFIG_KPROBES=y
+# CONFIG_KPROBES is not set
 # CONFIG_UPROBES is not set
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
-CONFIG_KRETPROBES=y
 CONFIG_HAVE_IOREMAP_PROT=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
@@ -174,6 +173,7 @@
 #
 # GCOV-based kernel profiling
 #
+# CONFIG_GCOV_KERNEL is not set
 # CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_RT_MUTEXES=y
@@ -205,10 +205,12 @@
 # IO Schedulers
 #
 CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_NOOP=y
-CONFIG_DEFAULT_IOSCHED="noop"
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
@@ -247,7 +249,7 @@
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
 # CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
 # CONFIG_SWITCH_RTL8365MB is not set
-CONFIG_SWITCH_RTL8363SB=m
+# CONFIG_SWITCH_RTL8363SB is not set
 # CONFIG_QTN_SKB_RECYCLE is not set
 
 #
@@ -287,7 +289,7 @@
 # CONFIG_HIGHMEM is not set
 # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
 CONFIG_ARC_PLAT_NEEDS_PHYS_TO_DMA=y
-CONFIG_ARC_KVADDR_SIZE=64
+CONFIG_ARC_KVADDR_SIZE=160
 CONFIG_ARC_CURR_IN_REG=y
 CONFIG_ARC_EMUL_UNALIGNED=y
 CONFIG_HZ=200
@@ -331,6 +333,7 @@
 # CONFIG_IDLE_PAGE_TRACKING is not set
 CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_NET=y
+CONFIG_NET_INGRESS=y
 
 #
 # Networking options
@@ -340,20 +343,26 @@
 CONFIG_UNIX=y
 CONFIG_UNIX_DIAG=y
 CONFIG_XFRM=y
-CONFIG_XFRM_ALGO=y
 # CONFIG_XFRM_USER is not set
 # CONFIG_XFRM_SUB_POLICY is not set
 # CONFIG_XFRM_MIGRATE is not set
 # CONFIG_XFRM_STATISTICS is not set
-CONFIG_NET_KEY=y
-# CONFIG_NET_KEY_MIGRATE is not set
+# CONFIG_NET_KEY is not set
 CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+# CONFIG_IP_FIB_TRIE_STATS is not set
+# CONFIG_IP_MULTIPLE_TABLES is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
 # CONFIG_IP_PNP is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE_DEMUX is not set
 CONFIG_NET_IP_TUNNEL=y
+CONFIG_IP_MROUTE=y
+# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
+# CONFIG_IP_PIMSM_V1 is not set
+# CONFIG_IP_PIMSM_V2 is not set
 # CONFIG_SYN_COOKIES is not set
 # CONFIG_NET_IPVTI is not set
 # CONFIG_NET_UDP_TUNNEL is not set
@@ -382,6 +391,7 @@
 # CONFIG_INET6_ESP is not set
 # CONFIG_INET6_IPCOMP is not set
 # CONFIG_IPV6_MIP6 is not set
+# CONFIG_IPV6_ILA is not set
 # CONFIG_INET6_XFRM_TUNNEL is not set
 # CONFIG_INET6_TUNNEL is not set
 CONFIG_INET6_XFRM_MODE_TRANSPORT=y
@@ -400,7 +410,193 @@
 # CONFIG_NETWORK_SECMARK is not set
 # CONFIG_NET_PTP_CLASSIFY is not set
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+# CONFIG_BRIDGE_NETFILTER is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_INGRESS=y
+# CONFIG_NETFILTER_NETLINK_ACCT is not set
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_LOG_COMMON=m
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+# CONFIG_NF_CONNTRACK_TIMEOUT is not set
+# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
+# CONFIG_NF_CT_PROTO_DCCP is not set
+CONFIG_NF_CT_PROTO_GRE=m
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_SNMP is not set
+CONFIG_NF_CONNTRACK_PPTP=m
+# CONFIG_NF_CONNTRACK_SANE is not set
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+# CONFIG_NF_CT_NETLINK is not set
+# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+# CONFIG_NF_NAT_AMANDA is not set
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
+# CONFIG_NF_TABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+
+#
+# Xtables combined modules
+#
+# CONFIG_NETFILTER_XT_MARK is not set
+CONFIG_NETFILTER_XT_CONNMARK=m
+
+#
+# Xtables targets
+#
+# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_HL is not set
+# CONFIG_NETFILTER_XT_TARGET_HMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+CONFIG_NETFILTER_XT_NAT=m
+# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
+# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set
+# CONFIG_NETFILTER_XT_TARGET_TEE is not set
+# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
+
+#
+# Xtables matches
+#
+# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_BPF is not set
+# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+# CONFIG_NETFILTER_XT_MATCH_CPU is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ECN is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+# CONFIG_NETFILTER_XT_MATCH_HL is not set
+# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
+# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
+# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
+# CONFIG_NETFILTER_XT_MATCH_STATE is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_IP_SET is not set
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_NF_DUP_IPV4 is not set
+# CONFIG_NF_LOG_ARP is not set
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_IP_NF_IPTABLES=m
+# CONFIG_IP_NF_MATCH_AH is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_RPFILTER is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+# CONFIG_IP_NF_TARGET_SYNPROXY is not set
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+# CONFIG_IP_NF_TARGET_NETMAP is not set
+# CONFIG_IP_NF_TARGET_REDIRECT is not set
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV6=m
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_NF_DUP_IPV6 is not set
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_RPFILTER is not set
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_TARGET_HL is not set
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+# CONFIG_IP6_NF_TARGET_SYNPROXY is not set
+CONFIG_IP6_NF_MANGLE=m
+# CONFIG_IP6_NF_RAW is not set
+CONFIG_IP6_NF_NAT=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+# CONFIG_IP6_NF_TARGET_NPT is not set
+# CONFIG_BRIDGE_NF_EBTABLES is not set
 # CONFIG_IP_DCCP is not set
 # CONFIG_IP_SCTP is not set
 # CONFIG_RDS is not set
@@ -412,6 +608,7 @@
 CONFIG_BRIDGE_IGMP_SNOOPING=y
 # CONFIG_BRIDGE_VLAN_FILTERING is not set
 CONFIG_HAVE_NET_DSA=y
+CONFIG_NET_DSA=y
 CONFIG_VLAN_8021Q=y
 # CONFIG_VLAN_8021Q_GVRP is not set
 # CONFIG_VLAN_8021Q_MVRP is not set
@@ -477,8 +674,8 @@
 # CONFIG_NETLINK_DIAG is not set
 # CONFIG_MPLS is not set
 # CONFIG_HSR is not set
-# CONFIG_NET_SWITCHDEV is not set
-# CONFIG_NET_L3_MASTER_DEV is not set
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_L3_MASTER_DEV=y
 # CONFIG_SOCK_CGROUP_DATA is not set
 CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
@@ -487,7 +684,6 @@
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
-# CONFIG_NET_TCPPROBE is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_CAN is not set
 # CONFIG_IRDA is not set
@@ -499,12 +695,19 @@
 CONFIG_WEXT_CORE=y
 CONFIG_WEXT_PROC=y
 CONFIG_WEXT_PRIV=y
-# CONFIG_CFG80211 is not set
+CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+CONFIG_CFG80211_DEVELOPER_WARNINGS=y
+CONFIG_CFG80211_CERTIFICATION_ONUS=y
+# CONFIG_CFG80211_REG_CELLULAR_HINTS is not set
+# CONFIG_CFG80211_REG_RELAX_NO_IR is not set
+# CONFIG_CFG80211_DEFAULT_PS is not set
+CONFIG_CFG80211_DEBUGFS=y
+CONFIG_CFG80211_INTERNAL_REGDB=y
+CONFIG_CFG80211_CRDA_SUPPORT=y
+CONFIG_CFG80211_WEXT=y
 # CONFIG_LIB80211 is not set
-
-#
-# CFG80211 needs to be enabled for MAC80211
-#
+# CONFIG_MAC80211 is not set
 CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
 # CONFIG_WIMAX is not set
 # CONFIG_RFKILL is not set
@@ -525,17 +728,18 @@
 # Generic Driver Options
 #
 CONFIG_UEVENT_HELPER=y
-CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_DEVTMPFS=y
-# CONFIG_DEVTMPFS_MOUNT is not set
+CONFIG_DEVTMPFS_MOUNT=y
 # CONFIG_STANDALONE is not set
 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
 CONFIG_FW_LOADER=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_ALLOW_DEV_COREDUMP is not set
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+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_SYS_HYPERVISOR is not set
@@ -582,7 +786,7 @@
 CONFIG_MTD_CFI_I2=y
 # CONFIG_MTD_CFI_I4 is not set
 # CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_RAM=y
+# CONFIG_MTD_RAM is not set
 # CONFIG_MTD_ROM is not set
 # CONFIG_MTD_ABSENT is not set
 
@@ -590,7 +794,6 @@
 # Mapping drivers for chip access
 #
 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP_OF=y
 # CONFIG_MTD_INTEL_VR_NOR is not set
 # CONFIG_MTD_PLATRAM is not set
 
@@ -767,60 +970,117 @@
 #
 # Distributed Switch Architecture drivers
 #
+# CONFIG_NET_DSA_MV88E6060 is not set
+# CONFIG_NET_DSA_MV88E6XXX is not set
+# CONFIG_NET_DSA_BCM_SF2 is not set
 CONFIG_ETHERNET=y
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_ADAPTEC is not set
-# CONFIG_NET_VENDOR_AGERE is not set
-# CONFIG_NET_VENDOR_ALTEON is not set
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_TYPHOON is not set
+CONFIG_NET_VENDOR_ADAPTEC=y
+# CONFIG_ADAPTEC_STARFIRE is not set
+CONFIG_NET_VENDOR_AGERE=y
+# CONFIG_ET131X is not set
+CONFIG_NET_VENDOR_ALTEON=y
+# CONFIG_ACENIC is not set
 # CONFIG_ALTERA_TSE is not set
-# CONFIG_NET_VENDOR_AMD is not set
+CONFIG_NET_VENDOR_AMD=y
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_PCNET32 is not set
 CONFIG_NET_VENDOR_ARC=y
 # CONFIG_ARC_EMAC is not set
-# CONFIG_NET_VENDOR_ATHEROS is not set
+CONFIG_NET_VENDOR_ATHEROS=y
+# CONFIG_ATL2 is not set
+# CONFIG_ATL1 is not set
+# CONFIG_ATL1E is not set
+# CONFIG_ATL1C is not set
+# CONFIG_ALX is not set
 # CONFIG_NET_VENDOR_AURORA is not set
 # CONFIG_NET_CADENCE is not set
 # CONFIG_NET_VENDOR_BROADCOM is not set
-# CONFIG_NET_VENDOR_BROCADE is not set
-# CONFIG_NET_VENDOR_CAVIUM is not set
-# CONFIG_NET_VENDOR_CHELSIO is not set
-# CONFIG_NET_VENDOR_CISCO is not set
+CONFIG_NET_VENDOR_BROCADE=y
+# CONFIG_BNA is not set
+CONFIG_NET_VENDOR_CAVIUM=y
+CONFIG_NET_VENDOR_CHELSIO=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_CHELSIO_T4 is not set
+# CONFIG_CHELSIO_T4VF is not set
+CONFIG_NET_VENDOR_CISCO=y
+# CONFIG_ENIC is not set
 # CONFIG_DNET is not set
-# CONFIG_NET_VENDOR_DEC is not set
-# CONFIG_NET_VENDOR_DLINK is not set
-# CONFIG_NET_VENDOR_EMULEX is not set
+CONFIG_NET_VENDOR_DEC=y
+# CONFIG_NET_TULIP is not set
+CONFIG_NET_VENDOR_DLINK=y
+# CONFIG_DL2K is not set
+# CONFIG_SUNDANCE is not set
+CONFIG_NET_VENDOR_EMULEX=y
+# CONFIG_BE2NET is not set
 # CONFIG_NET_VENDOR_EZCHIP is not set
-# CONFIG_NET_VENDOR_EXAR is not set
-# CONFIG_NET_VENDOR_HP is not set
+CONFIG_NET_VENDOR_EXAR=y
+# CONFIG_S2IO is not set
+# CONFIG_VXGE is not set
+CONFIG_NET_VENDOR_HP=y
+# CONFIG_HP100 is not set
 # CONFIG_NET_VENDOR_INTEL is not set
 # CONFIG_JME is not set
 # CONFIG_NET_VENDOR_MARVELL is not set
-# CONFIG_NET_VENDOR_MELLANOX is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_MLX4_EN is not set
+# CONFIG_MLX4_CORE is not set
+# CONFIG_MLX5_CORE is not set
+# CONFIG_MLXSW_CORE is not set
 # CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MYRI is not set
+CONFIG_NET_VENDOR_MYRI=y
+# CONFIG_MYRI10GE is not set
 # CONFIG_FEALNX is not set
 # CONFIG_NET_VENDOR_NATSEMI is not set
 # CONFIG_NET_VENDOR_NETRONOME is not set
-# CONFIG_NET_VENDOR_NVIDIA is not set
-# CONFIG_NET_VENDOR_OKI is not set
+CONFIG_NET_VENDOR_NVIDIA=y
+# CONFIG_FORCEDETH is not set
+CONFIG_NET_VENDOR_OKI=y
 # CONFIG_ETHOC is not set
-# CONFIG_NET_PACKET_ENGINE is not set
-# CONFIG_NET_VENDOR_QLOGIC is not set
+CONFIG_NET_PACKET_ENGINE=y
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_NET_VENDOR_QLOGIC=y
+# CONFIG_QLA3XXX is not set
+# CONFIG_QLCNIC is not set
+# CONFIG_QLGE is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_QED is not set
 # CONFIG_NET_VENDOR_QUALCOMM is not set
-# CONFIG_NET_VENDOR_REALTEK is not set
+CONFIG_NET_VENDOR_REALTEK=y
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_R8169 is not set
 # CONFIG_NET_VENDOR_RENESAS is not set
-# CONFIG_NET_VENDOR_RDC is not set
+CONFIG_NET_VENDOR_RDC=y
+# CONFIG_R6040 is not set
 # CONFIG_NET_VENDOR_ROCKER is not set
 # CONFIG_NET_VENDOR_SAMSUNG is not set
 # CONFIG_NET_VENDOR_SEEQ is not set
-# CONFIG_NET_VENDOR_SILAN is not set
-# CONFIG_NET_VENDOR_SIS is not set
+CONFIG_NET_VENDOR_SILAN=y
+# CONFIG_SC92031 is not set
+CONFIG_NET_VENDOR_SIS=y
+# CONFIG_SIS900 is not set
+# CONFIG_SIS190 is not set
 # CONFIG_SFC is not set
-# CONFIG_NET_VENDOR_SMSC is not set
+CONFIG_NET_VENDOR_SMSC=y
+# CONFIG_EPIC100 is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_SMSC9420 is not set
 # CONFIG_NET_VENDOR_STMICRO is not set
-# CONFIG_NET_VENDOR_SUN is not set
+CONFIG_NET_VENDOR_SUN=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NIU is not set
 # CONFIG_NET_VENDOR_SYNOPSYS is not set
-# CONFIG_NET_VENDOR_TEHUTI is not set
-# CONFIG_NET_VENDOR_TI is not set
+CONFIG_NET_VENDOR_TEHUTI=y
+# CONFIG_TEHUTI is not set
+CONFIG_NET_VENDOR_TI=y
+# CONFIG_TI_CPSW_ALE is not set
+# CONFIG_TLAN is not set
 # CONFIG_NET_VENDOR_VIA is not set
 # CONFIG_NET_VENDOR_WIZNET is not set
 # CONFIG_FDDI is not set
@@ -864,7 +1124,25 @@
 #
 # Host-side USB support is needed for USB Network Adapter support
 #
-# CONFIG_WLAN is not set
+CONFIG_WLAN=y
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
+# CONFIG_WLAN_VENDOR_ATH is not set
+# CONFIG_WLAN_VENDOR_ATMEL is not set
+# CONFIG_WLAN_VENDOR_BROADCOM is not set
+# CONFIG_WLAN_VENDOR_CISCO is not set
+# CONFIG_WLAN_VENDOR_INTEL is not set
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+# CONFIG_LIBERTAS is not set
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_PCIE=m
+# CONFIG_WLAN_VENDOR_MEDIATEK is not set
+# CONFIG_WLAN_VENDOR_RALINK is not set
+# CONFIG_WLAN_VENDOR_REALTEK is not set
+# CONFIG_WLAN_VENDOR_RSI is not set
+# CONFIG_WLAN_VENDOR_ST is not set
+# CONFIG_WLAN_VENDOR_TI is not set
+# CONFIG_WLAN_VENDOR_ZYDAS is not set
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -920,7 +1198,7 @@
 # CONFIG_NOZOMI is not set
 # CONFIG_N_GSM is not set
 # CONFIG_TRACE_SINK is not set
-# CONFIG_DEVMEM is not set
+CONFIG_DEVMEM=y
 # CONFIG_DEVKMEM is not set
 
 #
@@ -931,7 +1209,7 @@
 # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
 # CONFIG_SERIAL_8250_FINTEK is not set
 CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_PCI is not set
+CONFIG_SERIAL_8250_PCI=y
 CONFIG_SERIAL_8250_NR_UARTS=2
 CONFIG_SERIAL_8250_RUNTIME_UARTS=2
 CONFIG_SERIAL_8250_EXTENDED=y
@@ -940,7 +1218,7 @@
 # CONFIG_SERIAL_8250_DETECT_IRQ is not set
 # CONFIG_SERIAL_8250_RSA is not set
 # CONFIG_SERIAL_8250_FSL is not set
-# CONFIG_SERIAL_8250_DW is not set
+CONFIG_SERIAL_8250_DW=y
 # CONFIG_SERIAL_8250_RT288X is not set
 # CONFIG_SERIAL_8250_MOXA is not set
 CONFIG_SERIAL_OF_PLATFORM=y
@@ -1224,7 +1502,8 @@
 #
 # Graphics support
 #
-# CONFIG_VGA_ARB is not set
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
 # CONFIG_DRM is not set
 
 #
@@ -1375,8 +1654,14 @@
 #
 CONFIG_PCI=y
 CONFIG_PCI_SYSCALL=y
-# CONFIG_PCIEAER is not set
-# CONFIG_PCIEASPM is not set
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+# CONFIG_PCIEAER_INJECT is not set
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEBUG is not set
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_PERFORMANCE is not set
 # CONFIG_PCIE_DPC is not set
 CONFIG_PCI_MSI=y
 # CONFIG_PCI_DEBUG is not set
@@ -1390,7 +1675,8 @@
 #
 # PCI host controller drivers
 #
-# CONFIG_PCIE_DW_PLAT is not set
+CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_DW=y
 
 #
 # File systems
@@ -1405,11 +1691,13 @@
 # CONFIG_F2FS_FS is not set
 # CONFIG_FS_DAX is not set
 # CONFIG_FS_POSIX_ACL is not set
-# CONFIG_FILE_LOCKING is not set
+CONFIG_EXPORTFS=y
+CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
 # CONFIG_FS_ENCRYPTION is not set
-# CONFIG_FSNOTIFY is not set
-# CONFIG_DNOTIFY is not set
-# CONFIG_INOTIFY_USER is not set
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
 # CONFIG_FANOTIFY is not set
 # CONFIG_QUOTA is not set
 # CONFIG_QUOTACTL is not set
@@ -1501,11 +1789,16 @@
 CONFIG_PRINTK_TIME=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
 
 #
 # Compile-time checks and compiler options
 #
-# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_INFO_SPLIT is not set
+# CONFIG_DEBUG_INFO_DWARF4 is not set
+# CONFIG_GDB_SCRIPTS is not set
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_FRAME_WARN=1024
@@ -1513,7 +1806,7 @@
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 # CONFIG_PAGE_OWNER is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
@@ -1528,7 +1821,6 @@
 # CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_PAGE_POISONING is not set
 # CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_VM is not set
@@ -1540,13 +1832,18 @@
 #
 # Debug Lockups and Hangs
 #
-# CONFIG_LOCKUP_DETECTOR is not set
-# 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_LOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=1
+CONFIG_WQ_WATCHDOG=y
+CONFIG_PANIC_ON_OOPS=y
+CONFIG_PANIC_ON_OOPS_VALUE=1
+CONFIG_PANIC_TIMEOUT=3
+# CONFIG_SCHED_DEBUG is not set
 # CONFIG_SCHED_INFO is not set
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_SCHED_STACK_END_CHECK is not set
@@ -1606,8 +1903,8 @@
 #
 # Runtime Testing
 #
+# CONFIG_LKDTM is not set
 # CONFIG_TEST_LIST_SORT is not set
-# CONFIG_KPROBES_SANITY_TEST is not set
 # CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_RBTREE_TEST is not set
 # CONFIG_INTERVAL_TREE_TEST is not set
@@ -1650,20 +1947,22 @@
 #
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=m
 CONFIG_CRYPTO_AEAD2=y
 CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH=m
 CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG=m
 CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=m
 CONFIG_CRYPTO_AKCIPHER2=y
 # CONFIG_CRYPTO_RSA is not set
-CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER=m
 CONFIG_CRYPTO_MANAGER2=y
 # CONFIG_CRYPTO_USER is not set
-# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
 # CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_NULL2=y
 CONFIG_CRYPTO_WORKQUEUE=y
 # CONFIG_CRYPTO_CRYPTD is not set
@@ -1678,7 +1977,7 @@
 # CONFIG_CRYPTO_GCM is not set
 # CONFIG_CRYPTO_CHACHA20POLY1305 is not set
 # CONFIG_CRYPTO_SEQIV is not set
-# CONFIG_CRYPTO_ECHAINIV is not set
+CONFIG_CRYPTO_ECHAINIV=m
 
 #
 # Block modes
@@ -1696,14 +1995,14 @@
 # Hash modes
 #
 # CONFIG_CRYPTO_CMAC is not set
-CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_HMAC=m
 # CONFIG_CRYPTO_XCBC is not set
 # CONFIG_CRYPTO_VMAC is not set
 
 #
 # Digest
 #
-CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CRC32C is not set
 # CONFIG_CRYPTO_CRC32 is not set
 # CONFIG_CRYPTO_CRCT10DIF is not set
 # CONFIG_CRYPTO_GHASH is not set
@@ -1716,7 +2015,7 @@
 # CONFIG_CRYPTO_RMD256 is not set
 # CONFIG_CRYPTO_RMD320 is not set
 # CONFIG_CRYPTO_SHA1 is not set
-CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA256=m
 # CONFIG_CRYPTO_SHA512 is not set
 # CONFIG_CRYPTO_TGR192 is not set
 # CONFIG_CRYPTO_WP512 is not set
@@ -1753,18 +2052,19 @@
 #
 # Random Number Generation
 #
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_DRBG_MENU=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_DRBG_MENU=m
 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_DRBG=m
+CONFIG_CRYPTO_JITTERENTROPY=m
 # CONFIG_CRYPTO_USER_API_HASH is not set
 # CONFIG_CRYPTO_USER_API_SKCIPHER is not set
 # CONFIG_CRYPTO_USER_API_RNG is not set
 # CONFIG_CRYPTO_USER_API_AEAD is not set
-# CONFIG_CRYPTO_HW is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
 
 #
 # Certificates for signature checking
@@ -1800,8 +2100,15 @@
 CONFIG_ZLIB_DEFLATE=y
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
-# CONFIG_XZ_DEC is not set
-# CONFIG_XZ_DEC_BCJ is not set
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_BCJ=y
+# CONFIG_XZ_DEC_TEST is not set
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_DMA=y
 CONFIG_DQL=y
diff --git a/arch/arc/include/asm/cache.h b/arch/arc/include/asm/cache.h
index c94450a..2e1b40c 100644
--- a/arch/arc/include/asm/cache.h
+++ b/arch/arc/include/asm/cache.h
@@ -28,6 +28,7 @@
 #define ARC_UNCACHED_ADDR_SPACE	0xc0000000
 
 #ifndef __ASSEMBLY__
+
 /* Uncached access macros */
 #define arc_read_uncached_8(ptr)					\
 	({								\
@@ -65,26 +66,6 @@
 	 __asm__ __volatile__ ("st.di %0, [%1]"::"r"(data), "r"(ptr));	\
 	 })
 
-#if 0
-#define arc_read_uncached_32(ptr)	\
-({					\
-	unsigned int __ret;		\
-	__asm__ __volatile__(		\
-	"	ld.di %0, [%1]	\n"	\
-	: "=r"(__ret)			\
-	: "r"(ptr));			\
-	__ret;				\
-})
-
-#define arc_write_uncached_32(ptr, data)\
-({					\
-	__asm__ __volatile__(		\
-	"	st.di %0, [%1]	\n"	\
-	:				\
-	: "r"(data), "r"(ptr));		\
-})
-#endif
-
 #define ARCH_DMA_MINALIGN      L1_CACHE_BYTES
 
 extern void arc_cache_init(void);
diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h
index b59dec4..dd7ac0a 100644
--- a/arch/arc/include/asm/processor.h
+++ b/arch/arc/include/asm/processor.h
@@ -150,7 +150,7 @@
 #define USER_KERNEL_GUTTER    (VMALLOC_START - TASK_SIZE)
 #else
 /* Maximize TASK_SIZE */
-#define USER_KERNEL_GUTTER	0x02000000
+#define USER_KERNEL_GUTTER	0x01000000
 #define TASK_SIZE	(VMALLOC_START - USER_KERNEL_GUTTER)
 #endif
 
diff --git a/arch/arc/kernel/time.c b/arch/arc/kernel/time.c
index 4b05e0f..c6bc0a0 100644
--- a/arch/arc/kernel/time.c
+++ b/arch/arc/kernel/time.c
@@ -41,8 +41,10 @@
 #include <asm/arcregs.h>
 
 #include <asm/mcip.h>
-#include <qtn/topaz_hbm.h>
 #include <asm/board/soc.h>
+#ifdef CONFIG_ARC_PLAT_QTN
+#include <qtn/topaz_hbm.h>
+#endif
 
 /* Timer related Aux registers */
 #define ARC_REG_TIMER0_LIMIT	0x23	/* timer 0 limit */
@@ -293,8 +295,10 @@
 	 */
 	write_aux_reg(ARC_REG_TIMER0_CTRL, irq_reenable | TIMER_CTRL_NH);
 
+#ifdef CONFIG_ARC_PLAT_QTN
 	topaz_hbm_filter_txdone_pool();
 	pet_watchdog_timer();
+#endif
 	evt->event_handler(evt);
 
 	return IRQ_HANDLED;
@@ -377,5 +381,8 @@
 {
 	of_clk_init(NULL);
 	clocksource_probe();
+#ifdef CONFIG_ARC_PLAT_QTN
 	init_watchdog_timer();
+#endif
+
 }
diff --git a/arch/arc/kernel/unaligned.c b/arch/arc/kernel/unaligned.c
index cc4d8ba..fec64d7 100644
--- a/arch/arc/kernel/unaligned.c
+++ b/arch/arc/kernel/unaligned.c
@@ -206,12 +206,7 @@
 	char buf[TASK_COMM_LEN];
 
 	/* handle user mode only and only if enabled by sysadmin */
-/*#ifdef CONFIG_QTN_PLATFORM_MISALIGN_WAR*/
-#if 0
-	if (!unaligned_enabled)
-#else
 	if (!user_mode(regs) || !unaligned_enabled)
-#endif
 		return 1;
 
 	if (no_unaligned_warning) {
diff --git a/arch/arc/mm/init.c b/arch/arc/mm/init.c
index 8a9e5b6..5ecd024 100644
--- a/arch/arc/mm/init.c
+++ b/arch/arc/mm/init.c
@@ -76,20 +76,21 @@
 		base, TO_MB(size), !in_use ? "Not used":"");
 
 #if QTN_MM_DEBUG
-	pr_info("mm_init: RUBY_MAX_DRAM_SIZE =%08x\n", RUBY_MAX_DRAM_SIZE);
-	pr_info("mm_init: DMA_NOCACHE_START =%08x\n", DMA_NOCACHE_START);
-	pr_info("mm_init: DMA_NOCACHE_END/PAGE offset =%08x\n", PAGE_OFFSET);
+	pr_info("mm_init: CONFIG_ARC_KVADDR_SIZE =%#x\n", CONFIG_ARC_KVADDR_SIZE);
+	pr_info("mm_init: RUBY_MAX_DRAM_SIZE =%#x\n", RUBY_MAX_DRAM_SIZE);
+	pr_info("mm_init: DMA_NOCACHE_START =%#x\n", DMA_NOCACHE_START);
+	pr_info("mm_init: DMA_NOCACHE_END/PAGE offset =%#x\n", PAGE_OFFSET);
 
-	pr_info("mm_init: PCI_REMAP_SIZE =%08x\n", PCI_REMAP_SIZE);
-	pr_info("mm_init: PCI_REMAP_START =%08x\n", PCI_REMAP_START);
-	pr_info("mm_init: PCI_REMAP_END =%08x\n", PCI_REMAP_END);
+	pr_info("mm_init: PCI_REMAP_SIZE =%#x\n", PCI_REMAP_SIZE);
+	pr_info("mm_init: PCI_REMAP_START =%#x\n", PCI_REMAP_START);
+	pr_info("mm_init: PCI_REMAP_END =%#x\n", PCI_REMAP_END);
 
-	pr_info("mm_init: TASK size =%08x\n", TASK_SIZE);
-	pr_info("mm_init: TASK_UNMAPPED_BASE =%08x\n", TASK_UNMAPPED_BASE);
-	pr_info("mm_init: PAGE offset =%08x\n", PAGE_OFFSET);
-	pr_info("mm_init: PCI_REMAP_START =%08x\n", PCI_REMAP_START);
-	pr_info("mm_init: vmalloc start =%08x, size=%08x, end=%08x\n", VMALLOC_START, VMALLOC_SIZE, VMALLOC_END);
-	pr_info("mm_init: User kernel gutter =%08x\n", USER_KERNEL_GUTTER);
+	pr_info("mm_init: TASK size =%#x\n", TASK_SIZE);
+	pr_info("mm_init: TASK_UNMAPPED_BASE =%#x\n", TASK_UNMAPPED_BASE);
+	pr_info("mm_init: PAGE offset =%#x\n", PAGE_OFFSET);
+	pr_info("mm_init: PCI_REMAP_START =%#x\n", PCI_REMAP_START);
+	pr_info("mm_init: vmalloc start =%#x, size=%#x, end=%#x\n", VMALLOC_START, VMALLOC_SIZE, VMALLOC_END);
+	pr_info("mm_init: User kernel gutter =%#x\n", USER_KERNEL_GUTTER);
 #endif
 
 }
@@ -129,10 +130,10 @@
 	init_mm.brk = (unsigned long)_end;
 
 #if QTN_MM_DEBUG
-	pr_info("init mm start code =%08x\n", init_mm.start_code);
-	pr_info("init mm end code =%08x\n", init_mm.end_code);
-	pr_info("init mm end data =%08x\n", init_mm.end_data);
-	pr_info("init mm brk =%08x\n", init_mm.brk);
+	pr_info("setup_arch_mem: init mm start code =%08x\n", init_mm.start_code);
+	pr_info("setup_arch_mem: init mm end code =%08x\n", init_mm.end_code);
+	pr_info("setup_arch_mem: init mm end data =%08x\n", init_mm.end_data);
+	pr_info("setup_arch_mem: init mm brk =%08x\n", init_mm.brk);
 #endif
 
 	/* first page of system - kernel .vector starts here */
diff --git a/arch/arc/plat-qtn/sdk-qsr1000/common/ruby_board_db.h b/arch/arc/plat-qtn/sdk-qsr1000/common/ruby_board_db.h
index 9999df1..416de04 100644
--- a/arch/arc/plat-qtn/sdk-qsr1000/common/ruby_board_db.h
+++ b/arch/arc/plat-qtn/sdk-qsr1000/common/ruby_board_db.h
@@ -1164,6 +1164,18 @@
 	.bc_emac0       = EMAC_IN_USE | EMAC_PHY_FORCE_1000MB | EMAC_PHY_NOT_IN_USE | EMAC_PHY_RTL8363SB_P0, \
 	.bc_wifi_hw     = QTN_TPZ_SE5003L1, \
 	.bc_rgmii_timing = CONFIG_ARCH_RGMII_NODELAY, \
+	} ,{ /* 1232 */ \
+	.bc_board_id    = QTN_TOPAZ_PROWL, \
+	.bc_name        = "Prowl", \
+	.bc_ddr_type    = DDR3_16_WINBOND, \
+	.bc_ddr_speed   = DDR3_500MHz, \
+	.bc_ddr_size    = DDR_256MB, \
+	.bc_emac0       = EMAC_IN_USE, \
+	.bc_emac1       = EMAC_NOT_IN_USE, \
+	.bc_phy0_addr   = 4, \
+	.bc_phy1_addr   = TOPAZ_PHY0_ADDR, \
+	.bc_wifi_hw     = QTN_TPZ_SKY85703, \
+	.bc_rgmii_timing = 0x84848484, \
 	} ,{ /* 2008 */ \
 	.bc_board_id    = QTN_TOPAZ_RGMII_RFIC6, \
 	.bc_name        = "TOPAZ RGMII RFIC6", \
diff --git a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/dmautil.h b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/dmautil.h
index dab25bd..9a7d3aa 100644
--- a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/dmautil.h
+++ b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/dmautil.h
@@ -86,7 +86,10 @@
 __always_inline static void flush_dcache_sizerange_safe(void *p, size_t size)
 {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
-	dma_cache_wback((unsigned long)p, size);
+	phys_addr_t paddr;
+
+	paddr = virt_to_phys(p);
+	dma_cache_wback(paddr, size);
 #else
 	uintptr_t op_start = (uintptr_t) align_buf_cache(p);
 	size_t op_size = align_buf_cache_size(p, size);
@@ -97,7 +100,10 @@
 __always_inline static void flush_and_inv_dcache_sizerange_safe(void *p, size_t size)
 {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
-	dma_cache_wback_inv((unsigned long)p, size);
+	phys_addr_t paddr;
+
+	paddr = virt_to_phys(p);
+	dma_cache_wback_inv(paddr, size);
 #else
 	uintptr_t op_start = (uintptr_t) align_buf_cache(p);
 	size_t op_size = align_buf_cache_size(p, size);
@@ -109,7 +115,10 @@
 __always_inline static void inv_dcache_sizerange_safe(void *p, size_t size)
 {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
-	dma_cache_inv((unsigned long)p, size);
+	phys_addr_t paddr;
+
+	paddr = virt_to_phys(p);
+	dma_cache_inv(paddr, size);
 #else
 	uintptr_t op_start = (uintptr_t) align_buf_cache(p);
 	size_t op_size = align_buf_cache_size(p, size);
diff --git a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/iputil.h b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/iputil.h
index 42791c7..57be08b 100644
--- a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/iputil.h
+++ b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/iputil.h
@@ -163,9 +163,10 @@
 	const struct in6_addr *ipaddr = &ipv6h->daddr;
 
 	return ((memcmp(dest, &ssdp6_addr, sizeof(ssdp6_addr)) == 0) &&
-		((__constant_ntohl(ipaddr->in6_u.u6_addr32[0]) & 0xfff0ffff) == 0xff000000) &&
-		(ipaddr->in6_u.u6_addr32[1] == 0) && (ipaddr->in6_u.u6_addr32[2] == 0) &&
-		(ipaddr->in6_u.u6_addr32[3] == __constant_htonl(0xc)));
+		(((get_unaligned(&ipaddr->in6_u.u6_addr32[0])) & 0xfff0ffff) == __constant_htonl(0xff000000)) &&
+		(get_unaligned(&ipaddr->in6_u.u6_addr32[1]) == 0) &&
+		(get_unaligned(&ipaddr->in6_u.u6_addr32[2]) == 0) &&
+		(get_unaligned(&ipaddr->in6_u.u6_addr32[3]) == __constant_htonl(0xc)));
 }
 #endif
 
@@ -201,9 +202,10 @@
 	struct in6_addr *ipaddr = &ipv6h->daddr;
 
 	return ((memcmp(dest, ll_all_nodes_mac_addr, sizeof(ll_all_nodes_mac_addr)) == 0) &&
-		(__constant_ntohl(ipaddr->in6_u.u6_addr32[0]) == 0xff020000) &&
-		(ipaddr->in6_u.u6_addr32[1] == 0) && (ipaddr->in6_u.u6_addr32[2] == 0) &&
-		(ipaddr->in6_u.u6_addr32[3] == __constant_htonl(0x1)));
+		(get_unaligned(&ipaddr->in6_u.u6_addr32[0]) == __constant_htonl(0xff020000)) &&
+		(get_unaligned(&ipaddr->in6_u.u6_addr32[1]) == 0) &&
+		(get_unaligned(&ipaddr->in6_u.u6_addr32[2]) == 0) &&
+		(get_unaligned(&ipaddr->in6_u.u6_addr32[3]) == __constant_htonl(0x1)));
 }
 #endif
 
diff --git a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/qdrv_bld.h b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/qdrv_bld.h
index 268656a..fcc2b55 100644
--- a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/qdrv_bld.h
+++ b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/qdrv_bld.h
@@ -1,6 +1,6 @@
 /* Automatically generated file.  Do not edit. */
-#define QDRV_BLD_NAME	"v37.4.1.89"
-#define QDRV_BLD_LABEL	"v37.4.1.89"
-#define QDRV_BLD_VER	(0x25040159)
-#define QDRV_BLD_REV	"53858"
+#define QDRV_BLD_NAME	"v37.4.2.89"
+#define QDRV_BLD_LABEL	"v37.4.2.89"
+#define QDRV_BLD_VER	(0x25040259)
+#define QDRV_BLD_REV	"55851"
 #define QDRV_BLD_TYPE	(QDRV_BLD_TYPE_SDK)
diff --git a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/shared_defs_common.h b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/shared_defs_common.h
index 6d15bf7..7e36597 100644
--- a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/shared_defs_common.h
+++ b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/shared_defs_common.h
@@ -126,6 +126,7 @@
 #define  QTN_TOPAZ_BB_BOARD				1229
 #define  QTN_TOPAZ_RF_BOARD				1230
 #define  QTN_TOPAZ_QHS840_5S1				1231
+#define  QTN_TOPAZ_PROWL				1232
 #define  QTN_TOPAZ_RGMII_RFIC6				2008
 
 #define		QTN_RUBY_AUTOCONFIG_ID				32768
diff --git a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/topaz_hbm.h b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/topaz_hbm.h
index 283dc81..3a31a64 100644
--- a/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/topaz_hbm.h
+++ b/arch/arc/plat-qtn/sdk-qsr1000/include/qtn/topaz_hbm.h
@@ -63,13 +63,18 @@
 
 static inline void topaz_hbm_flush_skb_cache(struct sk_buff *skb)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
+	phys_addr_t paddr;
+
+	paddr = virt_to_phys(skb->head);
+	if (!skb->cache_is_cleaned)
+		dma_cache_wback_inv(paddr, skb_end_offset(skb));
+#else
 	uintptr_t flush_start = (uintptr_t) align_buf_cache(skb->head);
 	uintptr_t flush_end = align_val_up((uintptr_t) skb_end_pointer(skb),
 			dma_get_cache_alignment());
+
 	if (!skb->cache_is_cleaned)
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
-		dma_cache_wback_inv(flush_start, flush_end - flush_start);
-#else
 		flush_and_inv_dcache_range(flush_start, flush_end);
 #endif
 }
diff --git a/drivers/qtn/include/kernel/net80211/ieee80211_node.h b/drivers/qtn/include/kernel/net80211/ieee80211_node.h
index 5697020..9b906aa 100644
--- a/drivers/qtn/include/kernel/net80211/ieee80211_node.h
+++ b/drivers/qtn/include/kernel/net80211/ieee80211_node.h
@@ -756,6 +756,17 @@
 						  const char *filename,
 						  int line);
 
+struct ieee80211_node *ieee80211_find_node_by_ip_addr_debug(struct ieee80211vap *vap,
+			uint32_t ip_addr,
+			const char *filename,
+			int line);
+#ifdef CONFIG_IPV6
+struct ieee80211_node *ieee80211_find_node_by_ipv6_addr_debug(struct ieee80211vap *vap,
+			struct in6_addr *ipv6_addr,
+			const char *filename,
+			int line);
+#endif
+
 #define ieee80211_ref_node(ni) \
 	ieee80211_ref_node_debug(ni, __FILE__, __LINE__)
 
diff --git a/drivers/qtn/pcie2/include/qdpc_version.h b/drivers/qtn/pcie2/include/qdpc_version.h
index 8928354..5a03be8 100644
--- a/drivers/qtn/pcie2/include/qdpc_version.h
+++ b/drivers/qtn/pcie2/include/qdpc_version.h
@@ -1 +1 @@
-#define DRV_VERSION "v37.4.1.89"
+#define DRV_VERSION "v37.4.2.89"
diff --git a/drivers/qtn/pm_interval/pm_interval_drv.c b/drivers/qtn/pm_interval/pm_interval_drv.c
index 2dcf702..cbd7921 100644
--- a/drivers/qtn/pm_interval/pm_interval_drv.c
+++ b/drivers/qtn/pm_interval/pm_interval_drv.c
@@ -65,15 +65,19 @@
 #define PM_INTERVAL_SUCCESS_RESULT	0
 
 struct pm_interval_nd_entry {
+#if LINUX_VERSION_CODE	>=  KERNEL_VERSION(4,7,0)
+	struct rtnl_link_stats64 pd_start_interval;
+#else
 	struct net_device_stats	pd_start_interval;
+#endif
 	const struct net_device	*pd_dev;
 	TAILQ_ENTRY(pm_interval_nd_entry)	pd_next;
 };
 
 struct pm_interval_entry {
-	unsigned long		pe_time_started;
-	unsigned long		pe_time_elapsed;
-	unsigned long		pe_time_length;
+	long		pe_time_started;
+	long		pe_time_elapsed;
+	long		pe_time_length;
 	char			pe_name_interval[PM_INTERVAL_MAX_LENGTH_ARG + 1];
 	struct pm_interval_data	*pe_backptr;
 	TAILQ_HEAD(, pm_interval_nd_entry) pe_devices;
@@ -244,6 +248,62 @@
 
 static int pm_interval_proc_show(struct seq_file *sfile, void *v)
 {
+	struct pm_interval_entry *p_entry = sfile->private;
+	struct pm_interval_data	*p_data = p_entry->pe_backptr;
+	struct pm_interval_nd_entry *p_nd_entry = NULL;
+	long elapsed_time;
+
+	elapsed_time = pm_get_uptime();
+
+	spin_lock_bh(&p_data->pm_spinlock);
+
+	if (p_entry->pe_time_started <= elapsed_time) {
+		elapsed_time = elapsed_time - p_entry->pe_time_started;
+	} else {
+		elapsed_time = 0;
+	}
+
+	/*
+	 * Adopted from dev_seq_show, linux/net/core/dev.c
+	 * Lets the API to get a cumulative counter share source code with the API to get a PM counter.
+	 */
+	seq_printf(sfile, "Inter-|   Receive                            "
+				  "                    |  Transmit\n"
+				  " face |bytes    packets errs drop fifo frame "
+				  "compressed multicast|bytes    packets errs "
+				  "drop fifo colls carrier compressed\n");
+
+
+	TAILQ_FOREACH(p_nd_entry, &p_entry->pe_devices, pd_next) {
+		const struct rtnl_link_stats64 *stats = &p_nd_entry->pd_start_interval;
+
+		/*
+		 * Adopted from dev_seq_printf_stats, linux/net/core/dev.c
+		 * Lets the API to get a cumulative counter share source code with the API
+		 * to get a PM counter.
+		 */
+		seq_printf(sfile,  "%6s:%8llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
+			   "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
+			   p_nd_entry->pd_dev->name, stats->rx_bytes, stats->rx_packets,
+			   stats->rx_errors,
+			   stats->rx_dropped + stats->rx_missed_errors,
+			   stats->rx_fifo_errors,
+			   stats->rx_length_errors + stats->rx_over_errors +
+				stats->rx_crc_errors + stats->rx_frame_errors,
+			   stats->rx_compressed, stats->multicast,
+			   stats->tx_bytes, stats->tx_packets,
+			   stats->tx_errors, stats->tx_dropped,
+			   stats->tx_fifo_errors, stats->collisions,
+			   stats->tx_carrier_errors +
+				stats->tx_aborted_errors +
+				stats->tx_window_errors +
+				stats->tx_heartbeat_errors,
+			   stats->tx_compressed);
+	}
+
+	spin_unlock_bh(&p_data->pm_spinlock);
+	seq_printf(sfile, "\n%u seconds since the interval started\n", (unsigned int) elapsed_time);
+
 	return 0;
 }
 
@@ -272,7 +332,7 @@
 	struct pm_interval_entry	*p_entry = (struct pm_interval_entry *) data;
 	struct pm_interval_data		*p_data = p_entry->pe_backptr;
 	struct pm_interval_nd_entry	*p_nd_entry = NULL;
-	unsigned long elapsed_time;
+	long elapsed_time;
 
 	elapsed_time = pm_get_uptime();
 
@@ -423,7 +483,7 @@
 
 #if LINUX_VERSION_CODE	>=  KERNEL_VERSION(4,7,0)
 	if (!proc_create_data(&proc_entry_name[0], 0600, p_data->pm_interval_dir,
-				&pm_interval_stats_fops, NULL)) {
+				&pm_interval_stats_fops, p_entry)) {
 		printk(KERN_ERR "pm_interval: could not create proc entry\n");
 		goto cant_create_proc_entry;
 	}
@@ -567,14 +627,16 @@
 	struct net_device *dev;
 	int retval = 0;
 
-
 	read_lock(&dev_base_lock);
 
 	for_each_net(net) {
 		for_each_netdev(net, dev) {
+#if LINUX_VERSION_CODE	>=  KERNEL_VERSION(4,7,0)
 			struct rtnl_link_stats64 storage;
-			//const struct net_device_stats *p_current_counters = dev_get_stats(dev, &storage);
 			const struct rtnl_link_stats64 *p_current_counters = dev_get_stats(dev, &storage);
+#else
+			const struct net_device_stats *p_current_counters = dev_get_stats(dev);
+#endif
 			struct pm_interval_nd_entry	*p_nd_entry =
 				pm_interval_get_addr_entry(p_entry, dev);
 
@@ -597,7 +659,7 @@
 			if (p_current_counters != NULL) {
 				memcpy(&p_nd_entry->pd_start_interval,
 					p_current_counters,
-					sizeof(*p_current_counters));
+					sizeof(p_nd_entry->pd_start_interval));
 			}
 		}
 	}
diff --git a/drivers/qtn/qdrv/qdrv_bridge.c b/drivers/qtn/qdrv/qdrv_bridge.c
index 659b6f2..47c47b0 100644
--- a/drivers/qtn/qdrv/qdrv_bridge.c
+++ b/drivers/qtn/qdrv/qdrv_bridge.c
@@ -1228,7 +1228,11 @@
 #endif
 
 	KASSERT(((br_uc_cache != NULL) && (br_mc_cache != NULL) &&
-			(br_mc_client_cache != NULL) && (br_ipv6uc_cache != NULL)),
+			(br_mc_client_cache != NULL)
+#if defined(CONFIG_IPV6)
+			&& (br_ipv6uc_cache != NULL)
+#endif
+			),
 		(DBGEFMT "Could not allocate qdrv bridge cache", DBGARG));
 }
 
diff --git a/drivers/qtn/qdrv/qdrv_netdebug_binary.h b/drivers/qtn/qdrv/qdrv_netdebug_binary.h
index c61bf5a..4aab90b 100644
--- a/drivers/qtn/qdrv/qdrv_netdebug_binary.h
+++ b/drivers/qtn/qdrv/qdrv_netdebug_binary.h
@@ -1,7 +1,7 @@
-/* Automatically generated on 2016-11-15 09:25:27.101207 - do not edit */
+/* Automatically generated on 2016-12-23 09:23:45.073161 - do not edit */
 const char pktlogger_structs[] = {
 0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00, 0x00, 0x04, 0xE6, 0xD6, 0xB4, 0x46, 0x02, 0x00, 0x21, 0x01,
-0x16, 0x00, 0x00, 0x00, 0x74, 0x2F, 0xE5, 0xA3, 0xE0, 0x74, 0x5C, 0x16, 0xB2, 0x5D, 0x00, 0x39,
+0x16, 0x00, 0x00, 0x00, 0x74, 0x2F, 0xE5, 0xA3, 0xE0, 0x74, 0x6F, 0x16, 0xB6, 0x5D, 0x00, 0x39,
 0x9D, 0x0A, 0x8D, 0xE8, 0x21, 0xA4, 0x10, 0x81, 0x11, 0x2D, 0xCF, 0x41, 0x5B, 0x94, 0xFF, 0xA9,
 0xAF, 0x4F, 0xE4, 0xD8, 0x13, 0x51, 0xCB, 0xF4, 0xD7, 0xD0, 0xAA, 0xCC, 0x0F, 0x26, 0xB6, 0x20,
 0xEA, 0x26, 0xFE, 0x50, 0xE1, 0x98, 0xD0, 0xD0, 0x64, 0x3F, 0x94, 0x21, 0x67, 0x35, 0xFA, 0x97,
@@ -197,174 +197,174 @@
 0xC9, 0xF8, 0x9B, 0xAE, 0xFE, 0x17, 0x6D, 0x22, 0x52, 0x1A, 0x80, 0xCD, 0xA3, 0x0A, 0x26, 0x84,
 0x64, 0x29, 0xA2, 0xBE, 0xDB, 0xFA, 0x33, 0x64, 0x21, 0xD1, 0xB6, 0xBF, 0x0F, 0xF0, 0x6B, 0x07,
 0x9B, 0xF1, 0x3B, 0x15, 0x05, 0x33, 0xDC, 0x79, 0xB6, 0x3D, 0x38, 0xFD, 0xE9, 0x7C, 0x4B, 0x84,
-0x48, 0x71, 0x2A, 0xF1, 0x0B, 0xEB, 0xEF, 0x5E, 0x24, 0xE8, 0x0B, 0xD6, 0xEE, 0x2B, 0x72, 0xE3,
-0xC2, 0xF9, 0x8F, 0xD7, 0x3B, 0x07, 0x76, 0x40, 0xAB, 0xB0, 0xA9, 0xA9, 0xEC, 0x46, 0xEB, 0xA8,
-0x1C, 0x17, 0xB9, 0xD8, 0x55, 0x20, 0x9F, 0x52, 0x2C, 0xC7, 0x35, 0x16, 0x33, 0x8F, 0x36, 0xEA,
-0x67, 0x0C, 0x84, 0x84, 0x36, 0x28, 0x5F, 0xC2, 0xBA, 0x6C, 0x71, 0x9C, 0x5A, 0x98, 0xA9, 0x5A,
-0x07, 0x78, 0xA1, 0x4E, 0x87, 0x23, 0xA8, 0xA1, 0xF8, 0x78, 0xBF, 0x12, 0x8D, 0x98, 0x1A, 0x5D,
-0x6D, 0x72, 0x77, 0xD0, 0x87, 0x90, 0x8C, 0xB4, 0xD1, 0x95, 0x28, 0xE3, 0xF0, 0x0E, 0x46, 0x73,
-0xBC, 0x71, 0x2E, 0x86, 0x97, 0xC7, 0x20, 0x45, 0xD0, 0x37, 0xC5, 0x98, 0x49, 0x60, 0xF4, 0xA6,
-0x92, 0x5C, 0x82, 0x91, 0x21, 0xAE, 0xD0, 0xD1, 0xBA, 0xA7, 0x0E, 0x03, 0x42, 0x4F, 0x07, 0xF5,
-0xAA, 0xE2, 0xD8, 0x24, 0x17, 0x2A, 0x28, 0xD6, 0x39, 0x9D, 0x6B, 0xCE, 0x7A, 0x8B, 0x42, 0xC6,
-0x5B, 0xBA, 0xAB, 0x6F, 0xB0, 0xCE, 0x63, 0x88, 0xB1, 0xEC, 0x07, 0x44, 0x98, 0x42, 0x72, 0x05,
-0xBC, 0xBA, 0x55, 0xC4, 0x97, 0xA1, 0x0C, 0x91, 0x49, 0x4D, 0x25, 0x67, 0xA2, 0xEE, 0xA1, 0x74,
-0xE8, 0x9F, 0x2A, 0x8A, 0x75, 0x03, 0x99, 0x21, 0x98, 0x52, 0x0E, 0xAE, 0xF3, 0xFE, 0xD7, 0x68,
-0x65, 0x9D, 0xD4, 0x17, 0x95, 0x00, 0x35, 0x22, 0xA4, 0xBE, 0x12, 0xCF, 0x9F, 0xE8, 0x03, 0x10,
-0x62, 0x3B, 0xEE, 0xED, 0x0A, 0xC0, 0x53, 0x56, 0x59, 0x57, 0x23, 0xC2, 0x03, 0xFB, 0x88, 0xA6,
-0xEE, 0xD0, 0x58, 0x79, 0x66, 0x5E, 0x10, 0x33, 0x84, 0x59, 0x12, 0x81, 0x96, 0x1E, 0xBE, 0x44,
-0x69, 0x0B, 0xDD, 0xEF, 0x6C, 0xCE, 0xBF, 0x71, 0x3D, 0x3A, 0x6F, 0x12, 0x54, 0x22, 0x81, 0x29,
-0x9B, 0x37, 0x1F, 0x83, 0x74, 0xA7, 0x49, 0xF2, 0xE2, 0xBF, 0x8E, 0xC4, 0x07, 0x5C, 0x0D, 0xE6,
-0x1A, 0x05, 0x3C, 0x35, 0x77, 0xC9, 0xC9, 0x3C, 0x7D, 0xE5, 0x85, 0xD1, 0x62, 0x9C, 0x6F, 0xBF,
-0x21, 0xE8, 0x92, 0x42, 0x13, 0xA9, 0x8F, 0xAA, 0xD6, 0x54, 0x52, 0x03, 0xCC, 0x18, 0x0F, 0x0D,
-0xB5, 0x9F, 0x36, 0x3B, 0x1A, 0x85, 0x3C, 0xA6, 0x58, 0xC0, 0x6C, 0x44, 0x3D, 0xC9, 0x68, 0x47,
-0x14, 0x70, 0xA2, 0xD6, 0x89, 0x97, 0x64, 0x15, 0x67, 0x33, 0xAE, 0x9D, 0xD9, 0xB5, 0x91, 0x5C,
-0xD7, 0xBD, 0xCF, 0xD3, 0xF2, 0xBC, 0x53, 0x3A, 0xFD, 0xD5, 0x95, 0xC6, 0xE0, 0xD3, 0x33, 0x6B,
-0x35, 0xE7, 0x27, 0x03, 0x01, 0xA4, 0xEF, 0x3D, 0xC9, 0x23, 0xB4, 0x06, 0x45, 0xF7, 0x8D, 0x79,
-0xA8, 0xA6, 0x5A, 0x8D, 0x7D, 0xC4, 0xA1, 0x65, 0xC7, 0xDC, 0x5F, 0xAB, 0x0C, 0xAD, 0x40, 0x80,
-0x12, 0xB5, 0xE6, 0x55, 0xD9, 0xE6, 0x02, 0x53, 0x15, 0x51, 0x05, 0xA3, 0x95, 0x6C, 0x93, 0x60,
-0x91, 0xFE, 0xF6, 0x30, 0x62, 0x3F, 0x87, 0x3C, 0x5B, 0x5F, 0x31, 0x9A, 0xC7, 0x1D, 0x91, 0xF2,
-0x55, 0xCB, 0xE1, 0x23, 0xAD, 0xBF, 0x92, 0x9F, 0x15, 0x0E, 0xC9, 0xB8, 0xD7, 0x9D, 0xA6, 0x4A,
-0xA1, 0x61, 0x37, 0x09, 0x38, 0x66, 0xDC, 0x6B, 0x4F, 0x88, 0x16, 0xF0, 0xD7, 0x9D, 0xFB, 0xE0,
-0x8D, 0x93, 0xDD, 0xBA, 0x96, 0xA1, 0x69, 0xFE, 0x0C, 0x06, 0xC5, 0xF9, 0x50, 0xF2, 0x43, 0xA7,
-0xFE, 0x95, 0xA1, 0x8D, 0xC5, 0xB0, 0xA7, 0xBE, 0xAE, 0xD0, 0x94, 0xFC, 0x99, 0xD5, 0x7F, 0xFB,
-0x7D, 0xFD, 0xC8, 0x95, 0xCF, 0xB3, 0xB8, 0x25, 0x74, 0x18, 0xDC, 0x47, 0x87, 0xF1, 0x96, 0x8C,
-0xEF, 0x61, 0x96, 0x80, 0x38, 0x06, 0xA7, 0xE6, 0xD4, 0x75, 0x44, 0xFE, 0xD4, 0x47, 0x01, 0xE7,
-0x3C, 0x1A, 0xE2, 0xEB, 0x41, 0xD5, 0x2B, 0xF0, 0x77, 0x7A, 0x54, 0x5D, 0xE6, 0xEC, 0x46, 0x39,
-0x8F, 0x9F, 0x6E, 0x01, 0xBF, 0x39, 0x59, 0x5D, 0xF2, 0x41, 0x82, 0x88, 0x4B, 0xE9, 0x74, 0x8A,
-0x3A, 0x16, 0xD1, 0x7C, 0xF2, 0x9D, 0xE2, 0x54, 0x50, 0x2A, 0xD9, 0x5A, 0x98, 0xC9, 0x9B, 0x0C,
-0xB3, 0x3A, 0x88, 0x7A, 0x3E, 0xC4, 0xFA, 0xB4, 0x9A, 0xD4, 0xAC, 0x31, 0x42, 0x52, 0x49, 0x3C,
-0x5A, 0x59, 0x98, 0xAB, 0x21, 0x6E, 0xC5, 0x88, 0xFC, 0x2E, 0x48, 0x1F, 0x32, 0x48, 0x84, 0xF3,
-0xD5, 0xCB, 0x8F, 0x4D, 0x12, 0xB0, 0xEB, 0xA0, 0x95, 0xCB, 0x14, 0xA1, 0x0B, 0xDC, 0x58, 0xE2,
-0xAE, 0x95, 0x8A, 0x1C, 0x84, 0xD6, 0x44, 0x68, 0xB6, 0x3C, 0x35, 0xAC, 0x84, 0xEB, 0x4E, 0x0B,
-0xC4, 0x0E, 0x61, 0x81, 0x0D, 0xAA, 0x37, 0xB9, 0x5A, 0xD2, 0x07, 0xF3, 0x60, 0xBA, 0xB0, 0xF1,
-0x94, 0xED, 0x45, 0x27, 0x39, 0x02, 0x32, 0x81, 0xAB, 0x8E, 0xCC, 0xE0, 0x2D, 0x55, 0xDC, 0x6F,
-0x0A, 0xA4, 0x0D, 0xFB, 0x07, 0x32, 0x08, 0x23, 0x20, 0x8F, 0x41, 0x2E, 0xF6, 0xAC, 0x7C, 0xF3,
-0x8B, 0x72, 0x03, 0x81, 0x69, 0xFB, 0xEC, 0x28, 0x57, 0x21, 0x05, 0xC4, 0xE6, 0x50, 0xBD, 0x44,
-0xC2, 0x0B, 0x9D, 0x3C, 0x13, 0x4F, 0x47, 0xDA, 0x8D, 0xBE, 0x85, 0x47, 0x98, 0xA7, 0xEC, 0x8F,
-0x1B, 0x4E, 0x99, 0x90, 0x42, 0x04, 0x62, 0x65, 0xBA, 0x1E, 0x91, 0x40, 0x41, 0x41, 0x60, 0x83,
-0x49, 0x24, 0xD8, 0xD1, 0x56, 0x73, 0x5B, 0xA6, 0xDB, 0xDA, 0x8E, 0x4F, 0x83, 0x59, 0x79, 0x78,
-0x53, 0x89, 0x88, 0x72, 0x12, 0x0D, 0x20, 0xA6, 0x28, 0x43, 0x94, 0x71, 0x5F, 0xE3, 0x97, 0x63,
-0x93, 0x33, 0x65, 0xCB, 0x7E, 0x02, 0xD2, 0x18, 0xD9, 0x82, 0x69, 0x0A, 0xA0, 0x1D, 0x1A, 0x90,
-0x37, 0x3D, 0xBC, 0x72, 0xAF, 0xCF, 0xF1, 0xB3, 0x3D, 0x45, 0x2E, 0x65, 0xD4, 0x47, 0x35, 0x90,
-0x32, 0xC4, 0xBA, 0x6F, 0x76, 0x8D, 0x32, 0x8A, 0x42, 0x2E, 0x04, 0xE2, 0x7A, 0x3D, 0x1C, 0x7C,
-0xD2, 0x23, 0x81, 0xE3, 0xFE, 0xF1, 0x0C, 0x01, 0xE1, 0x4D, 0x47, 0x08, 0x64, 0xB6, 0x77, 0x78,
-0x9E, 0xDF, 0x23, 0xA4, 0x02, 0xE4, 0x78, 0x19, 0x4C, 0x0F, 0xCF, 0xE4, 0x85, 0x71, 0x17, 0x13,
-0xFF, 0x71, 0x34, 0x93, 0x90, 0xF0, 0x42, 0x06, 0xE0, 0x26, 0x3F, 0xE3, 0x83, 0x21, 0x1A, 0x9B,
-0x43, 0x34, 0xCB, 0x41, 0x22, 0xA9, 0x20, 0x45, 0xA3, 0xB4, 0x0E, 0xEF, 0x96, 0x45, 0x22, 0x0F,
-0x96, 0x0E, 0xAD, 0xAD, 0x05, 0x31, 0x7B, 0x75, 0xF4, 0xA9, 0xB3, 0x38, 0x8C, 0xB7, 0x95, 0x32,
-0x6E, 0x08, 0x0A, 0xBD, 0xB7, 0xBE, 0x5F, 0xF9, 0x81, 0x01, 0x1F, 0x27, 0xDE, 0xCF, 0xC6, 0x7F,
-0x76, 0x6D, 0x7D, 0xAD, 0xCC, 0x13, 0x25, 0xA6, 0x53, 0x23, 0x6B, 0xF1, 0x39, 0xC7, 0xBF, 0x24,
-0x1A, 0x78, 0xE9, 0x33, 0xE7, 0x57, 0xEB, 0xBF, 0x81, 0x04, 0xB9, 0xB4, 0x6F, 0x5D, 0x22, 0xCC,
-0xF7, 0x60, 0xF0, 0x60, 0xCF, 0x1B, 0x52, 0xDD, 0xD3, 0xFB, 0x38, 0xD4, 0xEC, 0x5C, 0xBA, 0x3C,
-0x9F, 0xB3, 0x9A, 0xE1, 0x57, 0xAF, 0xDA, 0xD8, 0x96, 0x6B, 0xD7, 0xA7, 0x68, 0xD6, 0x8C, 0x66,
-0x96, 0x75, 0x18, 0xEE, 0x11, 0x05, 0x03, 0xA2, 0xE9, 0x65, 0x6E, 0x67, 0xA1, 0xAA, 0xEE, 0xAA,
-0x81, 0x11, 0x5A, 0x46, 0x0E, 0xE2, 0x58, 0x12, 0xBA, 0x51, 0xBF, 0x47, 0x49, 0x72, 0x88, 0x09,
-0xF5, 0xE1, 0x45, 0x8D, 0xB5, 0x7F, 0x4F, 0x25, 0x2E, 0x3E, 0x62, 0x8A, 0x78, 0xC4, 0x8F, 0x76,
-0x97, 0x97, 0x0A, 0x40, 0xBF, 0x14, 0x9E, 0x63, 0xF4, 0xB8, 0xA0, 0x39, 0x4F, 0xA1, 0x88, 0x17,
-0x35, 0x1A, 0x31, 0x10, 0x24, 0xA5, 0xDD, 0x86, 0x12, 0xF7, 0x93, 0x90, 0x55, 0x0E, 0xD9, 0xA9,
-0xD1, 0xE5, 0x26, 0x1C, 0xEF, 0xED, 0x51, 0xDF, 0x51, 0x5F, 0x59, 0xFE, 0x87, 0x52, 0x26, 0x38,
-0xF8, 0xFB, 0x4D, 0xC7, 0xA4, 0x73, 0xC6, 0x08, 0x10, 0xB2, 0xC1, 0x4C, 0xB1, 0xC9, 0x0E, 0x09,
-0xDC, 0x48, 0x7F, 0x7C, 0xBC, 0x47, 0x5E, 0x87, 0xDB, 0x1F, 0xF8, 0x2F, 0x09, 0x3D, 0xC9, 0xCD,
-0x61, 0x1A, 0x69, 0x79, 0xC2, 0x31, 0xE5, 0x21, 0xE8, 0xEC, 0x49, 0x30, 0xC3, 0xC2, 0xDC, 0x89,
-0xF2, 0x9B, 0x0C, 0xE3, 0x13, 0xAF, 0xCC, 0x52, 0x58, 0x42, 0xBE, 0x95, 0x40, 0xD1, 0xC6, 0x7C,
-0xFC, 0x12, 0x8F, 0x14, 0x1E, 0x95, 0xD4, 0x77, 0x0D, 0x7E, 0x3D, 0xF8, 0xB0, 0x91, 0xAE, 0xCE,
-0x75, 0x69, 0xF0, 0x31, 0x4B, 0xA4, 0x60, 0x83, 0xE9, 0x1F, 0x49, 0x19, 0x21, 0x75, 0x27, 0x69,
-0x1C, 0x20, 0x10, 0xF5, 0x9E, 0x23, 0xB9, 0x56, 0xFF, 0x20, 0x0F, 0x8B, 0xAC, 0xC3, 0x21, 0x09,
-0x05, 0x60, 0xDB, 0x80, 0x7A, 0xFB, 0x65, 0x9C, 0x38, 0xA4, 0xF4, 0x50, 0xA2, 0xB7, 0x03, 0x6C,
-0xF5, 0x17, 0x6B, 0xF1, 0xD1, 0xB1, 0xF0, 0x1D, 0xB7, 0xA4, 0x17, 0x46, 0x3C, 0xFF, 0x6C, 0x7C,
-0x57, 0xFC, 0x43, 0x70, 0x55, 0x1B, 0x7A, 0x7D, 0x48, 0x00, 0xD1, 0xCF, 0x02, 0x74, 0xD1, 0xED,
-0x69, 0x7B, 0x81, 0xB2, 0x48, 0x4B, 0x75, 0x73, 0xF8, 0xE6, 0xA1, 0xA3, 0x84, 0x71, 0xFA, 0xAF,
-0xEE, 0x02, 0xC0, 0xFA, 0x3B, 0x23, 0x6D, 0xA9, 0xF9, 0x36, 0x5E, 0x44, 0xBB, 0x6D, 0xB3, 0x52,
-0x4F, 0x14, 0xCA, 0xEA, 0x4D, 0xA7, 0x57, 0x56, 0x48, 0xE0, 0xCE, 0xB7, 0xF1, 0x4B, 0x7B, 0x00,
-0xB4, 0xE4, 0xCA, 0xD6, 0xA9, 0x7B, 0x75, 0x64, 0xEC, 0x1E, 0x15, 0xCE, 0x8D, 0xE9, 0xB7, 0x83,
-0x3A, 0x8E, 0xB8, 0x85, 0x92, 0xC5, 0xCC, 0xC4, 0x25, 0x25, 0x4D, 0x8F, 0x97, 0x32, 0x21, 0x96,
-0x3C, 0xDA, 0x50, 0xB8, 0xE5, 0x76, 0x33, 0x7C, 0x8D, 0x98, 0x16, 0xE1, 0xE9, 0x3C, 0xA5, 0x13,
-0x2B, 0x1F, 0x39, 0x25, 0xFF, 0x7C, 0x9E, 0xE6, 0x14, 0x3C, 0x15, 0x6A, 0x40, 0x72, 0x22, 0x56,
-0xDF, 0xAA, 0x15, 0xED, 0x09, 0xEF, 0x80, 0x02, 0x7D, 0x50, 0x3D, 0x6C, 0xDC, 0x0F, 0x5D, 0x5B,
-0x12, 0xBD, 0x8F, 0x8F, 0xF8, 0xD0, 0xDA, 0xEE, 0xAB, 0x2A, 0x66, 0x4E, 0xDA, 0x86, 0x10, 0x0D,
-0xAB, 0xCB, 0x28, 0x5E, 0x86, 0x08, 0x1B, 0x8E, 0x0B, 0x02, 0xD3, 0xB8, 0x6D, 0xBA, 0x8A, 0x6B,
-0x1B, 0x41, 0xEA, 0x12, 0xEA, 0x2B, 0xC5, 0xCC, 0x12, 0x55, 0xC7, 0x4A, 0xB3, 0x73, 0x08, 0xFA,
-0x4F, 0x82, 0xAA, 0x51, 0x47, 0xCC, 0x12, 0x9F, 0x6D, 0x71, 0xBA, 0x71, 0xD5, 0x7A, 0x38, 0x02,
-0x4C, 0x13, 0xC3, 0xF0, 0x89, 0x82, 0x17, 0x3E, 0xF7, 0x87, 0xB9, 0xE5, 0x01, 0x37, 0x9B, 0x30,
-0xFD, 0x5B, 0x05, 0x0B, 0xAE, 0xF6, 0x16, 0xA3, 0x94, 0x2B, 0x12, 0xE0, 0x1F, 0xAC, 0x3C, 0xBF,
-0xD2, 0x13, 0x11, 0xB8, 0x52, 0x88, 0x98, 0x05, 0xF3, 0x48, 0x51, 0x76, 0xB4, 0x72, 0x1C, 0x07,
-0xA0, 0xF5, 0x65, 0x54, 0xEA, 0x4F, 0xF3, 0x86, 0x87, 0xBC, 0x47, 0xC6, 0x6C, 0x18, 0x93, 0xA3,
-0x92, 0xCA, 0xB6, 0x54, 0xD1, 0x17, 0x0C, 0x8B, 0x73, 0x80, 0xC3, 0xD6, 0x2B, 0x15, 0x26, 0x92,
-0x48, 0x92, 0x32, 0xF7, 0x37, 0x21, 0x16, 0x6C, 0xFB, 0x74, 0x4F, 0x30, 0xD1, 0x21, 0xEA, 0xC7,
-0x8F, 0x0D, 0x1E, 0x3E, 0xA3, 0x49, 0x1C, 0x8D, 0x74, 0xC8, 0x1B, 0x10, 0x89, 0x43, 0x62, 0x2A,
-0x3F, 0x7C, 0xD4, 0x73, 0x46, 0x1D, 0x8C, 0x47, 0x63, 0x3F, 0xA9, 0x59, 0x8C, 0x54, 0x32, 0xD6,
-0x71, 0x73, 0x55, 0x00, 0x03, 0x16, 0x77, 0xAA, 0xA2, 0x41, 0xB8, 0x61, 0x0B, 0x20, 0xB5, 0x43,
-0x5C, 0x89, 0x59, 0x14, 0x85, 0x74, 0xA7, 0x5F, 0x68, 0xFF, 0x72, 0x98, 0xCE, 0x7E, 0xAF, 0x79,
-0x7A, 0xFF, 0x12, 0x63, 0x83, 0x57, 0x57, 0xB9, 0xF1, 0x95, 0xC1, 0x85, 0x71, 0x7D, 0x99, 0x2B,
-0x72, 0xEE, 0x08, 0x2F, 0x70, 0xFA, 0xE9, 0x13, 0x71, 0x9D, 0x7D, 0x5D, 0xD5, 0xFA, 0xCC, 0xBF,
-0x08, 0xA2, 0x0D, 0xB9, 0x97, 0xAC, 0xB9, 0xEC, 0xF5, 0x94, 0x2E, 0x44, 0x4D, 0xAE, 0xF6, 0x5A,
-0xEB, 0x2E, 0xC2, 0x79, 0x43, 0x00, 0x4C, 0x95, 0x1A, 0x0F, 0x54, 0x4E, 0x36, 0xB6, 0x3A, 0x60,
-0xEB, 0xC2, 0x6C, 0xDA, 0x2C, 0xF3, 0x04, 0x80, 0xDD, 0xBC, 0xE1, 0xC0, 0xED, 0x61, 0x7A, 0x18,
-0x2A, 0x9D, 0x13, 0x2F, 0xA4, 0x38, 0x33, 0x3B, 0xB1, 0x5D, 0x92, 0xBF, 0xA7, 0x22, 0x7F, 0xEA,
-0xF5, 0x18, 0xF2, 0xE9, 0x31, 0x33, 0x73, 0xCB, 0x5E, 0xB6, 0x14, 0xB6, 0x66, 0xD7, 0xD5, 0xFF,
-0xBF, 0x4D, 0xB4, 0x36, 0x5E, 0xDA, 0xF3, 0xFE, 0x76, 0x44, 0x3B, 0x53, 0xA4, 0xA2, 0xC3, 0xA7,
-0xF8, 0x55, 0x92, 0x3F, 0x86, 0xB7, 0x82, 0x1D, 0xF6, 0x15, 0xFB, 0xD9, 0x5C, 0x2D, 0x58, 0xA5,
-0x72, 0x25, 0x02, 0x03, 0x0E, 0x8D, 0xCA, 0x28, 0xB0, 0xAA, 0x55, 0xF2, 0x03, 0xC5, 0x51, 0x6E,
-0x04, 0x69, 0xD6, 0x9E, 0x90, 0x76, 0xA6, 0xFD, 0x58, 0xA8, 0x98, 0x56, 0x08, 0xE8, 0x05, 0x04,
-0xF4, 0x7C, 0xCA, 0x34, 0xAD, 0x2F, 0x98, 0xF9, 0x5C, 0xBD, 0x66, 0x01, 0xB7, 0xD2, 0xD6, 0x1C,
-0xDC, 0x19, 0x8B, 0xC5, 0xEF, 0xE8, 0x03, 0x59, 0xC7, 0xCB, 0xB9, 0x0F, 0x90, 0xA3, 0x9B, 0x0D,
-0xD2, 0x77, 0xBD, 0x57, 0xAD, 0xE3, 0x4B, 0x9B, 0x98, 0x65, 0x25, 0x5C, 0xBC, 0xFE, 0x00, 0x5A,
-0x42, 0x68, 0x80, 0x76, 0x00, 0xDA, 0x08, 0x2E, 0x65, 0xCD, 0x2E, 0x59, 0x68, 0xC6, 0x4B, 0x0B,
-0x80, 0x50, 0xEA, 0x60, 0x60, 0xD2, 0xFD, 0xEF, 0x63, 0x40, 0x3D, 0xA0, 0x9A, 0x08, 0x06, 0x06,
-0xA0, 0x4C, 0x5B, 0x42, 0xF3, 0xE6, 0x43, 0x02, 0x96, 0xC7, 0x6C, 0x60, 0xF2, 0xA8, 0x4B, 0xA4,
-0x11, 0xDA, 0x5B, 0x65, 0x21, 0x96, 0xF9, 0xE5, 0xC0, 0x38, 0x42, 0x91, 0x02, 0x4F, 0x59, 0xE0,
-0xD0, 0xF6, 0xC2, 0x59, 0x81, 0xCC, 0x53, 0x18, 0xBA, 0xB2, 0x73, 0x87, 0x92, 0x89, 0x95, 0xC6,
-0xFF, 0x8C, 0xC8, 0x70, 0x28, 0x05, 0x2E, 0x9E, 0x9B, 0x33, 0xF0, 0x2D, 0xE6, 0x73, 0x17, 0xD5,
-0x65, 0x9D, 0xFA, 0xE2, 0x3A, 0x97, 0x1A, 0x99, 0x7B, 0xED, 0xEF, 0xCE, 0x96, 0x63, 0x14, 0x8A,
-0xDA, 0x1A, 0x4E, 0xEC, 0x2A, 0x5F, 0x45, 0x5A, 0x72, 0x60, 0x8D, 0xFF, 0x79, 0xFE, 0xE0, 0x76,
-0x9C, 0x1A, 0x88, 0xFB, 0xA4, 0x89, 0xBD, 0x8A, 0xAE, 0x6F, 0x3A, 0xB3, 0x2B, 0xAD, 0x2F, 0x70,
-0x09, 0xBF, 0x2D, 0xA1, 0xC8, 0x02, 0x3C, 0xE6, 0xD1, 0x38, 0xF0, 0xE1, 0xDE, 0x0C, 0xFF, 0xCC,
-0x0E, 0x60, 0x5A, 0x0C, 0xD5, 0x30, 0x52, 0x88, 0x85, 0xA7, 0xBF, 0x6A, 0xD3, 0x2E, 0x41, 0x48,
-0xFC, 0xA0, 0xC9, 0x3B, 0x93, 0x8C, 0x07, 0x1C, 0xC8, 0xEA, 0x42, 0xA9, 0xFD, 0x82, 0x05, 0xE1,
-0x6F, 0x06, 0xB1, 0x53, 0x70, 0x28, 0x7A, 0x96, 0x0C, 0x4F, 0xDD, 0x2D, 0x72, 0x78, 0x03, 0x01,
-0x68, 0x52, 0xDD, 0x1D, 0x3F, 0x38, 0x96, 0x68, 0x68, 0x72, 0x16, 0x25, 0x5F, 0x18, 0x47, 0xEB,
-0xBD, 0x8E, 0x4D, 0x39, 0xD3, 0x91, 0x72, 0x4E, 0x46, 0xE0, 0x79, 0xC6, 0xB7, 0xA5, 0x75, 0x65,
-0x44, 0x44, 0x1C, 0x8E, 0xB2, 0xE1, 0x3E, 0x94, 0x31, 0xC7, 0xE5, 0xEF, 0xC3, 0x49, 0x84, 0x7B,
-0x90, 0x26, 0x5E, 0xFF, 0x8B, 0x7D, 0xD6, 0xAF, 0xD0, 0x8B, 0x9F, 0xA4, 0x6C, 0xEA, 0xFF, 0x83,
-0xCF, 0xB2, 0x46, 0xF4, 0x04, 0xC3, 0xE4, 0xFA, 0x44, 0xF4, 0x46, 0xB1, 0x5F, 0xEC, 0x70, 0x4D,
-0x17, 0xEE, 0x3A, 0x53, 0x75, 0x9E, 0x67, 0xF4, 0x78, 0x8C, 0x64, 0xDF, 0xBA, 0x6E, 0xDF, 0x46,
-0xC1, 0xF2, 0x20, 0x85, 0x79, 0xB6, 0x20, 0x51, 0xD6, 0xFE, 0xE8, 0x98, 0x6B, 0x43, 0xE9, 0x10,
-0xD2, 0x51, 0x29, 0xB3, 0xF0, 0x63, 0xA0, 0xB2, 0x60, 0x21, 0x98, 0x96, 0xFE, 0x73, 0x14, 0xEC,
-0x9A, 0x6B, 0x35, 0x8E, 0xB5, 0xAA, 0x33, 0x30, 0x3F, 0x09, 0x28, 0x14, 0x00, 0x32, 0x86, 0xBC,
-0xB6, 0xA0, 0x2B, 0x80, 0x92, 0x9C, 0xCD, 0xAE, 0x5A, 0x3B, 0x6B, 0x78, 0xF0, 0x9F, 0x7D, 0x97,
-0x77, 0xAA, 0x1D, 0xC0, 0xCB, 0x2A, 0x2D, 0x86, 0x5B, 0x70, 0xC2, 0x65, 0x29, 0x6E, 0xD5, 0xE4,
-0xBA, 0x54, 0x24, 0x3F, 0xAA, 0x4A, 0x7C, 0x15, 0x90, 0xDA, 0xB4, 0x12, 0xF5, 0x24, 0x2B, 0x74,
-0xA5, 0x76, 0x71, 0x87, 0x85, 0x94, 0x9E, 0x8C, 0x02, 0x68, 0xB3, 0x44, 0xFE, 0xC5, 0xAF, 0xC2,
-0x13, 0x83, 0x89, 0x7C, 0x79, 0xBE, 0xAB, 0x56, 0x54, 0xA4, 0x65, 0xAA, 0xFA, 0x89, 0x3C, 0xCB,
-0x41, 0x69, 0x40, 0x3A, 0x91, 0xC4, 0x37, 0x9B, 0x34, 0xDD, 0xFE, 0xCC, 0x66, 0x15, 0x87, 0x74,
-0xAA, 0xE5, 0x34, 0xF1, 0xB9, 0x78, 0xBA, 0x4E, 0x38, 0xC7, 0xDB, 0x9A, 0xFE, 0x54, 0x32, 0xF5,
-0x08, 0x18, 0x55, 0x0A, 0x22, 0xF3, 0x1B, 0xC0, 0xAC, 0x07, 0x38, 0x93, 0x2E, 0x55, 0x58, 0x62,
-0x20, 0xAA, 0x18, 0x0B, 0x1C, 0x26, 0x56, 0xCE, 0x0B, 0x8A, 0x69, 0x1A, 0xB8, 0x85, 0xCB, 0x8F,
-0xBD, 0x8E, 0x22, 0xED, 0x4E, 0x8A, 0xA1, 0xFB, 0xA7, 0x8B, 0x08, 0xC0, 0x16, 0x31, 0x9F, 0x90,
-0xCA, 0x77, 0x74, 0x6D, 0xCF, 0xB4, 0xB4, 0x62, 0xC6, 0x33, 0xB9, 0xD8, 0xFF, 0x94, 0x22, 0x5F,
-0x3B, 0x46, 0x70, 0xD4, 0x92, 0x4B, 0x25, 0x01, 0x64, 0x3A, 0x07, 0x46, 0x65, 0xAD, 0x71, 0x36,
-0x52, 0x90, 0xFA, 0xBA, 0xE4, 0x88, 0xDA, 0x44, 0xC7, 0xF8, 0x8B, 0x9D, 0xED, 0x6B, 0x85, 0x6F,
-0xBD, 0x23, 0xD8, 0xFF, 0x9B, 0x47, 0x58, 0xDA, 0x5B, 0x1E, 0xC3, 0xAE, 0xF8, 0xF6, 0x96, 0x47,
-0x8F, 0x9E, 0x12, 0x04, 0xA0, 0xE0, 0x71, 0x55, 0xA1, 0xFE, 0xED, 0xDC, 0x66, 0x3B, 0x75, 0x68,
-0xC0, 0xA1, 0x67, 0x10, 0x0D, 0x7B, 0x2B, 0x51, 0x78, 0x05, 0xC6, 0x06, 0x16, 0xF6, 0x51, 0x9C,
-0xD2, 0xA8, 0xD0, 0x28, 0xD9, 0xFC, 0x99, 0x0F, 0x89, 0xDE, 0x3A, 0x74, 0xAA, 0x89, 0xFF, 0xA0,
-0x89, 0x3E, 0xC1, 0x8C, 0x78, 0x28, 0xA8, 0x6A, 0xB1, 0x62, 0x92, 0x38, 0x19, 0xBA, 0x3D, 0x04,
-0x0D, 0x0D, 0xF0, 0xA7, 0xD7, 0x58, 0x01, 0x4A, 0xFB, 0x2A, 0x15, 0x85, 0xBD, 0xDC, 0x2E, 0xEB,
-0x90, 0x0E, 0xC7, 0x13, 0x8F, 0x5E, 0x1A, 0xEC, 0x01, 0xD1, 0x20, 0x06, 0x35, 0x20, 0x49, 0x4F,
-0x60, 0x6D, 0xD6, 0x45, 0x78, 0x74, 0x39, 0x39, 0x8C, 0x2C, 0xBB, 0x9D, 0x96, 0xFA, 0xA3, 0x1A,
-0x3A, 0x45, 0x3E, 0x9A, 0xE1, 0x93, 0x09, 0xFE, 0x3F, 0x7D, 0x0F, 0x9A, 0x02, 0xE3, 0x87, 0x62,
-0xEC, 0xE1, 0xF7, 0x8C, 0x88, 0x50, 0x83, 0xBE, 0xBB, 0xC1, 0xB5, 0x93, 0xAC, 0xDE, 0x88, 0x89,
-0x34, 0x6F, 0xF0, 0x98, 0x5C, 0x7B, 0x1E, 0x2D, 0xDE, 0xBA, 0x1C, 0x09, 0x1D, 0xD0, 0x14, 0xAD,
-0x48, 0x2A, 0x12, 0xC8, 0x54, 0x95, 0x8D, 0x13, 0x74, 0x1F, 0x6B, 0x53, 0x38, 0xC6, 0x97, 0x48,
-0x56, 0x28, 0xFE, 0x62, 0x41, 0x9E, 0xAB, 0x38, 0xAE, 0xEC, 0xE7, 0x53, 0x0D, 0xD3, 0x2A, 0xAF,
-0x9A, 0x07, 0xBE, 0x2D, 0xBC, 0xE6, 0x88, 0x96, 0x72, 0x3F, 0x18, 0x16, 0xCB, 0x83, 0xCE, 0x24,
-0x25, 0x9A, 0x42, 0x72, 0xED, 0x32, 0x78, 0x3F, 0xC0, 0xF0, 0x59, 0x8C, 0x14, 0x47, 0xF3, 0x31,
-0xE1, 0x61, 0x90, 0xFD, 0x2E, 0xFB, 0xCE, 0xAC, 0xA2, 0x11, 0x04, 0xCC, 0x55, 0x57, 0x29, 0xF7,
-0x57, 0x40, 0x1C, 0xAC, 0xF4, 0x12, 0xA9, 0xA6, 0x00, 0x13, 0xAE, 0xA5, 0x3E, 0x67, 0x35, 0x30,
-0x8B, 0x9E, 0xFD, 0xFC, 0x69, 0xB1, 0x58, 0xAB, 0x65, 0x98, 0x87, 0x04, 0xCD, 0x39, 0x10, 0x88,
-0x69, 0xFF, 0x50, 0x78, 0xAE, 0x7D, 0x6F, 0xE8, 0x1C, 0x10, 0x67, 0xCB, 0x21, 0x91, 0xF9, 0x26,
-0xFE, 0x44, 0x69, 0xB8, 0x1D, 0xA2, 0x38, 0xBB, 0x3F, 0xF1, 0x98, 0x28, 0x27, 0x3C, 0x7C, 0xA5,
-0x22, 0x56, 0xC3, 0x3A, 0xEB, 0x3D, 0x65, 0x3B, 0x83, 0x9A, 0x03, 0xCA, 0x64, 0x8D, 0x1E, 0xA8,
-0x00, 0x00, 0x00, 0x00, 0x7D, 0x50, 0xA6, 0x7D, 0xD3, 0xA4, 0x50, 0x12, 0x00, 0x01, 0xCE, 0x2D,
-0xDD, 0xE8, 0x01, 0x00, 0xB1, 0x91, 0x32, 0xBB, 0xB1, 0xC4, 0x67, 0xFB, 0x02, 0x00, 0x00, 0x00,
-0x00, 0x04, 0x59, 0x5A};
+0x48, 0x71, 0x2A, 0xF1, 0x0B, 0xEB, 0xEF, 0x5E, 0x24, 0xEB, 0xCA, 0x45, 0xD6, 0x27, 0x14, 0xE8,
+0x74, 0x2A, 0x83, 0xAD, 0xD5, 0xAE, 0xF9, 0xCE, 0x33, 0xDC, 0x5E, 0x73, 0x71, 0xD5, 0xFE, 0x24,
+0x89, 0xBA, 0x0B, 0x26, 0x3F, 0xB1, 0xF7, 0xA5, 0x46, 0x44, 0x4D, 0x91, 0xAD, 0xEA, 0x31, 0x19,
+0x40, 0xFE, 0xA0, 0xD8, 0x9C, 0x23, 0x2E, 0x04, 0x2D, 0x88, 0xF3, 0xCA, 0x58, 0x61, 0x94, 0x32,
+0x26, 0x6F, 0x30, 0x1B, 0x51, 0xF1, 0x4C, 0xEC, 0x89, 0x43, 0x56, 0x94, 0x85, 0x40, 0x8C, 0x26,
+0x2B, 0x35, 0x0B, 0xDE, 0xA2, 0xBA, 0x8B, 0xED, 0xD2, 0x59, 0xA2, 0xD3, 0xBD, 0xBF, 0x84, 0x69,
+0x26, 0x1B, 0xAB, 0xE7, 0xA2, 0x0D, 0x28, 0x79, 0x4A, 0xD9, 0xEC, 0x7F, 0xC9, 0x23, 0x5F, 0x87,
+0x3B, 0x6D, 0xFA, 0x2B, 0xA8, 0x45, 0x71, 0x98, 0x1C, 0x99, 0x12, 0xB3, 0xB0, 0x06, 0x07, 0x77,
+0x19, 0x7B, 0x82, 0x72, 0x8E, 0x69, 0x2A, 0x60, 0xD8, 0x60, 0xDB, 0x52, 0xAB, 0x21, 0xF7, 0xF6,
+0xB6, 0x80, 0x02, 0x4F, 0x24, 0x49, 0xB6, 0x2F, 0xC7, 0xB2, 0xE0, 0xE5, 0xBB, 0x8C, 0x7C, 0x13,
+0x88, 0x12, 0xF1, 0x64, 0x8A, 0xC5, 0x1D, 0xA0, 0x92, 0x20, 0xDD, 0x8D, 0xB1, 0xA3, 0x2A, 0x36,
+0x1B, 0x6A, 0x4F, 0x87, 0xF9, 0x0D, 0x62, 0x74, 0xE5, 0x71, 0x77, 0xA2, 0xB8, 0x77, 0x09, 0x7F,
+0x33, 0x33, 0x37, 0x42, 0xE4, 0xA8, 0x5F, 0xC7, 0x24, 0xBD, 0x88, 0x70, 0xC1, 0x96, 0x5D, 0x84,
+0xFF, 0x5E, 0xC4, 0x95, 0x28, 0x9B, 0x48, 0x7F, 0x6C, 0xE0, 0xEF, 0xCB, 0x32, 0x9F, 0xC2, 0x0B,
+0x37, 0x96, 0xAA, 0x64, 0x58, 0xA4, 0x3A, 0x43, 0x77, 0x94, 0xED, 0xD6, 0x91, 0x7C, 0x0C, 0x21,
+0xDC, 0xA9, 0x57, 0x35, 0x24, 0x33, 0xAF, 0x0F, 0x90, 0x6A, 0x29, 0x0B, 0x79, 0xA4, 0xF9, 0x17,
+0x8E, 0x05, 0xB4, 0xF6, 0x48, 0x0F, 0x4A, 0x75, 0x82, 0x91, 0x95, 0xE6, 0xBD, 0xD3, 0x50, 0x25,
+0x1D, 0x6F, 0x1E, 0xD1, 0xB3, 0x57, 0x43, 0xDB, 0x02, 0x1C, 0x38, 0x31, 0x6D, 0x43, 0xF4, 0xA7,
+0x54, 0x7D, 0xE1, 0x2F, 0x82, 0x2B, 0x20, 0x52, 0x3C, 0x2C, 0x7C, 0xD3, 0x95, 0x85, 0x2D, 0x39,
+0x11, 0x5C, 0x5F, 0x5A, 0xF5, 0x4B, 0x4D, 0x08, 0xEB, 0x7F, 0x02, 0xCC, 0x22, 0x2A, 0x9C, 0x3E,
+0xF6, 0xB1, 0xB4, 0xAF, 0xA3, 0xBB, 0x80, 0x9E, 0xFD, 0xA3, 0x78, 0x30, 0x56, 0x50, 0xA5, 0x0D,
+0xD2, 0x29, 0xDD, 0x67, 0x0B, 0xCD, 0x2E, 0x8F, 0x79, 0x3B, 0x36, 0x59, 0x43, 0x74, 0x9A, 0x1D,
+0x56, 0x33, 0xCC, 0x04, 0x92, 0x3A, 0x01, 0x3B, 0x05, 0x51, 0xA8, 0xD0, 0x01, 0x12, 0x3E, 0xDD,
+0x40, 0x4D, 0x80, 0xC6, 0x78, 0xC8, 0xC6, 0xF7, 0x2D, 0x7F, 0x87, 0x10, 0x27, 0x97, 0x9D, 0xAB,
+0x32, 0xB7, 0xA2, 0x0A, 0x12, 0x32, 0x0D, 0x53, 0x40, 0x5C, 0x7D, 0x96, 0x27, 0x43, 0x8D, 0x96,
+0xD4, 0x9E, 0xED, 0xAE, 0x51, 0x83, 0x3E, 0xEA, 0x8F, 0x92, 0x1A, 0x7D, 0x4D, 0xF7, 0x16, 0xE0,
+0x41, 0x85, 0x54, 0x8F, 0x29, 0x36, 0xA0, 0x6E, 0x34, 0x54, 0x30, 0x2D, 0x2A, 0xD8, 0x80, 0x7E,
+0x90, 0x7F, 0x24, 0xA1, 0xC2, 0xD2, 0x32, 0xA6, 0x45, 0x11, 0xFF, 0x42, 0x32, 0x8C, 0x1E, 0x2F,
+0x15, 0x8F, 0x97, 0x04, 0x18, 0xE9, 0x76, 0xB6, 0x71, 0xAD, 0x36, 0x16, 0x33, 0x61, 0xFE, 0x41,
+0xD4, 0x10, 0x8C, 0x94, 0xC9, 0xC3, 0x30, 0x2F, 0x4A, 0xD7, 0x33, 0xEF, 0xBF, 0x8D, 0x68, 0x11,
+0xFD, 0x8C, 0xF5, 0xB2, 0x31, 0xD2, 0x5A, 0x47, 0xB0, 0xB8, 0xF7, 0x56, 0x7F, 0x17, 0x8B, 0x0E,
+0x07, 0x68, 0x5B, 0x6D, 0xDD, 0xCA, 0xD3, 0x58, 0xBF, 0xAD, 0x13, 0x32, 0x53, 0x55, 0x81, 0x7D,
+0x7B, 0x18, 0xB6, 0x1D, 0xB7, 0x61, 0x7D, 0xB2, 0xE4, 0x7E, 0x0D, 0x67, 0x18, 0x56, 0xD1, 0x2A,
+0xEA, 0xF5, 0x50, 0x5B, 0xED, 0x4A, 0x2D, 0x54, 0x09, 0x9C, 0x63, 0xD8, 0xAE, 0x65, 0xA7, 0x38,
+0x9F, 0x4C, 0xE4, 0xA5, 0xD8, 0xD0, 0x2A, 0x5E, 0x56, 0x82, 0x3A, 0xCC, 0xD1, 0x77, 0x2C, 0x7B,
+0xD9, 0x09, 0xB3, 0x5B, 0x10, 0x2E, 0x0F, 0xF2, 0xCB, 0xE8, 0x29, 0xF2, 0x8F, 0x77, 0x92, 0xB7,
+0x54, 0xEC, 0x08, 0xC4, 0xBB, 0x76, 0x41, 0x4E, 0x49, 0x08, 0x56, 0x47, 0x7F, 0xFB, 0x4A, 0x70,
+0x7E, 0xF7, 0x56, 0x74, 0x10, 0xC1, 0x24, 0x0E, 0x44, 0x82, 0xCD, 0x3F, 0x38, 0xD0, 0x26, 0xF3,
+0xEF, 0x37, 0x89, 0x5A, 0xF8, 0xE5, 0xF2, 0x30, 0x85, 0xE8, 0xF9, 0x5C, 0x73, 0x2B, 0xAC, 0x6F,
+0x6C, 0x9F, 0x76, 0xA6, 0x28, 0x11, 0x77, 0x30, 0x0F, 0x33, 0x24, 0x2F, 0xCF, 0xC7, 0x73, 0xFC,
+0xC1, 0x7F, 0xA7, 0x42, 0xEF, 0xCE, 0xCA, 0x64, 0xC9, 0xEE, 0x77, 0xF3, 0x91, 0x0A, 0xAB, 0xC0,
+0x5C, 0x0D, 0xA3, 0x9F, 0xB7, 0xE4, 0x7E, 0xFC, 0xB0, 0x86, 0x8B, 0xAC, 0xC0, 0x36, 0x07, 0x12,
+0xD7, 0x42, 0x2B, 0x71, 0x9E, 0x40, 0xE3, 0xAF, 0xCE, 0xBD, 0xE1, 0x24, 0x1D, 0x23, 0xDD, 0x99,
+0x7E, 0x75, 0x88, 0x8B, 0x18, 0x5B, 0x81, 0x73, 0x77, 0x82, 0x42, 0x8A, 0x53, 0x9D, 0xA6, 0x91,
+0x61, 0x24, 0x1E, 0xF8, 0x22, 0x23, 0x4B, 0x67, 0x16, 0x2C, 0xAE, 0xC0, 0x3B, 0xE4, 0xB6, 0x11,
+0x95, 0x69, 0x50, 0xBD, 0x5B, 0x93, 0x6E, 0xEE, 0xDD, 0x56, 0x59, 0xCB, 0x4B, 0xAD, 0x98, 0x84,
+0x6C, 0x3D, 0x2E, 0xBC, 0x5D, 0x30, 0x8A, 0x14, 0x4D, 0x0B, 0x54, 0x9F, 0x46, 0x79, 0xEE, 0xAC,
+0x0E, 0x9A, 0xAB, 0xC3, 0x02, 0x59, 0xF8, 0xC9, 0x28, 0x87, 0x4B, 0xF5, 0xA0, 0x11, 0x27, 0x33,
+0xCF, 0xCC, 0xAA, 0x32, 0xDF, 0x6D, 0x6A, 0x74, 0xF4, 0x67, 0x7B, 0x3A, 0xDC, 0x3F, 0x48, 0x17,
+0xC4, 0x30, 0x45, 0xC2, 0x32, 0x86, 0x7B, 0xA6, 0x02, 0xFD, 0xC5, 0x7F, 0xDE, 0xF0, 0x7C, 0x86,
+0xF7, 0xDE, 0xF9, 0x49, 0xF5, 0x74, 0xA7, 0xA0, 0xDF, 0xA0, 0xF2, 0x62, 0x92, 0xFE, 0x6F, 0x37,
+0x87, 0xA5, 0x4E, 0x29, 0x63, 0x3A, 0x7C, 0x59, 0x67, 0xFD, 0x0E, 0x84, 0x3A, 0x5D, 0x73, 0x6E,
+0x88, 0x13, 0xCD, 0x7A, 0x71, 0x63, 0x78, 0xA9, 0x25, 0x5B, 0x51, 0xA8, 0x12, 0x47, 0x74, 0xC4,
+0xC6, 0x96, 0x73, 0x06, 0x16, 0xC1, 0x83, 0x74, 0xF7, 0xED, 0xC2, 0x35, 0x08, 0xA5, 0xB0, 0x4B,
+0x17, 0xB0, 0xED, 0x72, 0x24, 0x59, 0xBC, 0xC5, 0xA4, 0x4A, 0x2A, 0xBE, 0xD8, 0x25, 0x96, 0x83,
+0x41, 0xB3, 0x7C, 0xD7, 0x29, 0x12, 0xF9, 0xDE, 0xA5, 0xD4, 0xB8, 0x2F, 0x16, 0x7B, 0x12, 0x4D,
+0xED, 0xFE, 0x1A, 0x92, 0xE9, 0x42, 0x1C, 0x1F, 0x13, 0xDB, 0x05, 0x24, 0x1D, 0xC4, 0x00, 0xC2,
+0xC2, 0x6B, 0x87, 0xB1, 0xCB, 0x30, 0x50, 0x70, 0xDC, 0x14, 0x2D, 0x80, 0x97, 0xED, 0x81, 0x40,
+0x15, 0xA0, 0x3A, 0xC0, 0xF1, 0xCD, 0xB0, 0x72, 0x7F, 0x2D, 0xD4, 0x81, 0x88, 0xD8, 0xB9, 0x1E,
+0x9A, 0xE9, 0x3F, 0x1F, 0x9A, 0x22, 0x8F, 0x23, 0xE4, 0x73, 0x6F, 0x82, 0xC9, 0x8B, 0xCA, 0x23,
+0xA3, 0x3C, 0xEC, 0x43, 0xFF, 0xED, 0x41, 0xFB, 0xA0, 0x68, 0x58, 0x4B, 0x1E, 0x1D, 0x97, 0x0B,
+0xF5, 0x5E, 0xEE, 0x20, 0x09, 0x17, 0x02, 0x7C, 0x0C, 0x60, 0x66, 0x13, 0x46, 0x92, 0xCC, 0x91,
+0xC7, 0xA6, 0x83, 0x33, 0xB7, 0x8B, 0xFD, 0x39, 0xFD, 0xBA, 0xA5, 0x31, 0x7E, 0x85, 0x77, 0xFE,
+0x13, 0x2F, 0xBD, 0x9B, 0xC4, 0x9B, 0xA1, 0x6E, 0x8E, 0xEB, 0xA5, 0xFF, 0x7F, 0x96, 0x52, 0x5C,
+0xEC, 0xDE, 0x6D, 0x08, 0x6B, 0x11, 0x5E, 0x24, 0xF1, 0x28, 0xA6, 0xFC, 0x79, 0x5D, 0x57, 0x9B,
+0xD5, 0xAD, 0x74, 0xA0, 0x4E, 0x1E, 0x91, 0x22, 0x53, 0x9A, 0x0E, 0x85, 0x19, 0x47, 0x91, 0xCE,
+0x02, 0xCB, 0x96, 0xEB, 0x58, 0xB9, 0x1A, 0x24, 0x75, 0xDD, 0x26, 0x9F, 0x28, 0xD6, 0x7F, 0x33,
+0xF3, 0xF1, 0xB6, 0x56, 0x6C, 0xA3, 0x0A, 0xE6, 0x30, 0x46, 0x6C, 0x5E, 0xEF, 0x37, 0x49, 0xEC,
+0xAF, 0xCD, 0xFC, 0x85, 0x5F, 0xA4, 0x9F, 0x40, 0x51, 0x9C, 0xBC, 0xCA, 0x50, 0xC5, 0x5C, 0xD6,
+0x9C, 0x72, 0xE0, 0x9E, 0xE0, 0x7F, 0xC0, 0x73, 0xF7, 0xE2, 0x27, 0xE4, 0x2D, 0x1E, 0xF5, 0xE2,
+0x74, 0x8A, 0x5C, 0xA3, 0xFA, 0x08, 0x83, 0x51, 0x7B, 0xE2, 0x2B, 0x96, 0xF3, 0xF4, 0x5D, 0x93,
+0x41, 0x53, 0xDC, 0xE5, 0xBC, 0xA6, 0x6B, 0x44, 0x2C, 0xF4, 0xF7, 0x2B, 0x8F, 0xBC, 0x5B, 0x2E,
+0xBE, 0x57, 0xB9, 0xF1, 0x4C, 0xA3, 0x9F, 0xFB, 0x1B, 0xCB, 0xAD, 0x12, 0x04, 0xB6, 0xE3, 0x1C,
+0xCC, 0x92, 0x83, 0x8F, 0xEE, 0x96, 0xAB, 0xEC, 0x60, 0xF4, 0x6F, 0x6E, 0x58, 0x70, 0xF7, 0xD1,
+0x2E, 0x6D, 0x8E, 0x28, 0x48, 0x3D, 0x67, 0x46, 0x13, 0x0E, 0xB8, 0xCE, 0x22, 0xCC, 0xBF, 0xB7,
+0xD3, 0xAF, 0xE9, 0xA7, 0xAD, 0xC5, 0x12, 0x21, 0x22, 0x5E, 0xF0, 0xD8, 0x24, 0x5E, 0x79, 0x2E,
+0xD4, 0x09, 0x7B, 0x10, 0x0E, 0x81, 0xBB, 0x27, 0x19, 0xAF, 0x10, 0x3A, 0xED, 0xE6, 0xC1, 0x3D,
+0x1A, 0xE8, 0x06, 0xD1, 0xC3, 0xA8, 0xD6, 0x74, 0xFD, 0xD5, 0x85, 0x0B, 0x26, 0xDD, 0x3D, 0x98,
+0xFE, 0x5C, 0x65, 0x15, 0xA7, 0x2B, 0xD1, 0x11, 0x8E, 0xED, 0x96, 0x5C, 0x72, 0xA5, 0x4C, 0xDC,
+0x0D, 0xE3, 0xE2, 0x2A, 0x6A, 0xB1, 0x22, 0x1F, 0x92, 0x6B, 0x8E, 0x40, 0x8A, 0xBE, 0xA4, 0x48,
+0xF5, 0x2C, 0x1D, 0xC3, 0x20, 0x6A, 0x85, 0x28, 0x8C, 0x42, 0x71, 0xFD, 0x87, 0x96, 0x7F, 0x97,
+0x0D, 0x0D, 0xE4, 0x9F, 0x08, 0x65, 0x36, 0x54, 0xE8, 0xBB, 0xC2, 0xF8, 0x72, 0x9A, 0xC1, 0x9D,
+0xF1, 0xC5, 0xCC, 0xE4, 0x58, 0x48, 0xD3, 0x24, 0xFA, 0xAB, 0xB2, 0xF7, 0x4E, 0x16, 0xE0, 0x8A,
+0x9E, 0x0A, 0x12, 0xCC, 0x48, 0x9C, 0xB7, 0x4C, 0x73, 0x61, 0x1D, 0x84, 0x01, 0x0E, 0xAA, 0xED,
+0x23, 0x6F, 0x22, 0x7C, 0x69, 0xCD, 0x36, 0xC8, 0x5C, 0xA2, 0x64, 0xFC, 0x23, 0x32, 0x87, 0xBF,
+0xF3, 0x93, 0xBE, 0x67, 0x9E, 0x37, 0x1E, 0x15, 0x26, 0x20, 0x0D, 0xCD, 0xBB, 0xFD, 0x8A, 0x5E,
+0x3A, 0x6F, 0x8D, 0x2C, 0x71, 0x7C, 0x0B, 0x13, 0xC5, 0xC0, 0x04, 0x3B, 0x2E, 0x7D, 0xC2, 0xDC,
+0x8B, 0x61, 0x34, 0x83, 0x4E, 0x36, 0xA7, 0x33, 0x20, 0xA2, 0x6F, 0xF6, 0xE1, 0xCF, 0x26, 0xAB,
+0x5A, 0xF9, 0x79, 0xCD, 0x1E, 0xA8, 0x7E, 0x14, 0x72, 0xEB, 0xC8, 0x4A, 0x7F, 0xB8, 0x32, 0xBD,
+0xBE, 0xE0, 0x99, 0x25, 0xF5, 0x89, 0x8A, 0xFB, 0xD2, 0x4C, 0xED, 0xC2, 0xF6, 0xC2, 0x8B, 0xC7,
+0x5B, 0x7B, 0xC1, 0x0A, 0xE6, 0xD4, 0x08, 0x7F, 0x3C, 0x91, 0x45, 0x94, 0x0D, 0x57, 0x77, 0x7B,
+0x06, 0x48, 0xAD, 0x75, 0x95, 0x6D, 0xFC, 0x19, 0x02, 0xF6, 0xCE, 0x88, 0xD8, 0xA5, 0xB9, 0x63,
+0xE9, 0x78, 0x3A, 0x4F, 0x29, 0xED, 0xA0, 0x30, 0xE0, 0xA5, 0x16, 0xAC, 0xD2, 0x65, 0x3A, 0xC1,
+0xBC, 0x0D, 0x86, 0x63, 0x0C, 0x75, 0x1D, 0x53, 0x19, 0x19, 0xE6, 0x73, 0x3A, 0x2C, 0xDC, 0x6F,
+0x2C, 0xB1, 0x6B, 0x9F, 0x5B, 0x3B, 0xFA, 0xA9, 0xE8, 0xC8, 0x50, 0x0C, 0x5E, 0x51, 0x88, 0x0C,
+0x92, 0xDD, 0xC2, 0x38, 0xD0, 0x26, 0xD7, 0x22, 0x69, 0xD2, 0x3B, 0x38, 0x40, 0x32, 0x19, 0x44,
+0x98, 0x91, 0xAD, 0xD4, 0x0B, 0x81, 0x3F, 0x6D, 0x8E, 0xA9, 0x71, 0x2E, 0x86, 0xFF, 0x2C, 0xB2,
+0x5B, 0x13, 0x2E, 0x3D, 0x3A, 0xC1, 0xBF, 0xD3, 0xA0, 0xF4, 0x6A, 0x98, 0x09, 0x85, 0x73, 0xCD,
+0xA8, 0x7C, 0x10, 0xCD, 0x42, 0x05, 0x56, 0x1F, 0x7C, 0x6B, 0xF1, 0x07, 0xCB, 0xD4, 0x56, 0xB5,
+0x31, 0xC4, 0x7C, 0x94, 0xA5, 0x58, 0x6C, 0x2B, 0xDD, 0xB4, 0x7F, 0x40, 0x14, 0xB1, 0x96, 0x86,
+0x78, 0xD4, 0x8A, 0x92, 0x16, 0x96, 0x8A, 0x94, 0x2F, 0xCE, 0xA1, 0xDA, 0xD6, 0x1B, 0x97, 0x22,
+0xFA, 0x54, 0x7F, 0xAE, 0xD7, 0x14, 0x56, 0xF3, 0x54, 0xBD, 0x14, 0x84, 0x20, 0x4A, 0x71, 0x26,
+0x5D, 0x18, 0xB6, 0x01, 0xB6, 0x6A, 0xB5, 0x90, 0x06, 0x33, 0x02, 0xF0, 0xD0, 0x18, 0x44, 0xA3,
+0x60, 0xB3, 0x3D, 0xB7, 0xDC, 0x03, 0x56, 0x60, 0x0A, 0x50, 0x07, 0x75, 0xAE, 0x15, 0xA2, 0x0F,
+0xBB, 0x59, 0x77, 0x86, 0x26, 0x5C, 0x39, 0xA6, 0x2E, 0x4B, 0x5A, 0x09, 0xA7, 0x7A, 0xD6, 0xB6,
+0xBB, 0x25, 0x2D, 0x6D, 0x1E, 0x45, 0x65, 0x54, 0xA2, 0xE5, 0xC5, 0xC8, 0x13, 0xF9, 0x46, 0xCA,
+0x11, 0x6A, 0x5F, 0x58, 0x29, 0x14, 0x29, 0x66, 0x96, 0x6B, 0xC6, 0xA1, 0x92, 0x1C, 0xA0, 0xF6,
+0x0A, 0xF0, 0x37, 0xAA, 0x7E, 0xAA, 0x50, 0x30, 0xCE, 0x35, 0xE4, 0x3D, 0xFC, 0x3F, 0x90, 0xAC,
+0xE1, 0x10, 0x6A, 0x41, 0xD3, 0x18, 0x6C, 0xA0, 0x38, 0xB2, 0xF5, 0xF4, 0xCF, 0x0D, 0x02, 0xB1,
+0x12, 0xB3, 0x92, 0xC2, 0x46, 0x44, 0x8C, 0xCA, 0x26, 0x12, 0x54, 0x16, 0xC5, 0x06, 0x81, 0x5B,
+0x52, 0x34, 0xDE, 0x18, 0x53, 0x6E, 0x8A, 0x32, 0x31, 0x7B, 0xE7, 0xCD, 0x5F, 0x62, 0x25, 0xF5,
+0x1A, 0x55, 0x79, 0x83, 0xE8, 0x41, 0x4D, 0x8F, 0x88, 0x3F, 0xC3, 0x1D, 0xF0, 0x28, 0x93, 0x54,
+0x9C, 0x6D, 0xA7, 0x4F, 0x23, 0xF7, 0xEB, 0x91, 0x6B, 0x3A, 0x1D, 0xB8, 0xE1, 0xA5, 0x94, 0xC5,
+0x55, 0x1F, 0xA8, 0x99, 0x72, 0xEF, 0x16, 0x84, 0xB3, 0xEF, 0xA7, 0x89, 0x25, 0xF5, 0x58, 0x1D,
+0x2C, 0xBC, 0xE1, 0xA0, 0x8A, 0x88, 0x8C, 0x67, 0xEF, 0xA1, 0x86, 0x9D, 0x66, 0x9F, 0xD2, 0xAB,
+0x70, 0x88, 0x72, 0x18, 0x62, 0xC0, 0xFC, 0x03, 0x38, 0x09, 0x8B, 0x2B, 0x8F, 0x78, 0x57, 0xCA,
+0x9D, 0x64, 0x6B, 0x3D, 0x04, 0xFA, 0x15, 0x13, 0x57, 0xA2, 0xDC, 0xEC, 0xF2, 0x14, 0xBE, 0xEE,
+0xD6, 0x64, 0x29, 0x33, 0xC7, 0x8B, 0xD9, 0x4D, 0x3B, 0xF4, 0x3A, 0xBB, 0xA1, 0xF0, 0x9B, 0x47,
+0xD6, 0xFF, 0x50, 0xC5, 0xD1, 0xD6, 0x8C, 0xF6, 0xD3, 0xF6, 0xBC, 0x22, 0xAE, 0x33, 0x80, 0x89,
+0xF9, 0x8F, 0x91, 0x95, 0x1A, 0x37, 0x5D, 0x9D, 0xC3, 0xA9, 0x01, 0x8D, 0x5E, 0xCC, 0x61, 0x08,
+0xC8, 0x0D, 0x64, 0x90, 0xFF, 0xF0, 0x46, 0xB9, 0xF2, 0xC8, 0x88, 0x12, 0xA8, 0x1C, 0xD7, 0xC8,
+0x1D, 0xEE, 0xA8, 0xA5, 0x75, 0xA7, 0xB9, 0x74, 0x66, 0x50, 0xA6, 0xA3, 0x84, 0x60, 0x9C, 0x7F,
+0xA3, 0x0F, 0xC8, 0x6C, 0xBB, 0x6E, 0xA5, 0x6A, 0x1D, 0x73, 0xFA, 0x6F, 0x24, 0x5F, 0x00, 0x24,
+0xC1, 0x93, 0xF2, 0x2D, 0x28, 0x50, 0xE3, 0xEA, 0xFA, 0x21, 0x6F, 0x25, 0x2E, 0x2F, 0xE5, 0xB9,
+0x65, 0xC7, 0x5B, 0xA1, 0xE1, 0xE7, 0x0E, 0x7E, 0x11, 0x53, 0x1E, 0x31, 0x37, 0xB2, 0xE7, 0x4F,
+0x7C, 0xF2, 0x19, 0x7C, 0x46, 0xB1, 0xF0, 0xD0, 0x2F, 0x3E, 0xF6, 0x9E, 0xE3, 0xA1, 0xDB, 0x8B,
+0xD9, 0xBF, 0x16, 0x7F, 0x0D, 0x85, 0xED, 0x07, 0xD6, 0x9C, 0x67, 0xD5, 0xB1, 0xD4, 0xA4, 0x12,
+0xF9, 0x08, 0x6A, 0x1A, 0x98, 0xA6, 0xC2, 0xCB, 0x34, 0x46, 0x6F, 0x66, 0x06, 0x7B, 0xC6, 0xB3,
+0x51, 0x7D, 0x1F, 0x16, 0xD4, 0x65, 0x6B, 0x2F, 0xCC, 0xF5, 0x5B, 0x8B, 0x60, 0x3A, 0x3F, 0xF2,
+0x0B, 0x4F, 0xB6, 0xF2, 0x2F, 0x94, 0xED, 0xCF, 0x4A, 0x31, 0xA7, 0x26, 0x8F, 0x39, 0x03, 0x26,
+0x0F, 0xBC, 0x78, 0x40, 0x15, 0x79, 0x24, 0x69, 0x45, 0xBA, 0x8A, 0x28, 0x4F, 0x71, 0x56, 0xD4,
+0x84, 0xD2, 0x98, 0x18, 0x36, 0x17, 0xE9, 0x72, 0x20, 0x34, 0x4B, 0x59, 0x40, 0x7A, 0x32, 0xEC,
+0xDF, 0x64, 0x8E, 0x2E, 0x18, 0x9D, 0x66, 0x54, 0xC4, 0xB8, 0x9C, 0xA2, 0x19, 0x19, 0xCC, 0x85,
+0xAA, 0x4F, 0x57, 0x54, 0x85, 0x7E, 0x5D, 0x9B, 0xFE, 0x90, 0xC2, 0xA1, 0x4D, 0x5C, 0x84, 0xFC,
+0x57, 0x8C, 0x61, 0x2D, 0xB0, 0xD4, 0xE6, 0x44, 0x4B, 0x5E, 0xD6, 0xEE, 0x72, 0x6F, 0xF0, 0x47,
+0x9A, 0xD4, 0xD0, 0xDA, 0xA5, 0xB9, 0x83, 0x27, 0x2E, 0xB2, 0x9C, 0x13, 0xF8, 0xB5, 0xDA, 0xD4,
+0x6B, 0xFE, 0x03, 0x23, 0x2E, 0xDB, 0x60, 0x72, 0xCC, 0x65, 0xB0, 0x44, 0xF7, 0xFE, 0x03, 0xCD,
+0x73, 0xB2, 0x36, 0x85, 0xE8, 0x1E, 0xB1, 0xC8, 0xFC, 0x13, 0x05, 0x2C, 0x3F, 0x78, 0x2C, 0xA9,
+0x1A, 0x06, 0xFB, 0xF4, 0x03, 0x39, 0x29, 0xEC, 0x5A, 0x85, 0x45, 0x69, 0x25, 0x21, 0xCE, 0x55,
+0x67, 0x69, 0x5A, 0x05, 0x76, 0xFE, 0x2F, 0x37, 0x66, 0x45, 0xA9, 0xCD, 0x4D, 0xAB, 0xE5, 0x2B,
+0xFA, 0xE1, 0x22, 0x17, 0x91, 0x7D, 0xD3, 0xF4, 0x3E, 0xC5, 0xFF, 0x32, 0x77, 0xFE, 0xE4, 0x9F,
+0x0A, 0xB7, 0x5C, 0xBF, 0x93, 0x69, 0x36, 0x3B, 0xBC, 0x46, 0xE2, 0xCA, 0xB5, 0xDF, 0x6F, 0x1B,
+0xE9, 0xC2, 0x4E, 0xC8, 0xFE, 0x6B, 0xEF, 0x71, 0x4C, 0x1D, 0x3B, 0xBB, 0xF4, 0x5A, 0xEB, 0xF8,
+0x99, 0xC8, 0x51, 0x6A, 0xC0, 0x85, 0x4E, 0x5A, 0x31, 0xBB, 0xBC, 0x29, 0x2B, 0x14, 0xBE, 0x00,
+0x3D, 0x9B, 0x1B, 0x03, 0xDB, 0x27, 0xA0, 0x2C, 0x5E, 0xAE, 0x1A, 0x00, 0xC1, 0x6F, 0xE9, 0x65,
+0x0D, 0x77, 0x53, 0xB7, 0x70, 0xD0, 0xB4, 0x1F, 0x29, 0xE2, 0xCD, 0x45, 0x7F, 0xC8, 0x25, 0xBF,
+0xBD, 0x62, 0xB0, 0x5A, 0x2A, 0x37, 0x10, 0x97, 0x9F, 0x57, 0x26, 0xE7, 0x51, 0xE1, 0x82, 0x93,
+0xC3, 0x99, 0xDE, 0x86, 0x04, 0x64, 0xFF, 0xF2, 0xA4, 0x1E, 0xB2, 0x59, 0xB2, 0x45, 0xBD, 0x46,
+0xE0, 0xC0, 0x25, 0x97, 0xC0, 0x60, 0xA1, 0x9E, 0xF3, 0x0A, 0x02, 0xB1, 0x9E, 0x76, 0xC8, 0x97,
+0x9B, 0x29, 0x27, 0xE1, 0x81, 0xF8, 0x30, 0xF9, 0x65, 0x8A, 0x60, 0x1B, 0x18, 0x85, 0xC5, 0x5B,
+0x15, 0x57, 0x82, 0xA9, 0xAE, 0x06, 0xE1, 0xBD, 0x87, 0x68, 0x42, 0x6C, 0x9A, 0xF3, 0x13, 0xB9,
+0xAC, 0xB9, 0x1A, 0xCD, 0x2B, 0xED, 0xDD, 0x77, 0x9B, 0xAF, 0xE4, 0xD4, 0xDB, 0x05, 0xC5, 0xDD,
+0x1F, 0xA2, 0xEE, 0x0B, 0x63, 0x87, 0x0D, 0x2E, 0x2D, 0x47, 0x62, 0x24, 0x8D, 0x42, 0x04, 0x2D,
+0xC0, 0xA8, 0xFC, 0x77, 0x1B, 0x8C, 0x37, 0xB9, 0x7F, 0x79, 0x41, 0x40, 0x51, 0xDC, 0xD3, 0xDB,
+0xD5, 0x8E, 0xDB, 0xBE, 0x7B, 0xF1, 0x27, 0x0F, 0xC4, 0x4A, 0xBA, 0x7D, 0x87, 0xBF, 0xE5, 0xF4,
+0xEB, 0x74, 0xA3, 0xB0, 0x2D, 0x96, 0xA4, 0xF6, 0x78, 0x75, 0x14, 0xDF, 0xF0, 0x0F, 0x7E, 0x10,
+0x09, 0xC7, 0xDE, 0x8E, 0xB5, 0x4C, 0xB3, 0x31, 0xAF, 0x9B, 0x3D, 0xC9, 0x60, 0xAB, 0xBC, 0x76,
+0x10, 0xDC, 0x86, 0xAC, 0xB1, 0xED, 0xBC, 0x18, 0x9C, 0xB1, 0xDF, 0x96, 0x6D, 0x5C, 0xB8, 0xCF,
+0xA3, 0x92, 0x8C, 0x5E, 0xD6, 0xB8, 0x6F, 0x6E, 0xBF, 0x82, 0xDF, 0x1F, 0xA3, 0xA8, 0x7E, 0x3C,
+0xE1, 0xFB, 0x17, 0xEB, 0xD3, 0x24, 0xAC, 0x60, 0x4F, 0x8D, 0x08, 0x4C, 0xAF, 0x8C, 0xB9, 0xD3,
+0x4A, 0x92, 0x2C, 0xDC, 0x76, 0x74, 0x21, 0x59, 0xA5, 0xC7, 0x60, 0xC3, 0xBD, 0x9E, 0x28, 0xCA,
+0x8D, 0xAA, 0x00, 0xE3, 0x43, 0xF2, 0x45, 0x3F, 0x61, 0x2F, 0xD3, 0xED, 0x2F, 0x5C, 0x9F, 0x64,
+0xE9, 0xAD, 0x61, 0x4E, 0x6E, 0x67, 0xF2, 0x1C, 0xDE, 0x59, 0x66, 0x26, 0x76, 0x3C, 0xCF, 0x05,
+0xC3, 0x08, 0x6F, 0xBF, 0x4D, 0x96, 0xA7, 0x58, 0xC7, 0x7C, 0xD6, 0xD6, 0xE8, 0x9F, 0x0A, 0xB9,
+0x98, 0x87, 0x08, 0x92, 0x44, 0xD4, 0xC3, 0x2D, 0xE7, 0x1C, 0xDC, 0xE8, 0xB5, 0xF3, 0xDC, 0x9B,
+0x87, 0xD5, 0xA7, 0xAA, 0xC1, 0x5E, 0x94, 0x1A, 0x13, 0x98, 0x67, 0x36, 0x3D, 0x93, 0x22, 0xD6,
+0xE4, 0xFB, 0x9C, 0x1E, 0x6A, 0xE6, 0x09, 0x27, 0xA8, 0x8C, 0x8E, 0xD9, 0xE2, 0xA8, 0xB7, 0x7D,
+0x46, 0x46, 0x1B, 0xC4, 0x66, 0xE8, 0xB4, 0xFD, 0x2D, 0x95, 0x89, 0xB7, 0x2E, 0x0E, 0x94, 0x8D,
+0x35, 0x93, 0xAC, 0xDC, 0x3A, 0x00, 0x00, 0x00, 0x88, 0x06, 0x44, 0xC6, 0x67, 0x07, 0xE3, 0xF1,
+0x00, 0x01, 0xD2, 0x2D, 0xF0, 0xE8, 0x01, 0x00, 0xB2, 0x24, 0x7E, 0x9D, 0xB1, 0xC4, 0x67, 0xFB,
+0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x59, 0x5A};
diff --git a/drivers/qtn/qdrv/qdrv_netdebug_checksum.h b/drivers/qtn/qdrv/qdrv_netdebug_checksum.h
index 6ed2cdf..5029bfd 100644
--- a/drivers/qtn/qdrv/qdrv_netdebug_checksum.h
+++ b/drivers/qtn/qdrv/qdrv_netdebug_checksum.h
@@ -1,3 +1,3 @@
 /* Automatically generated file.  Do not edit. */
-#define QDRV_NETDEBUG_CHECKSUM 0x72e35823
-#define QDRV_BUILDDATE 1479230732UL
+#define QDRV_NETDEBUG_CHECKSUM 0xe92085e7
+#define QDRV_BUILDDATE 1482513830UL
diff --git a/drivers/qtn/qdrv/qdrv_pktlogger.c b/drivers/qtn/qdrv/qdrv_pktlogger.c
index 24f3ceb..db8c8ab1 100644
--- a/drivers/qtn/qdrv/qdrv_pktlogger.c
+++ b/drivers/qtn/qdrv/qdrv_pktlogger.c
@@ -1952,8 +1952,8 @@
 	iphdr->frag_off = htons(frag_off);
 	iphdr->ttl = PKTLOGGER_IP_TTL;
 	iphdr->protocol = IPPROTO_UDP;
-	iphdr->saddr = g_pktlogger_p->src_ip;
-	iphdr->daddr = g_pktlogger_p->dst_ip;
+	put_unaligned_be32(g_pktlogger_p->src_ip, &iphdr->saddr);
+	put_unaligned_be32(g_pktlogger_p->dst_ip, &iphdr->daddr);
 	iphdr->check = ip_fast_csum((unsigned char *)iphdr, iphdr->ihl);
 }
 
diff --git a/drivers/qtn/qdrv/qdrv_rx.c b/drivers/qtn/qdrv/qdrv_rx.c
index 09bfb8c..db348b4 100644
--- a/drivers/qtn/qdrv/qdrv_rx.c
+++ b/drivers/qtn/qdrv/qdrv_rx.c
@@ -1759,8 +1759,8 @@
 	if (br_fdb_get_hook != NULL && br_port != NULL) {
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
-		if (unlikely( (!ether_addr_equal(eh->ether_dhost, skb->dev->dev_addr)) ||
-				(!ether_addr_equal(eh->ether_dhost, br_port->dev->dev_addr)))) {
+		if (unlikely( (ether_addr_equal(eh->ether_dhost, skb->dev->dev_addr)) ||
+				(ether_addr_equal(eh->ether_dhost, br_port->dev->dev_addr)))) {
 #else
 		if (unlikely( (!compare_ether_addr(eh->ether_dhost, skb->dev->dev_addr)) ||
 				(!compare_ether_addr(eh->ether_dhost, dev->br_port->dev->dev_addr)))) {
@@ -1786,7 +1786,7 @@
 
 	if (ETHER_IS_MULTICAST(eh->ether_dhost)) {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
-		if (!ether_addr_equal(eh->ether_dhost, vap->iv_dev->broadcast)) {
+		if (ether_addr_equal(eh->ether_dhost, vap->iv_dev->broadcast)) {
 #else
 		if (!compare_ether_addr(eh->ether_dhost, vap->iv_dev->broadcast)) {
 #endif
diff --git a/drivers/qtn/qdrv/qdrv_vap.h b/drivers/qtn/qdrv/qdrv_vap.h
index 12a05bc..144358b 100644
--- a/drivers/qtn/qdrv/qdrv_vap.h
+++ b/drivers/qtn/qdrv/qdrv_vap.h
@@ -24,6 +24,9 @@
 /* Include the WLAN 802.11 layer here */
 #include <linux/skbuff.h>
 #include <linux/netdevice.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
+#include <linux/net/bridge/br_public.h>
+#endif
 #include <net80211/if_media.h>
 #include <net80211/ieee80211_var.h>
 #include "qdrv_mac.h"
diff --git a/drivers/qtn/qdrv/qdrv_wlan.c b/drivers/qtn/qdrv/qdrv_wlan.c
index 5780557..5b1c60b 100644
--- a/drivers/qtn/qdrv/qdrv_wlan.c
+++ b/drivers/qtn/qdrv/qdrv_wlan.c
@@ -8214,28 +8214,29 @@
 	seq_printf(s, "  rx_coex_bw_assoc          : %u\n", qw->rx_stats.rx_coex_bw_assoc);
 	seq_printf(s, "  rx_coex_bw_scan           : %u\n", qw->rx_stats.rx_coex_bw_scan);
 
-	seq_printf(s, "Recycling Statistics\n");
-	seq_printf(s, "  qdrv_free_pass            : %d\n", recycle_list->stats_qdrv.free_recycle_pass);
-	seq_printf(s, "  qdrv_free_fail            : %d\n", recycle_list->stats_qdrv.free_recycle_fail);
-	seq_printf(s, "  qdrv_free_fail_undersize  : %d\n", recycle_list->stats_qdrv.free_recycle_fail_undersize);
-	seq_printf(s, "  qdrv_alloc_recycle        : %d\n", recycle_list->stats_qdrv.alloc_recycle);
-	seq_printf(s, "  qdrv_alloc_kmalloc        : %d\n", recycle_list->stats_qdrv.alloc_kmalloc);
-	seq_printf(s, "  eth_free_pass             : %d\n", recycle_list->stats_eth.free_recycle_pass);
-	seq_printf(s, "  eth_free_fail             : %d\n", recycle_list->stats_eth.free_recycle_fail);
-	seq_printf(s, "  eth_free_fail_undersize   : %d\n", recycle_list->stats_eth.free_recycle_fail_undersize);
-	seq_printf(s, "  eth_alloc_recycle         : %d\n", recycle_list->stats_eth.alloc_recycle);
-	seq_printf(s, "  eth_alloc_kmalloc         : %d\n", recycle_list->stats_eth.alloc_kmalloc);
+	if (recycle_list) {
+		seq_printf(s, "Recycling Statistics\n");
+		seq_printf(s, "  qdrv_free_pass            : %d\n", recycle_list->stats_qdrv.free_recycle_pass);
+		seq_printf(s, "  qdrv_free_fail            : %d\n", recycle_list->stats_qdrv.free_recycle_fail);
+		seq_printf(s, "  qdrv_free_fail_undersize  : %d\n", recycle_list->stats_qdrv.free_recycle_fail_undersize);
+		seq_printf(s, "  qdrv_alloc_recycle        : %d\n", recycle_list->stats_qdrv.alloc_recycle);
+		seq_printf(s, "  qdrv_alloc_kmalloc        : %d\n", recycle_list->stats_qdrv.alloc_kmalloc);
+		seq_printf(s, "  eth_free_pass             : %d\n", recycle_list->stats_eth.free_recycle_pass);
+		seq_printf(s, "  eth_free_fail             : %d\n", recycle_list->stats_eth.free_recycle_fail);
+		seq_printf(s, "  eth_free_fail_undersize   : %d\n", recycle_list->stats_eth.free_recycle_fail_undersize);
+		seq_printf(s, "  eth_alloc_recycle         : %d\n", recycle_list->stats_eth.alloc_recycle);
+		seq_printf(s, "  eth_alloc_kmalloc         : %d\n", recycle_list->stats_eth.alloc_kmalloc);
 #if defined(CONFIG_RUBY_PCIE_HOST) || defined(CONFIG_RUBY_PCIE_TARGET)
-	seq_printf(s, "  pcie_free_pass             : %d\n", recycle_list->stats_pcie.free_recycle_pass);
-	seq_printf(s, "  pcie_free_fail             : %d\n", recycle_list->stats_pcie.free_recycle_fail);
-	seq_printf(s, "  pcie_free_fail_undersize   : %d\n", recycle_list->stats_pcie.free_recycle_fail_undersize);
-	seq_printf(s, "  pcie_alloc_recycle         : %d\n", recycle_list->stats_pcie.alloc_recycle);
-	seq_printf(s, "  pcie_alloc_kmalloc         : %d\n", recycle_list->stats_pcie.alloc_kmalloc);
+		seq_printf(s, "  pcie_free_pass             : %d\n", recycle_list->stats_pcie.free_recycle_pass);
+		seq_printf(s, "  pcie_free_fail             : %d\n", recycle_list->stats_pcie.free_recycle_fail);
+		seq_printf(s, "  pcie_free_fail_undersize   : %d\n", recycle_list->stats_pcie.free_recycle_fail_undersize);
+		seq_printf(s, "  pcie_alloc_recycle         : %d\n", recycle_list->stats_pcie.alloc_recycle);
+		seq_printf(s, "  pcie_alloc_kmalloc         : %d\n", recycle_list->stats_pcie.alloc_kmalloc);
 #endif
-	seq_printf(s, "  kfree_free_pass           : %d\n", recycle_list->stats_kfree.free_recycle_pass);
-	seq_printf(s, "  kfree_free_fail           : %d\n", recycle_list->stats_kfree.free_recycle_fail);
-	seq_printf(s, "  kfree_free_fail_undersize : %d\n", recycle_list->stats_kfree.free_recycle_fail_undersize);
-
+		seq_printf(s, "  kfree_free_pass           : %d\n", recycle_list->stats_kfree.free_recycle_pass);
+		seq_printf(s, "  kfree_free_fail           : %d\n", recycle_list->stats_kfree.free_recycle_fail);
+		seq_printf(s, "  kfree_free_fail_undersize : %d\n", recycle_list->stats_kfree.free_recycle_fail_undersize);
+	}
 	seq_printf(s, "BF Statistics\n");
 	for (i = 0; i < QTN_STATS_NUM_BF_SLOTS; i++) {
 		seq_printf(s, "  slot %u success            : %d\n", i, qw->rx_stats.rx_bf_success[i]);
diff --git a/drivers/qtn/qdrv/qdrv_wlan.h b/drivers/qtn/qdrv/qdrv_wlan.h
index 960dd6c..fe2ac8c 100644
--- a/drivers/qtn/qdrv/qdrv_wlan.h
+++ b/drivers/qtn/qdrv/qdrv_wlan.h
@@ -1079,6 +1079,11 @@
 	 * Channel change triggered due to pm level changes
 	 */
 	uint16_t csw_by_coc;
+
+	/**
+	 * reserved
+	 */
+	uint16_t reserved;
 };
 
 struct tx_power_cal
diff --git a/drivers/qtn/ruby/emac_lib.c b/drivers/qtn/ruby/emac_lib.c
index 43b4f47..b482e41 100644
--- a/drivers/qtn/ruby/emac_lib.c
+++ b/drivers/qtn/ruby/emac_lib.c
@@ -674,11 +674,11 @@
 		if (rtl8367b_init(mii, &emac_lib_mdio_read,
 					&emac_lib_mdio_write,
 					privc->emac_cfg, privc->mac_id)) {
-			goto board_init_err_out;
+			goto emac_lib_err_out;
 		}
 #else
 		printk(KERN_ERR "rtl switch module not available\n");
-		goto board_init_err_out;
+		goto emac_lib_err_out;
 #endif
 	} else {
 		mii->read = emac_lib_mdio_read;
@@ -687,15 +687,6 @@
 	mii->name = "emac_eth_mii";
 	snprintf(mii->id, MII_BUS_ID_SIZE, "%x", privc->mac_id);
 
-#if 0
-	mii->irq is array. Allocation not needed.
-	/* Initialize irq field */
-	mii->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
-	if (!mii->irq) {
-		goto irq_alloc_err_out;
-	}
-#endif
-
 	for(i = 0; i < PHY_MAX_ADDR; ++i) {
 		mii->irq[i] = PHY_POLL;
 	}
@@ -703,16 +694,13 @@
 	/* Register bus if we are using PHY */
 	if ((privc->emac_cfg & EMAC_PHY_NOT_IN_USE) == 0) {
 		if (mdiobus_register(mii)) {
-			goto mii_register_err_out;
+			goto emac_lib_err_out;
 		}
 	}
+
 	return mii;
 
-mii_register_err_out:
-	kfree(mii->irq);
-
-/*irq_alloc_err_out:*/
-board_init_err_out:
+emac_lib_err_out:
 	mdiobus_free(mii);
 
 mii_alloc_err_out:
diff --git a/drivers/qtn/topaz/fwt_if.c b/drivers/qtn/topaz/fwt_if.c
index 4aff537..b61c1f6 100755
--- a/drivers/qtn/topaz/fwt_if.c
+++ b/drivers/qtn/topaz/fwt_if.c
@@ -27,6 +27,7 @@
 #include <linux/netdevice.h>
 #include <linux/ctype.h>
 #include <linux/if_ether.h>
+#include <linux/inet.h>
 #include "../../net/bridge/br_public.h"
 
 #include <net80211/if_ethersubr.h>
diff --git a/drivers/qtn/topaz/hbm.c b/drivers/qtn/topaz/hbm.c
index b96b6eb..f3143fa 100644
--- a/drivers/qtn/topaz/hbm.c
+++ b/drivers/qtn/topaz/hbm.c
@@ -586,7 +586,6 @@
 	if (topaz_hbm_pool_valid(pool)) {
 		if (!skb->hbm_no_free) {
 			unsigned long flags;
-
 			local_irq_save(flags);
 
 			topaz_hbm_flush_skb_cache(skb);
@@ -619,7 +618,6 @@
 	struct skb_shared_info *shinfo;
 	uint32_t buf_size;
 	uint8_t *buf_head;
-	uint8_t *buf_head2;
 	uintptr_t inv_start;
 	uintptr_t inv_end;
 
@@ -645,8 +643,7 @@
 	 * if we set skb buffer size as 17K
 	 */
 	buf_size = min((int)topaz_hbm_pool_buf_max_size(pool), QTN_HBM_MAX_FRAME_LEN);
-	buf_head = topaz_hbm_payload_store_align_virt(buf_virt, pool, 0);
-	buf_head2 = buf_head - headroom;
+	buf_head = topaz_hbm_payload_store_align_virt(buf_virt, pool, 0) - headroom;
 
 	/* invalidate all packet dcache before passing to the kernel */
 	if (inv)
@@ -657,10 +654,10 @@
 			dma_get_cache_alignment());
 	inv_dcache_range(inv_start, inv_end);
 
-	__alloc_skb_init(skb, shinfo, buf_head2,
+	__alloc_skb_init(skb, shinfo, buf_head,
 			buf_size, 0, &topaz_hbm_skb_allocator
 			QTN_SKB_ALLOC_TRACE_ARGVARS);
-	skb_reserve(skb, ((uint8_t *) buf_virt) - buf_head2);
+	skb_reserve(skb, ((uint8_t *) buf_virt) - buf_head);
 
 	return skb;
 }
diff --git a/drivers/qtn/topaz/tqe.c b/drivers/qtn/topaz/tqe.c
index 608c7f4..f932818 100644
--- a/drivers/qtn/topaz/tqe.c
+++ b/drivers/qtn/topaz/tqe.c
@@ -21,6 +21,7 @@
 #include <linux/module.h>
 
 #include <linux/proc_fs.h>
+#include <linux/seq_file.h>
 #include <linux/io.h>
 
 #include <asm/hardware.h>
@@ -30,10 +31,8 @@
 #define TOPAZ_TQE_PROC_FILENAME	"topaz_tqe"
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
-static int topaz_tqe_stat_rd(struct file *file, char __user *buffer,
-		size_t count, loff_t *ppos)
+static int topaz_tqe_stat_rd(struct seq_file *sfile, void *data)
 {
-	char *p = buffer;
 	int i;
 	struct {
 		uint32_t reg;
@@ -60,17 +59,25 @@
 
 	for (i = 0; i < ARRAY_SIZE(regs); i++) {
 		uint32_t reg = readl(regs[i].reg);
-		p += sprintf(p, "%8s = %u 0x%08x\n", regs[i].name, reg, reg);
+		seq_printf(sfile, "%8s = %u 0x%08x\n", regs[i].name, reg, reg);
 	}
 
-	*ppos += p - buffer;
-
-	return p - buffer;
+	return 0;
 }
 
-static const struct file_operations fops_tqe = {
-	.read = topaz_tqe_stat_rd,
+static int topaz_tqe_stat_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, topaz_tqe_stat_rd, NULL);
+}
+
+static const struct file_operations topaz_tqe_stat_fops = {
+	.owner		= THIS_MODULE,
+	.open		= topaz_tqe_stat_open,
+	.read		= seq_read,
+	.llseek		= seq_lseek,
+	.release	= single_release,
 };
+
 #else
 static int topaz_tqe_stat_rd(char *page, char **start, off_t offset,
 		int count, int *eof, void *data)
@@ -112,7 +119,7 @@
 static int __init topaz_tqe_stat_init(void)
 {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
-	if (!proc_create(TOPAZ_TQE_PROC_FILENAME, 0x444, NULL, &fops_tqe))
+	if (!proc_create(TOPAZ_TQE_PROC_FILENAME, 0x444, NULL, &topaz_tqe_stat_fops))
 		return -EEXIST;
 
 #else
@@ -129,5 +136,3 @@
 MODULE_DESCRIPTION("TQE");
 MODULE_AUTHOR("Quantenna");
 MODULE_LICENSE("GPL");
-
-
diff --git a/drivers/qtn/wlan/ieee80211_output.c b/drivers/qtn/wlan/ieee80211_output.c
index 0527d32..21c0a5c 100644
--- a/drivers/qtn/wlan/ieee80211_output.c
+++ b/drivers/qtn/wlan/ieee80211_output.c
@@ -1008,8 +1008,7 @@
 	*frm++ = sp->chan_util;
 	/* TODO: Available Admission Capacity
 	 * parameters need to be updated with correct values */
-	put_unaligned(0xffff, (__le16 *)frm);
-	frm += 2;
+	ADDINT16LE(frm, 0xffff);
 
 	return frm;
 }
diff --git a/drivers/qtn/wlan/ieee80211_scan.c b/drivers/qtn/wlan/ieee80211_scan.c
index c29ffa99..b9b8744 100644
--- a/drivers/qtn/wlan/ieee80211_scan.c
+++ b/drivers/qtn/wlan/ieee80211_scan.c
@@ -2040,9 +2040,9 @@
 		if (end - pos < 4)
 			break;
 
-		type = be16toh(*(__be16 *)pos);
+		type = get_unaligned_be16(pos);
 		pos += 2;
-		len = be16toh(*(__be16 *)pos);
+		len = get_unaligned_be16(pos);
 		pos += 2;
 
 		if (len > end - pos)
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index c17327e..ef1ce68 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -384,7 +384,7 @@
 
 	BUG_ON(!ops);
 
-#if 0
+#ifndef CONFIG_ARC_PLAT_QTN
 	WARN_ON(irqs_disabled());
 #endif
 	if (dma_release_from_coherent(dev, get_order(size), cpu_addr))
diff --git a/include/linux/ip.h b/include/linux/ip.h
index 5f2004f..003f3e8 100644
--- a/include/linux/ip.h
+++ b/include/linux/ip.h
@@ -42,7 +42,7 @@
 {
 	struct iphdr *iph = ip_hdr(skb);
 
-#ifndef CONFIG_QTN_PLATFORM_MISALIGN_WAR
+#ifdef CONFIG_ARC_PLAT_QTN
 	int err = 0;
 
 	if (unlikely(((uint32_t)iph & 0x3) == QTN_IP_REALIGN_BYTES)) {
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index 1a8e874..8532a89 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -94,7 +94,8 @@
 static inline struct ipv6hdr *ipv6_hdr_aligned(struct sk_buff *skb)
 {
 	struct ipv6hdr *ip6h = ipv6_hdr(skb);
-#ifndef CONFIG_QTN_PLATFORM_MISALIGN_WAR
+
+#ifdef CONFIG_ARC_PLAT_QTN
 	int err = 0;
 
 	if (unlikely(((uint32_t)ip6h & 0x3) == QTN_IP_REALIGN_BYTES)) {
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 0e5e2ba..2f4cbdb 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -710,9 +710,9 @@
 	/* one bit hole */
 	__u8			is_recyclable:1,
 				cache_is_cleaned:1,
-				hbm_no_free:1;
+				hbm_no_free:1,
+				ext_l2_filter:1;
 
-	__u8			ext_l2_filter:1;
 	kmemcheck_bitfield_end(flags1);
 
 	/* fields enclosed in headers_start/headers_end are copied
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index 1ab3f82..c44a7dc1 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -73,7 +73,7 @@
 			goto out;
 		}
 
-#ifndef CONFIG_QTN_PLATFORM_MISALIGN_WAR
+#ifdef CONFIG_ARC_PLAT_QTN
 		if (M_FLAG_ISSET(skb, M_HAS_MISALIGN))
 			dest = eth_hdr(skb)->h_dest;
 #endif
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
index 6348414..efcb184 100644
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -858,7 +858,7 @@
 	} else {
 		spin_lock(&br->hash_lock);
 		if (likely(!fdb_find(head, addr, vid))) {
-			fdb = fdb_create(br, head, source, addr, vid, 0, 0, 0);
+			fdb = fdb_create(br, head, source, addr, vid, sub_port, 0, 0);
 			if (fdb) {
 				if (unlikely(added_by_user))
 					fdb->added_by_user = 1;
@@ -1123,7 +1123,7 @@
 	} else {
 		spin_lock_bh(&p->br->hash_lock);
 		err = fdb_add_entry(p, addr, ndm->ndm_state,
-+				    nlh_flags, vid, 0);
+					nlh_flags, vid, 0);
 		spin_unlock_bh(&p->br->hash_lock);
 	}
 
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index 1e42b05..839a342 100644
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -141,6 +141,11 @@
 
 	skb->dev = to->dev;
 
+	if (unlikely(skb->ext_l2_filter) && !br_is_wlan_dev(skb->dev)) {
+		kfree_skb(skb);
+		return;
+	}
+
 	if (unlikely(netpoll_tx_running(to->br->dev))) {
 		if (!is_skb_forwardable(skb->dev, skb))
 			kfree_skb(skb);
@@ -175,6 +180,11 @@
 	skb->dev = to->dev;
 	skb_forward_csum(skb);
 
+	if (unlikely(skb->ext_l2_filter) && !br_is_wlan_dev(skb->dev)) {
+		kfree_skb(skb);
+		return;
+	}
+
 	NF_HOOK(NFPROTO_BRIDGE, NF_BR_FORWARD,
 		dev_net(indev), NULL, skb, indev, skb->dev,
 		br_forward_finish);
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index 64cd776..6efb47c 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -269,6 +269,7 @@
 
 	sysfs_remove_link(br->ifobj, p->dev->name);
 
+	dev->gflags ^= IFF_PROMISC;
 	nbp_delete_promisc(p);
 
 	spin_lock_bh(&br->lock);
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index 693f304..cc9a278 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -44,7 +44,7 @@
 br_should_route_hook_t __rcu *br_should_route_hook __read_mostly;
 EXPORT_SYMBOL(br_should_route_hook);
 
-#ifndef CONFIG_QTN_PLATFORM_MISALIGN_WAR
+#ifdef CONFIG_ARC_PLAT_QTN
 static struct sk_buff *skb_aligned(struct sk_buff *skb)
 {
 	if ((unsigned int)skb->data & 0x3) {
@@ -95,9 +95,10 @@
 	if (!skb)
 		return NET_RX_DROP;
 
-#ifndef CONFIG_QTN_PLATFORM_MISALIGN_WAR
+#ifdef CONFIG_ARC_PLAT_QTN
 	skb = skb_aligned(skb);
 #endif
+
 	return NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN,
 		       dev_net(indev), NULL, skb, indev, NULL,
 		       br_netif_receive_skb);
@@ -158,6 +159,11 @@
 	return retval;
 }
 
+int br_wlan_report_flood(struct net_bridge *br)
+{
+	return !!br->wlan_report_flood_enable;
+}
+
 int br_handle_frame_finish_multicast(struct sk_buff *skb, struct net_bridge *br,
 			const unsigned char *dest, u16 vid)
 {
@@ -179,8 +185,11 @@
 			br_handle_mcast_mgmt_frame(skb, br) &&
 			br_handle_mcast_exception(br, dest, data)) {
 		if (BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) {
-			mdst = br_mdb_get(br, skb, vid);
-			br_report_flood(br, mdst, skb);
+			if (!br_is_wlan_dev(skb->dev) ||
+				br_wlan_report_flood(br)) {
+				mdst = br_mdb_get(br, skb, vid);
+				br_report_flood(br, mdst, skb);
+			}
 			br_multicast_forward(mdst, skb, skb2);
 			skb = NULL;
 		} else if(BR_INPUT_SKB_CB_UCAST_FWD(skb)) {
@@ -303,28 +312,29 @@
 
 	/* insert into forwarding database after filtering to avoid spoofing */
 	br = p->br;
-        /* ETH_P_80211_RAW */
-        /* This type of frame should be passed up the stack, not forwarded or flooded.
+	/* ETH_P_80211_RAW */
+	/* This type of frame should be passed up the stack, not forwarded or flooded.
          * Note that due to the nature of the skb with this protocol, the header is an
          * 802.11 header, not an Ethernet header.
          */
-        if (skb->protocol == __constant_htons(ETH_P_80211_RAW))
-        {
-                /* Pass it up, do not forward or add entries to the bridge table */
-                BR_INPUT_SKB_CB(skb)->brdev = br->dev;
-                br_pass_frame_up(skb);
-                goto out;
-        }
+	if (skb->protocol == __constant_htons(ETH_P_80211_RAW))
+	{
+		/* Pass it up, do not forward or add entries to the bridge table */
+		BR_INPUT_SKB_CB(skb)->brdev = br->dev;
+		br_pass_frame_up(skb);
+		goto out;
+	}
 
 	if (p->flags & BR_LEARNING)
-		br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false, 0);
+		br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false, skb->src_port);
+
 	br_handle_fwt_capacity(br);
 
 	if (!is_broadcast_ether_addr(dest) && is_multicast_ether_addr(dest) &&
-	    br_multicast_rcv(br, p, skb, vid))
+		br_multicast_rcv(br, p, skb, vid))
 		goto drop;
 
-#ifndef CONFIG_QTN_PLATFORM_MISALIGN_WAR
+#ifdef CONFIG_ARC_PLAT_QTN
 	if (M_FLAG_ISSET(skb, M_HAS_MISALIGN))
 		dest = eth_hdr(skb)->h_dest;
 #endif
@@ -347,7 +357,7 @@
 #ifdef CONFIG_IPV6
 	if ((eth_hdr(skb)->h_proto == __constant_htons(ETH_P_IPV6)) &&
 		(skb->len < sizeof(struct ipv6hdr))) {
-		goto drop;
+				goto drop;
 	}
 #endif
 	if (IS_ENABLED(CONFIG_INET) && skb->protocol == htons(ETH_P_ARP))
@@ -431,15 +441,14 @@
 			&& skb->pkt_type == PACKET_HOST))
 		return RX_HANDLER_PASS;
 
+	if (!is_valid_ether_addr(eth_hdr(skb)->h_source))
+		goto drop;
+
 	skb = skb_share_check(skb, GFP_ATOMIC);
 	if (!skb)
 		return RX_HANDLER_CONSUMED;
 
-	if (!is_valid_ether_addr(eth_hdr(skb)->h_source))
-		goto drop;
-
 	p = br_port_get_rcu(skb->dev);
-
 	/* For ETH_P_80211_RAW, any pointers to addresses are invalid, so
          * simply pass the packet onto the br_handle_frame_finish to pass
          * it up the stack.
@@ -493,9 +502,13 @@
 		}
 
 		/* Deliver packet to local host only */
-		NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, dev_net(skb->dev),
-			NULL, skb, skb->dev, NULL, br_handle_local_finish);
-		return RX_HANDLER_CONSUMED;
+		if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, dev_net(skb->dev),
+			NULL, skb, skb->dev, NULL, br_handle_local_finish)) {
+			return RX_HANDLER_CONSUMED; /* consumed by filter */
+		} else {
+			*pskb = skb;
+			return RX_HANDLER_PASS;	/* continue processing */
+		}
 	}
 
 forward:
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 3ab1506..965853a 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -1863,12 +1863,13 @@
 	struct sk_buff *skb_trimmed = NULL;
 	const uint8_t *src_mac = br_ether_srcmac(skb);
 	struct igmphdr *ih;
+	const struct iphdr *iph = ip_hdr_aligned(skb);
 	int err;
 
 	err = ip_mc_check_igmp(skb, &skb_trimmed);
 
 	if (err == -ENOMSG) {
-		if (!ipv4_is_local_multicast(get_unaligned(&ip_hdr(skb)->daddr)))
+		if (!ipv4_is_local_multicast(iph->daddr))
 			BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
 		return 0;
 	} else if (err < 0) {
@@ -1897,6 +1898,9 @@
 		break;
 	}
 
+	if ((skb_trimmed != skb) && BR_INPUT_SKB_CB(skb_trimmed)->ucast_fwd)
+		BR_INPUT_SKB_CB(skb)->ucast_fwd = 1;
+
 	if (skb_trimmed && skb_trimmed != skb)
 		kfree_skb(skb_trimmed);
 
@@ -1911,13 +1915,14 @@
 {
 	struct sk_buff *skb_trimmed = NULL;
 	const uint8_t *src_mac = br_ether_srcmac(skb);
+	const struct ipv6hdr *ip6h = ipv6_hdr_aligned(skb);
 	struct mld_msg *mld;
 	int err;
 
 	err = ipv6_mc_check_mld(skb, &skb_trimmed);
 
 	if (err == -ENOMSG) {
-		if (!ipv6_addr_is_ll_all_nodes(&ipv6_hdr(skb)->daddr))
+		if (!ipv6_addr_is_ll_all_nodes(&ip6h->daddr))
 			BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
 		return 0;
 	} else if (err < 0) {
@@ -1944,13 +1949,12 @@
 		break;
 	}
 
+	if ((skb_trimmed != skb) && BR_INPUT_SKB_CB(skb_trimmed)->ucast_fwd)
+		BR_INPUT_SKB_CB(skb)->ucast_fwd = 1;
+
 	if (skb_trimmed && skb_trimmed != skb)
 		kfree_skb(skb_trimmed);
 
-#if 0
-442 +        if ((skb2 != skb) && BR_INPUT_SKB_CB(skb2)->ucast_fwd)
-443 +                BR_INPUT_SKB_CB(skb)->ucast_fwd = 1;
-#endif
 	return err;
 }
 #endif
@@ -1962,7 +1966,7 @@
 	BR_INPUT_SKB_CB(skb)->mrouters_only = 0;
 	BR_INPUT_SKB_CB(skb)->ucast_fwd = 0;
 
-        switch (skb->protocol) {
+	switch (skb->protocol) {
 	case htons(ETH_P_IP):
 		return br_multicast_ipv4_rcv(br, port, skb, vid);
 #if IS_ENABLED(CONFIG_IPV6)
@@ -1978,8 +1982,8 @@
 				       struct bridge_mcast_own_query *query,
 				       struct bridge_mcast_querier *querier)
 {
-        if (br->multicast_router == 0)
-                return;
+	if (br->multicast_router == 0)
+		return;
 
 	spin_lock(&br->multicast_lock);
 	if (query->startup_sent < br->multicast_startup_query_count)
diff --git a/net/bridge/br_public.h b/net/bridge/br_public.h
index 0ddce55..bc5ebfe 100644
--- a/net/bridge/br_public.h
+++ b/net/bridge/br_public.h
@@ -11,6 +11,7 @@
 #define _BR_PUBLIC_H
 
 #include <linux/netdevice.h>
+#include <net/route.h>
 #include <linux/if_bridge.h>
 /*
  * Move some structure and APIs from br_private.h to here
@@ -93,7 +94,7 @@
 	struct hlist_head		hash[BR_HASH_SIZE];
 	struct hlist_head		mcast_hash[BR_HASH_SIZE];
 	unsigned long			feature_mask;
-#ifdef CONFIG_BRIDGE_NETFILTER
+#if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
 	struct rtable			fake_rtable;
 	bool				nf_call_iptables;
 	bool				nf_call_ip6tables;
@@ -173,10 +174,7 @@
 	struct kobject			*ifobj;
 	u32				auto_cnt;
 	uint16_t			vlan_id;
-#ifdef CONFIG_BRIDGE_VLAN_FILTERING
-	u8				vlan_enabled;
-	struct net_port_vlans __rcu	*vlan_info;
-#endif
+
 	/* address of attached device when in 3-addr mode */
 	struct net_bridge_fdb_entry *br_fdb_attached;
 	enum {
@@ -188,10 +186,17 @@
 		BR_SSDP_FLOOD_DISABLED,
 		BR_SSDP_FLOOD_ENABLED
 	} ssdp_flood_state;
+#ifdef CONFIG_BRIDGE_VLAN_FILTERING
+	struct net_bridge_vlan_group	__rcu *vlgrp;
+	u8				vlan_enabled;
+	u8				vlan_stats_enabled;
+	__be16				vlan_proto;
+	u16				default_pvid;
+#endif
 };
 
 #define BR_MCAST_SUBPORT_REQ_LIMIT      32
-#define BR_SUB_PORT_BITMAP_SIZE		(16)	/* holds QTN_NODE_NUMBER bits */
+#define BR_SUB_PORT_BITMAP_SIZE		(4)	/* holds QTN_NODE_NUMBER bits */
 
 struct net_bridge_port
 {
@@ -242,6 +247,7 @@
 #endif
 #ifdef CONFIG_BRIDGE_VLAN_FILTERING
 	struct net_port_vlans __rcu	*vlan_info;
+	struct net_bridge_vlan_group	__rcu *vlgrp;
 #endif
 };
 
diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
index f8ec79e..e5dc9d8 100644
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -272,6 +272,38 @@
 }
 static DEVICE_ATTR_RW(report_flood_interval);
 
+static ssize_t wlan_report_flood_enable_show(struct device *d,
+				struct device_attribute *attr, char *buf)
+{
+	struct net_bridge *br = to_bridge(d);
+	return sprintf(buf, "%u\n", br->wlan_report_flood_enable);
+}
+
+static ssize_t wlan_report_flood_enable_store(struct device *d,
+				struct device_attribute *attr, const char *buf,
+				size_t len)
+{
+	struct net_bridge *br = to_bridge(d);
+	char *endp;
+	long val;
+
+	if (!capable(CAP_NET_ADMIN))
+		return -EPERM;
+
+	val = simple_strtol(buf, &endp, 0);
+	if (endp == buf)
+		return -EINVAL;
+
+	rtnl_lock();
+	br->wlan_report_flood_enable = val;
+	rtnl_unlock();
+	printk("BRIDGE WLAN report flood-forwarding %s\n",
+		br->wlan_report_flood_enable ? "enabled" : "disabled");
+
+	return len;
+}
+static DEVICE_ATTR_RW(wlan_report_flood_enable);
+
 static ssize_t priority_show(struct device *d, struct device_attribute *attr,
 			     char *buf)
 {
@@ -890,6 +922,7 @@
 	&dev_attr_multicast_query_response_interval.attr,
 	&dev_attr_multicast_startup_query_interval.attr,
 	&dev_attr_report_flood_interval.attr,
+	&dev_attr_wlan_report_flood_enable.attr,
 #endif
 #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
 	&dev_attr_nf_call_iptables.attr,
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 3314ca3..282c599 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -248,6 +248,35 @@
  *	%GFP_ATOMIC.
  */
 
+struct sk_buff * __alloc_skb(unsigned int size,
+		gfp_t gfp_mask, int flags, int node)
+{
+	const struct skb_allocator *allocator;
+	struct sk_buff *skb;
+	struct skb_shared_info *shinfo;
+	uint8_t *data;
+
+	size = SKB_DATA_ALIGN(size);
+
+	allocator = skb_allocator_get_default();
+	skb = allocator->skb_alloc(gfp_mask, flags, node);
+	if (!skb)
+		goto out;
+
+	data = allocator->payload_alloc(&shinfo, size, gfp_mask, node);
+	if (!data)
+		goto nodata;
+
+	__alloc_skb_init(skb, shinfo, data, size, flags, allocator);
+out:
+	return skb;
+nodata:
+	allocator->skb_free(skb, flags);
+	skb = NULL;
+	goto out;
+}
+EXPORT_SYMBOL(__alloc_skb);
+
 struct sk_buff *skb_allocator_kmem_caches_skb_alloc(gfp_t gfp_mask, int flags, int node)
 {
 	struct kmem_cache *cache;
@@ -279,11 +308,14 @@
 		size_t size, gfp_t gfp_mask, int node)
 {
 	uint8_t *data;
+	size_t skb_shinfo_size;
 
 	size = SKB_DATA_ALIGN(size);
-	data = kmalloc_node_track_caller(size + sizeof(**shinfo), gfp_mask, node);
+	skb_shinfo_size = SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
+
+	data = kmalloc_node_track_caller(size + skb_shinfo_size, gfp_mask, node);
 	if (data)
-		*shinfo = (void *) (data + size);
+		*shinfo = (void *)(data + size);
 	else
 		*shinfo = NULL;
 
@@ -356,34 +388,6 @@
 	}
 }
 
-struct sk_buff * __alloc_skb(unsigned int size,
-		gfp_t gfp_mask, int flags, int node)
-{
-	const struct skb_allocator *allocator;
-	struct sk_buff *skb;
-	struct skb_shared_info *shinfo;
-	uint8_t *data;
-
-	size = SKB_DATA_ALIGN(size);
-
-	allocator = skb_allocator_get_default();
-	skb = allocator->skb_alloc(gfp_mask, flags, node);
-	if (!skb)
-		goto out;
-
-	data = allocator->payload_alloc(&shinfo, size, gfp_mask, node);
-	if (!data)
-		goto nodata;
-
-	__alloc_skb_init(skb, shinfo, data, size, flags, allocator);
-out:
-	return skb;
-nodata:
-	allocator->skb_free(skb, flags);
-	skb = NULL;
-	goto out;
-}
-EXPORT_SYMBOL(__alloc_skb);
 
 /**
  * __build_skb - build a network buffer
@@ -690,7 +694,7 @@
 {
 	struct skb_shared_info *shinfo = skb_shinfo(skb);
 	int i;
-	int nr_frags;
+
 
 	if (skb->cloned &&
 	    atomic_sub_return(skb->nohdr ? (1 << SKB_DATAREF_SHIFT) + 1 : 1,
@@ -698,10 +702,10 @@
 		return;
 
 	if (unlikely(shinfo->nr_frags >= MAX_SKB_FRAGS)) {
-		printk(KERN_CRIT "%s: skb 0x%p skb->head 0x%p end 0x%p "
-				"datasz %d shinfo 0x%p corrupt. nr_frags = %u\n",
-				__FUNCTION__, skb, skb->head, skb->end,
-				skb->end - skb->head, skb_shinfo(skb), nr_frags);
+		printk(KERN_CRIT "%s: skb 0x%p allocator=%s, skb->head 0x%p end 0x%p "
+				"datasz %d shinfo 0x%p corrupt. max_frags=%d,nr_frags = %u\n",
+				__FUNCTION__, skb, skb->allocator->name, skb->head, skb->end,
+				skb->end - skb->head, shinfo, MAX_SKB_FRAGS, shinfo->nr_frags);
 		BUG();
 	}
 	for (i = 0; i < shinfo->nr_frags; i++)
@@ -952,8 +956,8 @@
 	new->tstamp		= old->tstamp;
 	/* We do not copy old->sk */
 	new->dev		= old->dev;
-	skb_dst_copy(new, old);
 	memcpy(new->cb, old->cb, sizeof(old->cb));
+	skb_dst_copy(new, old);
 	memcpy(&new->qtn_cb, &old->qtn_cb, sizeof(old->qtn_cb));
 	new->src_port = old->src_port;
 	new->dest_port = old->dest_port;
@@ -1347,6 +1351,8 @@
 	 */
 	memcpy(data + nhead, skb->head, skb_tail_pointer(skb) - skb->head);
 
+	shinfo = (void *)(data + size);
+
 	memcpy(shinfo, skb_shinfo(skb),
 		offsetof(struct skb_shared_info, frags[skb_shinfo(skb)->nr_frags]));
 
@@ -1371,6 +1377,8 @@
 	}
 	off = (data + nhead) - skb->head;
 
+	/* We have freed payload now; reset allocator*/
+	skb->allocator = allocator;
 	skb->head     = data;
 	skb->head_frag = 0;
 	skb->data    += off;
@@ -1388,6 +1396,7 @@
 	skb_shinfo(skb) = shinfo;
 	atomic_set(&skb_shinfo(skb)->dataref, 1);
 	skb_shinfo(skb)->allocator = allocator;
+
 	return 0;
 
 nofrags: