diff --git a/bsp/board_wr741nd4.bsp b/bsp/board_wr741nd4.bsp index da41c44..68a063e 100644 --- a/bsp/board_wr741nd4.bsp +++ b/bsp/board_wr741nd4.bsp @@ -3,10 +3,7 @@ machine=wr741nd4 target=$builddir/$machine board_prepare() { - # Das ist für die mangelnde entropie Werte für den Zufallsgenerator - # Siehe http://ticket.freifunk-ol.de/issues/406 - # https://dev.openwrt.org/changeset/33559 - cat build_patches/backport_the_upstream_entropy_changes.patch | patch -p2 -d $target + echo "nothing todo" > /dev/null } board_prebuild() { diff --git a/bsp/wr741nd4/.config b/bsp/wr741nd4/.config index df0692d..abcf2cd 100644 --- a/bsp/wr741nd4/.config +++ b/bsp/wr741nd4/.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# OpenWrt version: Attitude Adjustment (r33502) -# Sat Nov 17 22:46:24 2012 +# OpenWrt version: Attitude Adjustment (r35298) +# Sat Jan 26 13:09:59 2013 # CONFIG_HAVE_DOT_CONFIG=y # CONFIG_TARGET_ppc40x is not set @@ -119,6 +119,7 @@ CONFIG_TARGET_ar71xx_generic=y # CONFIG_TARGET_brcm47xx_Broadcom-ath5k is not set # CONFIG_TARGET_brcm47xx_Broadcom-none is not set # CONFIG_TARGET_brcm47xx_Bcm4705-b43 is not set +# CONFIG_TARGET_brcm47xx_Bcm4705-wl is not set # CONFIG_TARGET_brcm47xx_Bcm4705-none is not set # CONFIG_TARGET_brcm47xx_Ps1208mfg is not set # CONFIG_TARGET_brcm47xx_WGT634U is not set @@ -226,6 +227,7 @@ CONFIG_TARGET_ar71xx_generic=y # CONFIG_TARGET_au1000_au1550_DBAu1550 is not set # CONFIG_TARGET_cns21xx_Default is not set # CONFIG_TARGET_pxa_Default is not set +# CONFIG_TARGET_pxa_Gumstix is not set # CONFIG_TARGET_imx21_Default is not set # CONFIG_TARGET_amazon_Default is not set # CONFIG_TARGET_atheros_Default is not set @@ -287,9 +289,13 @@ CONFIG_TARGET_ar71xx_generic=y # CONFIG_TARGET_ar71xx_generic_WRT400N is not set # CONFIG_TARGET_ar71xx_generic_WNDR3700 is not set # CONFIG_TARGET_ar71xx_generic_OM2P is not set +# CONFIG_TARGET_ar71xx_generic_MR600 is not set +# CONFIG_TARGET_ar71xx_generic_UBDEV01 is not set +# CONFIG_TARGET_ar71xx_generic_DLRTDEV01 is not set # CONFIG_TARGET_ar71xx_generic_MZKW04NU is not set # CONFIG_TARGET_ar71xx_generic_MZKW300NH is not set # CONFIG_TARGET_ar71xx_generic_RW2458N is not set +# CONFIG_TARGET_ar71xx_generic_CAP4200AG is not set # CONFIG_TARGET_ar71xx_generic_TLMR11U is not set # CONFIG_TARGET_ar71xx_generic_TLMR3020 is not set # CONFIG_TARGET_ar71xx_generic_TLMR3040 is not set @@ -297,6 +303,7 @@ CONFIG_TARGET_ar71xx_generic=y # CONFIG_TARGET_ar71xx_generic_TLMR3420 is not set # CONFIG_TARGET_ar71xx_generic_TLWR703 is not set # CONFIG_TARGET_ar71xx_generic_TLWA701 is not set +# CONFIG_TARGET_ar71xx_generic_TLWA7510 is not set # CONFIG_TARGET_ar71xx_generic_TLWA901 is not set # CONFIG_TARGET_ar71xx_generic_TLWDR4300 is not set # CONFIG_TARGET_ar71xx_generic_TLWR740 is not set @@ -315,6 +322,7 @@ CONFIG_TARGET_ar71xx_generic_TLWR741=y # CONFIG_TARGET_ar71xx_generic_UBNTRS is not set # CONFIG_TARGET_ar71xx_generic_UBNTRSPRO is not set # CONFIG_TARGET_ar71xx_generic_UBNTUNIFI is not set +# CONFIG_TARGET_ar71xx_generic_UBNTUNIFIOUTDOOR is not set # CONFIG_TARGET_ar71xx_generic_UBNT is not set # CONFIG_TARGET_ar71xx_generic_ZCN1523H28 is not set # CONFIG_TARGET_ar71xx_generic_ZCN1523H516 is not set @@ -336,6 +344,9 @@ CONFIG_TARGET_ar71xx_generic_TLWR741=y # CONFIG_TARGET_ramips_rt305x_UPVEL is not set # CONFIG_TARGET_ramips_rt3883_Default is not set # CONFIG_TARGET_ramips_rt3883_RTN56U is not set +# CONFIG_TARGET_ramips_rt3883_DIR645 is not set +# CONFIG_TARGET_ramips_rt3883_TEW691GR is not set +# CONFIG_TARGET_ramips_rt3883_TEW692GR is not set # CONFIG_TARGET_omap24xx_n810-base is not set # CONFIG_TARGET_omap24xx_n810-gui is not set # CONFIG_TARGET_ixp4xx_generic_Default is not set @@ -419,7 +430,7 @@ CONFIG_EXTERNAL_CPIO="" # Root filesystem archives # # CONFIG_TARGET_ROOTFS_CPIOGZ is not set -CONFIG_TARGET_ROOTFS_TARGZ=y +# CONFIG_TARGET_ROOTFS_TARGZ is not set # # Root filesystem images @@ -445,7 +456,7 @@ CONFIG_BUILD_PATENTED=y # CONFIG_BUILD_NLS is not set # CONFIG_BUILD_STATIC_TOOLS is not set CONFIG_SHADOW_PASSWORDS=y -# CONFIG_CLEAN_IPKG is not set +CONFIG_CLEAN_IPKG=y # CONFIG_COLLECT_KERNEL_DEBUG is not set # @@ -469,7 +480,8 @@ CONFIG_KERNEL_PRINTK_TIME=y # # CONFIG_DEBUG is not set CONFIG_IPV6=y -# CONFIG_PKG_BUILD_PARALLEL is not set +CONFIG_PKG_BUILD_PARALLEL=y +CONFIG_PKG_BUILD_USE_JOBSERVER=y # # Stripping options @@ -587,7 +599,7 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_SUID=y CONFIG_BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS=y CONFIG_BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" CONFIG_BUSYBOX_CONFIG_FEATURE_SYSLOG=y -CONFIG_BUSYBOX_CONFIG_FEATURE_HAVE_RPC=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_HAVE_RPC is not set # # Build Options @@ -715,7 +727,7 @@ CONFIG_BUSYBOX_CONFIG_CUT=y CONFIG_BUSYBOX_CONFIG_DD=y CONFIG_BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING=y # CONFIG_BUSYBOX_CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set -# CONFIG_BUSYBOX_CONFIG_FEATURE_DD_IBS_OBS is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_DD_IBS_OBS=y CONFIG_BUSYBOX_CONFIG_DF=y # CONFIG_BUSYBOX_CONFIG_FEATURE_DF_FANCY is not set CONFIG_BUSYBOX_CONFIG_DIRNAME=y @@ -731,7 +743,7 @@ CONFIG_BUSYBOX_CONFIG_EXPR=y CONFIG_BUSYBOX_CONFIG_EXPR_MATH_SUPPORT_64=y CONFIG_BUSYBOX_CONFIG_FALSE=y # CONFIG_BUSYBOX_CONFIG_FOLD is not set -# CONFIG_BUSYBOX_CONFIG_FSYNC is not set +CONFIG_BUSYBOX_CONFIG_FSYNC=y CONFIG_BUSYBOX_CONFIG_HEAD=y CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_HEAD=y CONFIG_BUSYBOX_CONFIG_HOSTID=y @@ -869,7 +881,7 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_VI_ASK_TERMINAL=y CONFIG_BUSYBOX_CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y CONFIG_BUSYBOX_CONFIG_AWK=y CONFIG_BUSYBOX_CONFIG_FEATURE_AWK_LIBM=y -# CONFIG_BUSYBOX_CONFIG_CMP is not set +CONFIG_BUSYBOX_CONFIG_CMP=y CONFIG_BUSYBOX_CONFIG_DIFF=y # CONFIG_BUSYBOX_CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set # CONFIG_BUSYBOX_CONFIG_FEATURE_DIFF_DIR is not set @@ -926,8 +938,7 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_INIT_SYSLOG=y # CONFIG_BUSYBOX_CONFIG_FEATURE_INIT_COREDUMPS is not set # CONFIG_BUSYBOX_CONFIG_FEATURE_INITRD is not set CONFIG_BUSYBOX_CONFIG_INIT_TERMINAL_TYPE="linux" -CONFIG_BUSYBOX_CONFIG_MESG=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set +# CONFIG_BUSYBOX_CONFIG_MESG is not set # # Login/Password Management Utilities @@ -985,8 +996,7 @@ CONFIG_BUSYBOX_CONFIG_DEFAULT_MODULES_DIR="/lib/modules" # CONFIG_BUSYBOX_CONFIG_BLOCKDEV is not set # CONFIG_BUSYBOX_CONFIG_REV is not set # CONFIG_BUSYBOX_CONFIG_ACPID is not set -CONFIG_BUSYBOX_CONFIG_BLKID=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_BLKID_TYPE is not set +# CONFIG_BUSYBOX_CONFIG_BLKID is not set CONFIG_BUSYBOX_CONFIG_DMESG=y CONFIG_BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY=y # CONFIG_BUSYBOX_CONFIG_FBSET is not set @@ -1014,15 +1024,14 @@ CONFIG_BUSYBOX_CONFIG_HWCLOCK=y # CONFIG_BUSYBOX_CONFIG_LSPCI is not set # CONFIG_BUSYBOX_CONFIG_LSUSB is not set # CONFIG_BUSYBOX_CONFIG_MDEV is not set -CONFIG_BUSYBOX_CONFIG_MKSWAP=y -CONFIG_BUSYBOX_CONFIG_FEATURE_MKSWAP_UUID=y +# CONFIG_BUSYBOX_CONFIG_MKSWAP is not set # CONFIG_BUSYBOX_CONFIG_MORE is not set CONFIG_BUSYBOX_CONFIG_MOUNT=y # CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE is not set # CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_VERBOSE is not set CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_HELPERS=y # CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL is not set -CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_NFS=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_NFS is not set CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_CIFS=y CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_FLAGS=y CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_FSTAB=y @@ -1034,8 +1043,7 @@ CONFIG_BUSYBOX_CONFIG_RDATE=y # CONFIG_BUSYBOX_CONFIG_SCRIPT is not set # CONFIG_BUSYBOX_CONFIG_SCRIPTREPLAY is not set # CONFIG_BUSYBOX_CONFIG_SETARCH is not set -CONFIG_BUSYBOX_CONFIG_SWAPONOFF=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_SWAPON_PRI is not set +# CONFIG_BUSYBOX_CONFIG_SWAPONOFF is not set CONFIG_BUSYBOX_CONFIG_SWITCH_ROOT=y CONFIG_BUSYBOX_CONFIG_UMOUNT=y CONFIG_BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL=y @@ -1046,28 +1054,7 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL=y CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP=y # CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set # CONFIG_BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT is not set -CONFIG_BUSYBOX_CONFIG_VOLUMEID=y - -# -# Filesystem/Volume identification -# -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS is not set -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS=y -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT=y -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS is not set -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS=y -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS=y -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660=y -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS is not set -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS is not set -# CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS is not set -# CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV is not set -# CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2 is not set -CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID=y +# CONFIG_BUSYBOX_CONFIG_VOLUMEID is not set # # Miscellaneous Utilities @@ -1201,7 +1188,7 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_TELNETD_STANDALONE=y # CONFIG_BUSYBOX_CONFIG_TFTP is not set # CONFIG_BUSYBOX_CONFIG_TFTPD is not set CONFIG_BUSYBOX_CONFIG_TRACEROUTE=y -# CONFIG_BUSYBOX_CONFIG_TRACEROUTE6 is not set +CONFIG_BUSYBOX_CONFIG_TRACEROUTE6=y CONFIG_BUSYBOX_CONFIG_FEATURE_TRACEROUTE_VERBOSE=y # CONFIG_BUSYBOX_CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set # CONFIG_BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set @@ -1221,7 +1208,7 @@ CONFIG_BUSYBOX_CONFIG_WGET=y CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_STATUSBAR=y CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_AUTHENTICATION=y CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_TIMEOUT is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_TIMEOUT=y # CONFIG_BUSYBOX_CONFIG_ZCIP is not set # @@ -1262,8 +1249,8 @@ CONFIG_BUSYBOX_CONFIG_PIDOF=y # CONFIG_BUSYBOX_CONFIG_FEATURE_PIDOF_OMIT is not set CONFIG_BUSYBOX_CONFIG_PKILL=y CONFIG_BUSYBOX_CONFIG_PS=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_PS_WIDE is not set -# CONFIG_BUSYBOX_CONFIG_RENICE is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_PS_WIDE=y +CONFIG_BUSYBOX_CONFIG_RENICE=y CONFIG_BUSYBOX_CONFIG_BB_SYSCTL=y CONFIG_BUSYBOX_CONFIG_TOP=y CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y @@ -1323,19 +1310,9 @@ CONFIG_BUSYBOX_CONFIG_SH_MATH_SUPPORT_64=y # # System Logging Utilities # -CONFIG_BUSYBOX_CONFIG_SYSLOGD=y -CONFIG_BUSYBOX_CONFIG_FEATURE_ROTATE_LOGFILE=y -CONFIG_BUSYBOX_CONFIG_FEATURE_REMOTE_LOG=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_SYSLOGD_DUP is not set -# CONFIG_BUSYBOX_CONFIG_FEATURE_SYSLOGD_CFG is not set -CONFIG_BUSYBOX_CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 -CONFIG_BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG=y -CONFIG_BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16 -CONFIG_BUSYBOX_CONFIG_LOGREAD=y -# CONFIG_BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set -CONFIG_BUSYBOX_CONFIG_KLOGD=y -CONFIG_BUSYBOX_CONFIG_FEATURE_KLOGD_KLOGCTL=y -CONFIG_BUSYBOX_CONFIG_LOGGER=y +# CONFIG_BUSYBOX_CONFIG_SYSLOGD is not set +# CONFIG_BUSYBOX_CONFIG_KLOGD is not set +# CONFIG_BUSYBOX_CONFIG_LOGGER is not set # CONFIG_PACKAGE_dash is not set # CONFIG_PACKAGE_dnsmasq is not set # CONFIG_PACKAGE_dnsmasq-dhcpv6 is not set @@ -1373,22 +1350,6 @@ CONFIG_PACKAGE_wireless-tools=y CONFIG_PACKAGE_ip6tables=y # CONFIG_PACKAGE_shorewall6-lite is not set -# -# IPv6 attack and analyzing toolset (thc-ipv6) -# -# CONFIG_PACKAGE_alive6 is not set -# CONFIG_PACKAGE_detect-new-ip6 is not set -# CONFIG_PACKAGE_dos-new-ip6 is not set -# CONFIG_PACKAGE_fake_advertise6 is not set -# CONFIG_PACKAGE_fake_mipv6 is not set -# CONFIG_PACKAGE_fake_mld6 is not set -# CONFIG_PACKAGE_fake_router6 is not set -# CONFIG_PACKAGE_parasite6 is not set -# CONFIG_PACKAGE_redir6 is not set -# CONFIG_PACKAGE_rsmurf6 is not set -# CONFIG_PACKAGE_smurf6 is not set -# CONFIG_PACKAGE_toobig6 is not set - # # IPv6 discovery tools # @@ -1465,16 +1426,16 @@ CONFIG_PACKAGE_ip6tables=y # # Cryptographic API modules # -CONFIG_PACKAGE_kmod-crypto-core=y CONFIG_PACKAGE_kmod-crypto-aes=y CONFIG_PACKAGE_kmod-crypto-arc4=y # CONFIG_PACKAGE_kmod-crypto-authenc is not set # CONFIG_PACKAGE_kmod-crypto-cbc is not set -# CONFIG_PACKAGE_kmod-crypto-crc32c is not set +CONFIG_PACKAGE_kmod-crypto-core=y +CONFIG_PACKAGE_kmod-crypto-crc32c=y # CONFIG_PACKAGE_kmod-crypto-deflate is not set # CONFIG_PACKAGE_kmod-crypto-des is not set # CONFIG_PACKAGE_kmod-crypto-ecb is not set -# CONFIG_PACKAGE_kmod-crypto-hash is not set +CONFIG_PACKAGE_kmod-crypto-hash=y # CONFIG_PACKAGE_kmod-crypto-hmac is not set # CONFIG_PACKAGE_kmod-crypto-hw-geode is not set # CONFIG_PACKAGE_kmod-crypto-hw-hifn-795x is not set @@ -1547,7 +1508,7 @@ CONFIG_PACKAGE_kmod-ledtrig-heartbeat=y CONFIG_PACKAGE_kmod-ledtrig-netdev=y # CONFIG_PACKAGE_kmod-ledtrig-netfilter is not set CONFIG_PACKAGE_kmod-ledtrig-timer=y -# CONFIG_PACKAGE_kmod-ledtrig-usbdev is not set +CONFIG_PACKAGE_kmod-ledtrig-usbdev=y # # Libraries @@ -1556,7 +1517,7 @@ CONFIG_PACKAGE_kmod-ledtrig-timer=y CONFIG_PACKAGE_kmod-lib-crc-ccitt=y # CONFIG_PACKAGE_kmod-lib-crc-itu-t is not set CONFIG_PACKAGE_kmod-lib-crc16=y -# CONFIG_PACKAGE_kmod-lib-crc32c is not set +CONFIG_PACKAGE_kmod-lib-crc32c=y # CONFIG_PACKAGE_kmod-lib-crc7 is not set # CONFIG_PACKAGE_kmod-lib-crc8 is not set # CONFIG_PACKAGE_kmod-lib-lzo is not set @@ -1588,47 +1549,21 @@ CONFIG_PACKAGE_kmod-nls-base=y # CONFIG_PACKAGE_kmod-ebtables is not set CONFIG_PACKAGE_kmod-ip6tables=y CONFIG_PACKAGE_kmod-ipt-core=y -# CONFIG_PACKAGE_kmod-ipt-account is not set -# CONFIG_PACKAGE_kmod-ipt-chaos is not set -# CONFIG_PACKAGE_kmod-ipt-compat-xtables is not set -# CONFIG_PACKAGE_kmod-ipt-condition is not set CONFIG_PACKAGE_kmod-ipt-conntrack=y CONFIG_PACKAGE_kmod-ipt-conntrack-extra=y # CONFIG_PACKAGE_kmod-ipt-debug is not set -# CONFIG_PACKAGE_kmod-ipt-delude is not set -# CONFIG_PACKAGE_kmod-ipt-dhcpmac is not set -# CONFIG_PACKAGE_kmod-ipt-dnetmap is not set # CONFIG_PACKAGE_kmod-ipt-extra is not set CONFIG_PACKAGE_kmod-ipt-filter=y -# CONFIG_PACKAGE_kmod-ipt-fuzzy is not set -# CONFIG_PACKAGE_kmod-ipt-geoip is not set # CONFIG_PACKAGE_kmod-ipt-hashlimit is not set -# CONFIG_PACKAGE_kmod-ipt-iface is not set -# CONFIG_PACKAGE_kmod-ipt-ipmark is not set CONFIG_PACKAGE_kmod-ipt-ipopt=y -# CONFIG_PACKAGE_kmod-ipt-ipp2p is not set # CONFIG_PACKAGE_kmod-ipt-iprange is not set # CONFIG_PACKAGE_kmod-ipt-ipsec is not set -# CONFIG_PACKAGE_kmod-ipt-ipset is not set -# CONFIG_PACKAGE_kmod-ipt-ipv4options is not set # CONFIG_PACKAGE_kmod-ipt-led is not set -# CONFIG_PACKAGE_kmod-ipt-length2 is not set -# CONFIG_PACKAGE_kmod-ipt-logmark is not set -# CONFIG_PACKAGE_kmod-ipt-lscan is not set -# CONFIG_PACKAGE_kmod-ipt-lua is not set -CONFIG_PACKAGE_kmod-ipt-nat=y +# CONFIG_PACKAGE_kmod-ipt-nat is not set # CONFIG_PACKAGE_kmod-ipt-nat-extra is not set -CONFIG_PACKAGE_kmod-ipt-nathelper=y +# CONFIG_PACKAGE_kmod-ipt-nathelper is not set # CONFIG_PACKAGE_kmod-ipt-nathelper-extra is not set -# CONFIG_PACKAGE_kmod-ipt-nathelper-rtsp is not set -# CONFIG_PACKAGE_kmod-ipt-psd is not set # CONFIG_PACKAGE_kmod-ipt-queue is not set -# CONFIG_PACKAGE_kmod-ipt-quota2 is not set -# CONFIG_PACKAGE_kmod-ipt-rawnat is not set -# CONFIG_PACKAGE_kmod-ipt-rawpost is not set -# CONFIG_PACKAGE_kmod-ipt-steal is not set -# CONFIG_PACKAGE_kmod-ipt-sysrq is not set -# CONFIG_PACKAGE_kmod-ipt-tarpit is not set # CONFIG_PACKAGE_kmod-ipt-tee is not set # CONFIG_PACKAGE_kmod-ipt-tproxy is not set # CONFIG_PACKAGE_kmod-ipt-u32 is not set @@ -1691,6 +1626,7 @@ CONFIG_PACKAGE_kmod-ifb=y CONFIG_PACKAGE_kmod-batman-adv=y # CONFIG_KMOD_BATMAN_ADV_DEBUG_LOG is not set CONFIG_KMOD_BATMAN_ADV_BLA=y +CONFIG_KMOD_BATMAN_ADV_DAT=y CONFIG_KMOD_BATMAN_ADV_BATCTL=y # CONFIG_PACKAGE_kmod-bonding is not set # CONFIG_PACKAGE_kmod-bridge is not set @@ -1706,23 +1642,14 @@ CONFIG_PACKAGE_kmod-ipv6=y # CONFIG_PACKAGE_kmod-l2tp is not set # CONFIG_PACKAGE_kmod-l2tp-eth is not set # CONFIG_PACKAGE_kmod-l2tp-ip is not set -# CONFIG_PACKAGE_kmod-lisp is not set -# CONFIG_PACKAGE_kmod-lisp-int is not set # CONFIG_PACKAGE_kmod-llc is not set # CONFIG_PACKAGE_kmod-misdn is not set # CONFIG_PACKAGE_kmod-mp-alg is not set -CONFIG_PACKAGE_kmod-ppp=y -# CONFIG_PACKAGE_kmod-mppe is not set +# CONFIG_PACKAGE_kmod-ppp is not set # CONFIG_PACKAGE_kmod-netem is not set # CONFIG_PACKAGE_kmod-openswan is not set # CONFIG_PACKAGE_kmod-pktgen is not set -# CONFIG_PACKAGE_kmod-ppp-synctty is not set -# CONFIG_PACKAGE_kmod-pppoa is not set -CONFIG_PACKAGE_kmod-pppoe=y -# CONFIG_PACKAGE_kmod-pppol2tp is not set -CONFIG_PACKAGE_kmod-pppox=y -# CONFIG_PACKAGE_kmod-pptp is not set -# CONFIG_PACKAGE_kmod-sched is not set +CONFIG_PACKAGE_kmod-sched=y CONFIG_PACKAGE_kmod-sched-connmark=y CONFIG_PACKAGE_kmod-sched-core=y # CONFIG_PACKAGE_kmod-sched-esfq is not set @@ -1739,23 +1666,23 @@ CONFIG_PACKAGE_kmod-tun=y # # CONFIG_PACKAGE_kmod-bcma is not set # CONFIG_PACKAGE_kmod-bluetooth is not set -CONFIG_PACKAGE_kmod-button-hotplug=y +# CONFIG_PACKAGE_kmod-button-hotplug is not set # CONFIG_PACKAGE_kmod-eeprom-93cx6 is not set # CONFIG_PACKAGE_kmod-eeprom-at24 is not set # CONFIG_PACKAGE_kmod-eeprom-at25 is not set CONFIG_PACKAGE_kmod-gpio-button-hotplug=y -# CONFIG_PACKAGE_kmod-gpio-dev is not set +CONFIG_PACKAGE_kmod-gpio-dev=y # CONFIG_PACKAGE_kmod-gpio-nxp-74hc164 is not set -# CONFIG_PACKAGE_kmod-gpiotoggling is not set +CONFIG_PACKAGE_kmod-gpiotoggling=y # CONFIG_PACKAGE_kmod-hid is not set CONFIG_PACKAGE_kmod-input-core=y # CONFIG_PACKAGE_kmod-input-evdev is not set -CONFIG_PACKAGE_kmod-input-gpio-buttons=y +# CONFIG_PACKAGE_kmod-input-gpio-buttons is not set # CONFIG_PACKAGE_kmod-input-gpio-encoder is not set -# CONFIG_PACKAGE_kmod-input-gpio-keys is not set +CONFIG_PACKAGE_kmod-input-gpio-keys=y # CONFIG_PACKAGE_kmod-input-gpio-keys-polled is not set # CONFIG_PACKAGE_kmod-input-joydev is not set -CONFIG_PACKAGE_kmod-input-polldev=y +# CONFIG_PACKAGE_kmod-input-polldev is not set # CONFIG_PACKAGE_kmod-mmc is not set # CONFIG_PACKAGE_kmod-mmc-over-gpio is not set # CONFIG_PACKAGE_kmod-mtdtests is not set @@ -1764,7 +1691,6 @@ CONFIG_PACKAGE_kmod-input-polldev=y # CONFIG_PACKAGE_kmod-nandsim is not set # CONFIG_PACKAGE_kmod-pwm is not set # CONFIG_PACKAGE_kmod-pwm-gpio is not set -# CONFIG_PACKAGE_kmod-ramzswap is not set # CONFIG_PACKAGE_kmod-regmap is not set # CONFIG_PACKAGE_kmod-rfkill is not set # CONFIG_PACKAGE_kmod-rotary-gpio-custom is not set @@ -1791,7 +1717,6 @@ CONFIG_PACKAGE_kmod-wdt-ath79=y # # Sound Support # -# CONFIG_PACKAGE_kmod-pcspkr is not set # CONFIG_PACKAGE_kmod-sound-core is not set # @@ -1803,7 +1728,7 @@ CONFIG_PACKAGE_kmod-wdt-ath79=y CONFIG_PACKAGE_kmod-usb-core=y # CONFIG_PACKAGE_kmod-usb-hid is not set # CONFIG_PACKAGE_kmod-usb-net is not set -CONFIG_PACKAGE_kmod-usb-ohci=y +# CONFIG_PACKAGE_kmod-usb-ohci is not set # CONFIG_PACKAGE_kmod-usb-printer is not set # CONFIG_PACKAGE_kmod-usb-serial is not set # CONFIG_PACKAGE_kmod-usb-sierrawireless-directip is not set @@ -1811,7 +1736,7 @@ CONFIG_PACKAGE_kmod-usb-ohci=y # CONFIG_PACKAGE_kmod-usb-storage-extras is not set # CONFIG_PACKAGE_kmod-usb-uhci is not set # CONFIG_PACKAGE_kmod-usb-yealink is not set -CONFIG_PACKAGE_kmod-usb2=y +# CONFIG_PACKAGE_kmod-usb2 is not set # CONFIG_PACKAGE_kmod-usbip is not set # CONFIG_PACKAGE_kmod-usbip-client is not set # CONFIG_PACKAGE_kmod-usbip-server is not set @@ -2072,50 +1997,26 @@ CONFIG_PACKAGE_uboot-ar71xx-nbg460n_550n_550nh=y # # CONFIG_PACKAGE_amwall is not set # CONFIG_PACKAGE_arptables is not set -# CONFIG_PACKAGE_conntrack-tools is not set # CONFIG_PACKAGE_ebtables is not set # CONFIG_PACKAGE_fwknop is not set # CONFIG_PACKAGE_fwknopd is not set # CONFIG_PACKAGE_ipkungfu is not set CONFIG_PACKAGE_iptables=y -# CONFIG_PACKAGE_iptables-mod-account is not set -# CONFIG_PACKAGE_iptables-mod-chaos is not set -# CONFIG_PACKAGE_iptables-mod-condition is not set CONFIG_PACKAGE_iptables-mod-conntrack-extra=y -# CONFIG_PACKAGE_iptables-mod-delude is not set -# CONFIG_PACKAGE_iptables-mod-dhcpmac is not set -# CONFIG_PACKAGE_iptables-mod-dnetmap is not set # CONFIG_PACKAGE_iptables-mod-extra is not set CONFIG_PACKAGE_iptables-mod-filter=y -# CONFIG_PACKAGE_iptables-mod-fuzzy is not set -# CONFIG_PACKAGE_iptables-mod-geoip is not set # CONFIG_PACKAGE_iptables-mod-hashlimit is not set -# CONFIG_PACKAGE_iptables-mod-iface is not set -# CONFIG_PACKAGE_iptables-mod-ipmark is not set CONFIG_PACKAGE_iptables-mod-ipopt=y -# CONFIG_PACKAGE_iptables-mod-ipp2p is not set # CONFIG_PACKAGE_iptables-mod-iprange is not set # CONFIG_PACKAGE_iptables-mod-ipsec is not set # CONFIG_PACKAGE_iptables-mod-ipset is not set -# CONFIG_PACKAGE_iptables-mod-ipv4options is not set # CONFIG_PACKAGE_iptables-mod-led is not set -# CONFIG_PACKAGE_iptables-mod-length2 is not set -# CONFIG_PACKAGE_iptables-mod-logmark is not set -# CONFIG_PACKAGE_iptables-mod-lscan is not set -# CONFIG_PACKAGE_iptables-mod-lua is not set # CONFIG_PACKAGE_iptables-mod-nat-extra is not set -# CONFIG_PACKAGE_iptables-mod-psd is not set -# CONFIG_PACKAGE_iptables-mod-quota2 is not set -# CONFIG_PACKAGE_iptables-mod-rawnat is not set -# CONFIG_PACKAGE_iptables-mod-steal is not set -# CONFIG_PACKAGE_iptables-mod-sysrq is not set -# CONFIG_PACKAGE_iptables-mod-tarpit is not set # CONFIG_PACKAGE_iptables-mod-tee is not set # CONFIG_PACKAGE_iptables-mod-tproxy is not set # CONFIG_PACKAGE_iptables-mod-u32 is not set # CONFIG_PACKAGE_iptables-mod-ulog is not set # CONFIG_PACKAGE_iptables-snmp is not set -# CONFIG_PACKAGE_iptaccount is not set # CONFIG_PACKAGE_knock is not set # CONFIG_PACKAGE_knockd is not set # CONFIG_PACKAGE_l7-protocols is not set @@ -2129,10 +2030,12 @@ CONFIG_PACKAGE_iptables-mod-ipopt=y # CONFIG_PACKAGE_nutcpc is not set # CONFIG_PACKAGE_portsentry is not set # CONFIG_PACKAGE_scanlogd is not set +# CONFIG_PACKAGE_shorewall-core is not set # CONFIG_PACKAGE_shorewall-lite is not set # CONFIG_PACKAGE_snort is not set # CONFIG_PACKAGE_snort-mysql is not set # CONFIG_PACKAGE_snort-pgsql is not set +# CONFIG_PACKAGE_snortsam is not set # # Firewall Tunnel @@ -2258,6 +2161,35 @@ CONFIG_PACKAGE_iptables-mod-ipopt=y # CONFIG_PACKAGE_peerguardian is not set # CONFIG_PACKAGE_uhub is not set +# +# Printing +# +# CONFIG_PACKAGE_cups is not set +# CONFIG_PACKAGE_cups-bsd is not set +# CONFIG_PACKAGE_cups-client is not set +# CONFIG_PACKAGE_cups-filters is not set +# CONFIG_PACKAGE_cups-locale-da is not set +# CONFIG_PACKAGE_cups-locale-de is not set +# CONFIG_PACKAGE_cups-locale-es is not set +# CONFIG_PACKAGE_cups-locale-eu is not set +# CONFIG_PACKAGE_cups-locale-fi is not set +# CONFIG_PACKAGE_cups-locale-fr is not set +# CONFIG_PACKAGE_cups-locale-hu is not set +# CONFIG_PACKAGE_cups-locale-id is not set +# CONFIG_PACKAGE_cups-locale-it is not set +# CONFIG_PACKAGE_cups-locale-ja is not set +# CONFIG_PACKAGE_cups-locale-ko is not set +# CONFIG_PACKAGE_cups-locale-nl is not set +# CONFIG_PACKAGE_cups-locale-no is not set +# CONFIG_PACKAGE_cups-locale-pl is not set +# CONFIG_PACKAGE_cups-locale-pt is not set +# CONFIG_PACKAGE_cups-locale-pt_BR is not set +# CONFIG_PACKAGE_cups-locale-ru is not set +# CONFIG_PACKAGE_cups-locale-sv is not set +# CONFIG_PACKAGE_cups-locale-zh is not set +# CONFIG_PACKAGE_cups-locale-zh_TW is not set +# CONFIG_PACKAGE_cups-ppdc is not set + # # Routing and Redirection # @@ -2269,7 +2201,6 @@ CONFIG_PACKAGE_iptables-mod-ipopt=y # CONFIG_PACKAGE_bmxd is not set # CONFIG_PACKAGE_igmpproxy is not set CONFIG_PACKAGE_ip=y -# CONFIG_PACKAGE_lldpd is not set # CONFIG_PACKAGE_net-tools-route is not set # CONFIG_PACKAGE_olsrd is not set # CONFIG_PACKAGE_parprouted is not set @@ -2309,7 +2240,6 @@ CONFIG_PACKAGE_ip=y # CONFIG_PACKAGE_freeswitch is not set # CONFIG_PACKAGE_kamailio is not set # CONFIG_PACKAGE_kamailio3 is not set -# CONFIG_PACKAGE_libopenzap is not set # CONFIG_PACKAGE_miax is not set # CONFIG_PACKAGE_openser is not set # CONFIG_PACKAGE_opensips is not set @@ -2347,11 +2277,12 @@ CONFIG_PACKAGE_fastd=y # # Configuration # -# CONFIG_FASTD_ENABLE_METHOD_XSALSA20_POLY1305 is not set -# CONFIG_FASTD_ENABLE_CRYPTO_AES128CTR_NACL is not set -# CONFIG_FASTD_ENABLE_CRYPTO_AES128CTR_LINUX is not set -# CONFIG_FASTD_ENABLE_CRYPTO_GHASH_BUILTIN is not set -# CONFIG_FASTD_ENABLE_CRYPTO_GHASH_LINUX is not set +CONFIG_FASTD_ENABLE_METHOD_XSALSA20_POLY1305=y +CONFIG_FASTD_ENABLE_METHOD_AES128_GCM=y +CONFIG_FASTD_ENABLE_CRYPTO_AES128CTR_NACL=y +CONFIG_FASTD_ENABLE_CRYPTO_AES128CTR_LINUX=y +CONFIG_FASTD_ENABLE_CRYPTO_GHASH_BUILTIN=y +CONFIG_FASTD_ENABLE_CRYPTO_GHASH_LINUX=y # CONFIG_PACKAGE_frickin is not set # CONFIG_PACKAGE_ipsec-tools is not set # CONFIG_PACKAGE_isakmpd is not set @@ -2427,12 +2358,12 @@ CONFIG_PACKAGE_fastd=y # CONFIG_PACKAGE_strongswan-mod-smp is not set # CONFIG_PACKAGE_strongswan-mod-socket-default is not set # CONFIG_PACKAGE_strongswan-mod-socket-dynamic is not set -# CONFIG_PACKAGE_strongswan-mod-socket-raw is not set # CONFIG_PACKAGE_strongswan-mod-sql is not set # CONFIG_PACKAGE_strongswan-mod-sqlite is not set # CONFIG_PACKAGE_strongswan-mod-stroke is not set # CONFIG_PACKAGE_strongswan-mod-test-vectors is not set # CONFIG_PACKAGE_strongswan-mod-uci is not set +# CONFIG_PACKAGE_strongswan-mod-unity is not set # CONFIG_PACKAGE_strongswan-mod-updown is not set # CONFIG_PACKAGE_strongswan-mod-whitelist is not set # CONFIG_PACKAGE_strongswan-mod-x509 is not set @@ -2456,11 +2387,6 @@ CONFIG_PACKAGE_fastd=y # CONFIG_PACKAGE_mercurial is not set # CONFIG_PACKAGE_subversion-libs is not set -# -# Web -# -# CONFIG_PACKAGE_gatling is not set - # # Web Servers/Proxies # @@ -2470,6 +2396,7 @@ CONFIG_PACKAGE_fastd=y # CONFIG_PACKAGE_axtlswrap is not set # CONFIG_PACKAGE_crowdcontrol is not set # CONFIG_PACKAGE_dansguardian is not set +# CONFIG_PACKAGE_gatling is not set # CONFIG_PACKAGE_haproxy is not set # CONFIG_PACKAGE_hiawatha is not set # CONFIG_PACKAGE_lighttpd is not set @@ -2483,9 +2410,8 @@ CONFIG_PACKAGE_fastd=y # CONFIG_PACKAGE_pepsal is not set # CONFIG_PACKAGE_polipo is not set # CONFIG_PACKAGE_privoxy is not set +# CONFIG_PACKAGE_redsocks is not set # CONFIG_PACKAGE_seeks is not set -# CONFIG_PACKAGE_sockd is not set -# CONFIG_PACKAGE_socksify is not set # CONFIG_PACKAGE_spawn-fcgi is not set # CONFIG_PACKAGE_squid is not set # CONFIG_PACKAGE_srelay is not set @@ -2538,8 +2464,7 @@ CONFIG_PACKAGE_wavemon=y # CONFIG_PACKAGE_bwping is not set # CONFIG_PACKAGE_cdp-tools is not set # CONFIG_PACKAGE_cifsmount is not set -CONFIG_PACKAGE_crda=y -# CONFIG_PACKAGE_cups is not set +# CONFIG_PACKAGE_crda is not set # CONFIG_PACKAGE_daemonlogger is not set # CONFIG_PACKAGE_darkstat is not set # CONFIG_PACKAGE_ditg is not set @@ -2571,20 +2496,8 @@ CONFIG_PACKAGE_crda=y # CONFIG_PACKAGE_httping-nossl is not set # CONFIG_PACKAGE_ifenslave is not set # CONFIG_PACKAGE_ifstat is not set -# CONFIG_PACKAGE_iftop is not set # CONFIG_PACKAGE_ipcad is not set -# CONFIG_PACKAGE_iperf is not set -# CONFIG_PACKAGE_iperf-mt is not set -# CONFIG_PACKAGE_ipset is not set # CONFIG_PACKAGE_iptraf is not set -# CONFIG_PACKAGE_iputils-arping is not set -# CONFIG_PACKAGE_iputils-clockdiff is not set -# CONFIG_PACKAGE_iputils-ping is not set -# CONFIG_PACKAGE_iputils-ping6 is not set -# CONFIG_PACKAGE_iputils-tftpd is not set -# CONFIG_PACKAGE_iputils-tracepath is not set -# CONFIG_PACKAGE_iputils-tracepath6 is not set -# CONFIG_PACKAGE_iputils-traceroute6 is not set CONFIG_PACKAGE_iw=y # CONFIG_PACKAGE_jtg is not set # CONFIG_PACKAGE_keepalived is not set @@ -2594,7 +2507,6 @@ CONFIG_PACKAGE_iw=y # CONFIG_PACKAGE_krb5-server is not set # CONFIG_PACKAGE_l2tpv3tun is not set # CONFIG_PACKAGE_lft is not set -# CONFIG_PACKAGE_lispconf is not set # CONFIG_PACKAGE_lispd is not set # CONFIG_PACKAGE_lsm is not set # CONFIG_PACKAGE_mac-to-devinfo is not set @@ -2605,6 +2517,8 @@ CONFIG_PACKAGE_iw=y # CONFIG_PACKAGE_mini-snmpd is not set # CONFIG_PACKAGE_mosquitto is not set # CONFIG_PACKAGE_mosquitto-client is not set +# CONFIG_PACKAGE_mosquitto-client-nossl is not set +# CONFIG_PACKAGE_mosquitto-nossl is not set # CONFIG_PACKAGE_mrtg is not set # CONFIG_PACKAGE_mtr is not set # CONFIG_PACKAGE_multiwan is not set @@ -2652,8 +2566,6 @@ CONFIG_PACKAGE_iw=y # CONFIG_PACKAGE_radsecproxy is not set # CONFIG_PACKAGE_rrs is not set # CONFIG_PACKAGE_rrs-nossl is not set -# CONFIG_PACKAGE_samba36-client is not set -# CONFIG_PACKAGE_samba36-server is not set # CONFIG_PACKAGE_scdp is not set # CONFIG_PACKAGE_sctp is not set # CONFIG_PACKAGE_ser2net is not set @@ -2677,14 +2589,13 @@ CONFIG_PACKAGE_iw=y # CONFIG_PACKAGE_stunnel is not set # CONFIG_PACKAGE_synce-dccm is not set CONFIG_PACKAGE_tc=y -# CONFIG_PACKAGE_tcpdump is not set -# CONFIG_PACKAGE_tcpdump-mini is not set # CONFIG_PACKAGE_tcptraceroute is not set # CONFIG_PACKAGE_tctool is not set # CONFIG_PACKAGE_tor is not set # CONFIG_PACKAGE_tor-alpha is not set # CONFIG_PACKAGE_tor-alpha-fw-helper is not set # CONFIG_PACKAGE_tor-alpha-geoip is not set +# CONFIG_PACKAGE_tor-fw-helper is not set # CONFIG_PACKAGE_tor-geoip is not set # CONFIG_PACKAGE_ttcp is not set # CONFIG_PACKAGE_ucarp is not set @@ -2736,7 +2647,6 @@ CONFIG_PACKAGE_wpad-mini=y # CONFIG_PACKAGE_libnfsidmap is not set # CONFIG_PACKAGE_libow is not set # CONFIG_PACKAGE_libow-capi is not set -# CONFIG_PACKAGE_libsysfs is not set # # Firewall @@ -2748,6 +2658,16 @@ CONFIG_PACKAGE_libip6tc=y # CONFIG_PACKAGE_libiptc is not set CONFIG_PACKAGE_libxtables=y +# +# Printing +# +# CONFIG_PACKAGE_libcups is not set +# CONFIG_PACKAGE_libcupscgi is not set +# CONFIG_PACKAGE_libcupsdriver is not set +# CONFIG_PACKAGE_libcupsimage is not set +# CONFIG_PACKAGE_libcupsmime is not set +# CONFIG_PACKAGE_libcupsppdc is not set + # # SSL # @@ -2838,7 +2758,6 @@ CONFIG_PACKAGE_libblobmsg-json=y # CONFIG_PACKAGE_libcap is not set # CONFIG_PACKAGE_libcares is not set # CONFIG_PACKAGE_libcelt is not set -# CONFIG_PACKAGE_libcharset is not set # CONFIG_PACKAGE_libcli is not set # CONFIG_PACKAGE_libclinkc is not set # CONFIG_PACKAGE_libconfig is not set @@ -2850,6 +2769,7 @@ CONFIG_PACKAGE_libblobmsg-json=y # CONFIG_PACKAGE_libdaemon is not set # CONFIG_PACKAGE_libdaq is not set # CONFIG_PACKAGE_libdb47 is not set +# CONFIG_PACKAGE_libdb47xx is not set # CONFIG_PACKAGE_libdbi is not set # CONFIG_PACKAGE_libdbus is not set # CONFIG_PACKAGE_libdbus-glib is not set @@ -2858,13 +2778,8 @@ CONFIG_PACKAGE_libblobmsg-json=y # CONFIG_PACKAGE_libdnet is not set # CONFIG_PACKAGE_libdvbpsi is not set # CONFIG_PACKAGE_libdvdread is not set -# CONFIG_PACKAGE_libelf is not set +# CONFIG_PACKAGE_libelf1 is not set # CONFIG_PACKAGE_libevent is not set -# CONFIG_PACKAGE_libevent2 is not set -# CONFIG_PACKAGE_libevent2-core is not set -# CONFIG_PACKAGE_libevent2-extra is not set -# CONFIG_PACKAGE_libevent2-openssl is not set -# CONFIG_PACKAGE_libevent2-pthreads is not set # CONFIG_PACKAGE_libeventlog is not set # CONFIG_PACKAGE_libexif is not set # CONFIG_PACKAGE_libexpat is not set @@ -2876,6 +2791,7 @@ CONFIG_PACKAGE_libblobmsg-json=y # CONFIG_PACKAGE_libffmpeg-full is not set # CONFIG_PACKAGE_libffmpeg-mini is not set # CONFIG_PACKAGE_libflac is not set +# CONFIG_PACKAGE_libfreecwmp is not set # CONFIG_PACKAGE_libfreefare is not set # CONFIG_PACKAGE_libfreenect is not set # CONFIG_PACKAGE_libfreetype is not set @@ -2883,6 +2799,7 @@ CONFIG_PACKAGE_libblobmsg-json=y # CONFIG_PACKAGE_libgcrypt is not set # CONFIG_PACKAGE_libgd is not set # CONFIG_PACKAGE_libgdbm is not set +# CONFIG_PACKAGE_libgee is not set # CONFIG_PACKAGE_libgmp is not set # CONFIG_PACKAGE_libgpg-error is not set # CONFIG_PACKAGE_libgpgme is not set @@ -2892,26 +2809,27 @@ CONFIG_PACKAGE_libblobmsg-json=y # CONFIG_PACKAGE_libgsl is not set # CONFIG_PACKAGE_libgsm is not set # CONFIG_PACKAGE_libgssapi is not set +# CONFIG_PACKAGE_libgssdp is not set +# CONFIG_PACKAGE_libgupnp is not set +# CONFIG_PACKAGE_libgupnp-av is not set +# CONFIG_PACKAGE_libgupnp-dlna is not set # CONFIG_PACKAGE_libhowl is not set -# CONFIG_PACKAGE_libiconv is not set -# CONFIG_PACKAGE_libiconv-full is not set # CONFIG_PACKAGE_libid3tag is not set # CONFIG_PACKAGE_libidn is not set # CONFIG_PACKAGE_libiksemel is not set # CONFIG_PACKAGE_libimobiledevice is not set # CONFIG_PACKAGE_libinklevel is not set -# CONFIG_PACKAGE_libintl is not set -# CONFIG_PACKAGE_libintl-full is not set # CONFIG_PACKAGE_libiw is not set # CONFIG_PACKAGE_libiwinfo is not set # CONFIG_PACKAGE_libjpeg is not set +# CONFIG_PACKAGE_libjpeg-turbo is not set # CONFIG_PACKAGE_libjs is not set CONFIG_PACKAGE_libjson=y # CONFIG_PACKAGE_libldns is not set # CONFIG_PACKAGE_libleptonica is not set # CONFIG_PACKAGE_libltdl is not set # CONFIG_PACKAGE_liblua is not set -CONFIG_PACKAGE_liblzo=y +# CONFIG_PACKAGE_liblzo is not set # CONFIG_PACKAGE_libmad is not set # CONFIG_PACKAGE_libmagic is not set # CONFIG_PACKAGE_libmbus is not set @@ -2921,9 +2839,9 @@ CONFIG_PACKAGE_liblzo=y # CONFIG_PACKAGE_libmikmod is not set # CONFIG_PACKAGE_libminiupnpc is not set # CONFIG_PACKAGE_libmms is not set -# CONFIG_PACKAGE_libmnl is not set # CONFIG_PACKAGE_libmodbus is not set # CONFIG_PACKAGE_libmosquitto is not set +# CONFIG_PACKAGE_libmosquitto-nossl is not set # CONFIG_PACKAGE_libmount is not set # CONFIG_PACKAGE_libmpcdec is not set # CONFIG_PACKAGE_libmpd is not set @@ -2937,13 +2855,11 @@ CONFIG_PACKAGE_libncurses=y # CONFIG_PACKAGE_libneon is not set # CONFIG_PACKAGE_libnet0 is not set # CONFIG_PACKAGE_libnet1 is not set -# CONFIG_PACKAGE_libnetfilter-conntrack is not set # CONFIG_PACKAGE_libnetfilter-log is not set # CONFIG_PACKAGE_libnetfilter-queue is not set # CONFIG_PACKAGE_libnetsnmp is not set # CONFIG_PACKAGE_libnewt is not set # CONFIG_PACKAGE_libnfc is not set -# CONFIG_PACKAGE_libnfnetlink is not set # CONFIG_PACKAGE_libnids is not set # CONFIG_PACKAGE_libnl is not set CONFIG_PACKAGE_libnl-tiny=y @@ -2952,7 +2868,6 @@ CONFIG_PACKAGE_libnl-tiny=y # CONFIG_PACKAGE_liboil is not set # CONFIG_PACKAGE_libol is not set # CONFIG_PACKAGE_libopal is not set -# CONFIG_PACKAGE_libopencdk is not set # CONFIG_PACKAGE_libopenh323 is not set # CONFIG_PACKAGE_libopenldap is not set # CONFIG_PACKAGE_liboping is not set @@ -2968,18 +2883,19 @@ CONFIG_PACKAGE_libnl-tiny=y # CONFIG_PACKAGE_libplist is not set # CONFIG_PACKAGE_libplistcxx is not set # CONFIG_PACKAGE_libpng is not set -# CONFIG_PACKAGE_libpopt is not set # CONFIG_PACKAGE_libprotobuf-c is not set # CONFIG_PACKAGE_libptmalloc3 is not set +# CONFIG_PACKAGE_libqmi is not set # CONFIG_PACKAGE_libradiusclient-ng is not set # CONFIG_PACKAGE_libre is not set # CONFIG_PACKAGE_libreadline is not set # CONFIG_PACKAGE_librem is not set -CONFIG_PACKAGE_librpc=y +# CONFIG_PACKAGE_librpc is not set # CONFIG_PACKAGE_librpcsecgss is not set # CONFIG_PACKAGE_librrd is not set # CONFIG_PACKAGE_librrd1 is not set # CONFIG_PACKAGE_librsync is not set +# CONFIG_PACKAGE_librtlsdr is not set # CONFIG_PACKAGE_libruby is not set # CONFIG_PACKAGE_libsamplerate is not set # CONFIG_PACKAGE_libsasl2 is not set @@ -2992,7 +2908,6 @@ CONFIG_PACKAGE_librpc=y # CONFIG_PACKAGE_libslang2 is not set # CONFIG_PACKAGE_libsml is not set # CONFIG_PACKAGE_libsndfile is not set -# CONFIG_PACKAGE_libsocks is not set # CONFIG_PACKAGE_libsoup is not set # CONFIG_PACKAGE_libspandsp is not set # CONFIG_PACKAGE_libspeex is not set @@ -3010,9 +2925,11 @@ CONFIG_PACKAGE_libubox=y CONFIG_PACKAGE_libuci=y # CONFIG_PACKAGE_libuci-lua is not set # CONFIG_PACKAGE_libucl is not set -CONFIG_PACKAGE_libuecc=y +# CONFIG_PACKAGE_libuecc is not set +CONFIG_PACKAGE_libugpio=y # CONFIG_PACKAGE_libunbound is not set # CONFIG_PACKAGE_libupnp is not set +# CONFIG_PACKAGE_liburcu is not set # CONFIG_PACKAGE_libusb is not set # CONFIG_PACKAGE_libusb-1.0 is not set # CONFIG_PACKAGE_libusbmuxd is not set @@ -3030,8 +2947,9 @@ CONFIG_PACKAGE_libuecc=y # CONFIG_PACKAGE_libzip is not set # CONFIG_PACKAGE_libzstream is not set # CONFIG_PACKAGE_linux-atm is not set +# CONFIG_PACKAGE_lttng-ust is not set # CONFIG_PACKAGE_mxml is not set -CONFIG_PACKAGE_nacl=y +# CONFIG_PACKAGE_nacl is not set # CONFIG_PACKAGE_phidget21 is not set # CONFIG_PACKAGE_poco is not set # CONFIG_PACKAGE_protobuf is not set @@ -3058,7 +2976,7 @@ CONFIG_PACKAGE_terminfo=y # CONFIG_PACKAGE_xmpp4r is not set # CONFIG_PACKAGE_zaptel-libtonezone is not set # CONFIG_PACKAGE_zaptel14-libtonezone is not set -CONFIG_PACKAGE_zlib=y +# CONFIG_PACKAGE_zlib is not set # # Multimedia @@ -3088,7 +3006,7 @@ CONFIG_PACKAGE_zlib=y # CONFIG_PACKAGE_gst-mod-asfmux is not set # CONFIG_PACKAGE_gst-mod-audioconvert is not set # CONFIG_PACKAGE_gst-mod-audiofx is not set -# CONFIG_PACKAGE_gst-mod-audioparsersbad is not set +# CONFIG_PACKAGE_gst-mod-audioparsers is not set # CONFIG_PACKAGE_gst-mod-audiorate is not set # CONFIG_PACKAGE_gst-mod-audioresample is not set # CONFIG_PACKAGE_gst-mod-audiotestsrc is not set @@ -3107,6 +3025,7 @@ CONFIG_PACKAGE_zlib=y # CONFIG_PACKAGE_gst-mod-dtmf is not set # CONFIG_PACKAGE_gst-mod-dvdspu is not set # CONFIG_PACKAGE_gst-mod-equalizer is not set +# CONFIG_PACKAGE_gst-mod-faad is not set # CONFIG_PACKAGE_gst-mod-festival is not set # CONFIG_PACKAGE_gst-mod-flac is not set # CONFIG_PACKAGE_gst-mod-freeze is not set @@ -3118,7 +3037,7 @@ CONFIG_PACKAGE_zlib=y # CONFIG_PACKAGE_gst-mod-id3demux is not set # CONFIG_PACKAGE_gst-mod-id3tag is not set # CONFIG_PACKAGE_gst-mod-interleave is not set -# CONFIG_PACKAGE_gst-mod-invtelecine is not set +# CONFIG_PACKAGE_gst-mod-isomp4 is not set # CONFIG_PACKAGE_gst-mod-jpegformat is not set # CONFIG_PACKAGE_gst-mod-lame is not set # CONFIG_PACKAGE_gst-mod-legacyresample is not set @@ -3127,7 +3046,6 @@ CONFIG_PACKAGE_zlib=y # CONFIG_PACKAGE_gst-mod-mad is not set # CONFIG_PACKAGE_gst-mod-mms is not set # CONFIG_PACKAGE_gst-mod-mpeg2dec is not set -# CONFIG_PACKAGE_gst-mod-mpeg4videoparse is not set # CONFIG_PACKAGE_gst-mod-mpegdemux is not set # CONFIG_PACKAGE_gst-mod-mpegpsmux is not set # CONFIG_PACKAGE_gst-mod-mpegtsmux is not set @@ -3143,7 +3061,6 @@ CONFIG_PACKAGE_zlib=y # CONFIG_PACKAGE_gst-mod-pcapparse is not set # CONFIG_PACKAGE_gst-mod-playbin is not set # CONFIG_PACKAGE_gst-mod-pnm is not set -# CONFIG_PACKAGE_gst-mod-qtmux is not set # CONFIG_PACKAGE_gst-mod-rawparse is not set # CONFIG_PACKAGE_gst-mod-replaygain is not set # CONFIG_PACKAGE_gst-mod-rtp is not set @@ -3152,7 +3069,6 @@ CONFIG_PACKAGE_zlib=y # CONFIG_PACKAGE_gst-mod-scaletempoplugin is not set # CONFIG_PACKAGE_gst-mod-sdpelem is not set # CONFIG_PACKAGE_gst-mod-segmentclip is not set -# CONFIG_PACKAGE_gst-mod-selector is not set # CONFIG_PACKAGE_gst-mod-siren is not set # CONFIG_PACKAGE_gst-mod-souphttpsrc is not set # CONFIG_PACKAGE_gst-mod-spectrum is not set @@ -3164,7 +3080,6 @@ CONFIG_PACKAGE_zlib=y # CONFIG_PACKAGE_gst-mod-tta is not set # CONFIG_PACKAGE_gst-mod-typefindfunctions is not set # CONFIG_PACKAGE_gst-mod-udp is not set -# CONFIG_PACKAGE_gst-mod-valve is not set # CONFIG_PACKAGE_gst-mod-videomeasure is not set # CONFIG_PACKAGE_gst-mod-videosignal is not set # CONFIG_PACKAGE_gst-mod-videotestsrc is not set @@ -3210,7 +3125,15 @@ CONFIG_PACKAGE_zlib=y # CONFIG_PACKAGE_motion is not set # CONFIG_PACKAGE_peercast is not set # CONFIG_PACKAGE_puppy is not set +# CONFIG_PACKAGE_rygel is not set +# CONFIG_PACKAGE_rygel-external is not set +# CONFIG_PACKAGE_rygel-media-export is not set +# CONFIG_PACKAGE_rygel-mpris is not set +# CONFIG_PACKAGE_rygel-playbin is not set +# CONFIG_PACKAGE_rygel-playbin-gst-suggested is not set +# CONFIG_PACKAGE_rygel-tracker is not set # CONFIG_PACKAGE_streamripper is not set +# CONFIG_PACKAGE_tvheadend is not set # CONFIG_PACKAGE_vips is not set # @@ -3275,7 +3198,6 @@ CONFIG_PACKAGE_ubusd=y # CONFIG_PACKAGE_owshell is not set # CONFIG_PACKAGE_reiserfsprogs is not set # CONFIG_PACKAGE_resize2fs is not set -# CONFIG_PACKAGE_sysfsutils is not set # CONFIG_PACKAGE_tune2fs is not set # @@ -3307,6 +3229,7 @@ CONFIG_PACKAGE_ubusd=y # # CONFIG_PACKAGE_boxbackup is not set # CONFIG_PACKAGE_rdiff-backup is not set +# CONFIG_PACKAGE_rsnapshot is not set # # compression @@ -3397,7 +3320,6 @@ CONFIG_PACKAGE_ubusd=y # CONFIG_PACKAGE_clish is not set # CONFIG_PACKAGE_cmdpad is not set # CONFIG_PACKAGE_collectd is not set -# CONFIG_PACKAGE_compcache is not set # CONFIG_PACKAGE_coreutils is not set # CONFIG_PACKAGE_cpusage is not set # CONFIG_PACKAGE_crypto-tools is not set @@ -3435,6 +3357,7 @@ CONFIG_PACKAGE_ubusd=y # CONFIG_PACKAGE_gnupg is not set # CONFIG_PACKAGE_gnuplot is not set CONFIG_PACKAGE_gpioctl=y +CONFIG_PACKAGE_gpioctl-sysfs=y # CONFIG_PACKAGE_gsm-utils is not set # CONFIG_PACKAGE_gzip is not set # CONFIG_PACKAGE_haserl is not set @@ -3444,7 +3367,6 @@ CONFIG_PACKAGE_gpioctl=y # CONFIG_PACKAGE_huaweiaktbbo is not set # CONFIG_PACKAGE_hwclock is not set # CONFIG_PACKAGE_i2c-tools is not set -# CONFIG_PACKAGE_iconv is not set # CONFIG_PACKAGE_ink is not set # CONFIG_PACKAGE_input-utils is not set # CONFIG_PACKAGE_io is not set @@ -3493,6 +3415,7 @@ CONFIG_PACKAGE_jshn=y # CONFIG_PACKAGE_mtd-utils is not set # CONFIG_PACKAGE_namei is not set # CONFIG_PACKAGE_nprobe is not set +# CONFIG_PACKAGE_nut is not set # CONFIG_PACKAGE_ocf-crypto-headers is not set # CONFIG_PACKAGE_open2300 is not set # CONFIG_PACKAGE_openldap-utils is not set @@ -3524,6 +3447,7 @@ CONFIG_PACKAGE_jshn=y # CONFIG_PACKAGE_rrdtool is not set # CONFIG_PACKAGE_rrdtool1 is not set # CONFIG_PACKAGE_rsyncrypto is not set +# CONFIG_PACKAGE_rtl-sdr is not set # CONFIG_PACKAGE_sane-backends is not set # CONFIG_PACKAGE_sane-frontends is not set # CONFIG_PACKAGE_schedtool is not set @@ -3547,6 +3471,7 @@ CONFIG_PACKAGE_jshn=y # CONFIG_PACKAGE_smartmontools is not set # CONFIG_PACKAGE_spidev-test is not set # CONFIG_PACKAGE_ssldump is not set +# CONFIG_PACKAGE_stm32flash is not set # CONFIG_PACKAGE_strace is not set # CONFIG_PACKAGE_stress is not set # CONFIG_PACKAGE_sysstat is not set @@ -3559,7 +3484,8 @@ CONFIG_PACKAGE_jshn=y # CONFIG_PACKAGE_time is not set # CONFIG_PACKAGE_tmux is not set # CONFIG_PACKAGE_triggerhappy is not set -# CONFIG_PACKAGE_uboot-envtools is not set +CONFIG_PACKAGE_uboot-envtools=y +# CONFIG_PACKAGE_uboot-envtools-mmc is not set # CONFIG_PACKAGE_upx is not set # CONFIG_PACKAGE_usb-modeswitch is not set # CONFIG_PACKAGE_usbmuxd is not set @@ -3568,7 +3494,6 @@ CONFIG_PACKAGE_jshn=y # CONFIG_PACKAGE_uuidd is not set # CONFIG_PACKAGE_uuidgen is not set # CONFIG_PACKAGE_v4l-utils is not set -# CONFIG_PACKAGE_valgrind is not set # CONFIG_PACKAGE_watchcat is not set # CONFIG_PACKAGE_wattsup is not set # CONFIG_PACKAGE_whereis is not set @@ -3615,12 +3540,12 @@ CONFIG_PACKAGE_jshn=y # # Development # -# CONFIG_PACKAGE_binutils is not set # CONFIG_PACKAGE_cppunit is not set # CONFIG_PACKAGE_diffutils is not set +# CONFIG_PACKAGE_lttng-tools is not set # CONFIG_PACKAGE_make is not set -# CONFIG_PACKAGE_objdump is not set # CONFIG_PACKAGE_patch is not set +# CONFIG_PACKAGE_perf is not set # CONFIG_PACKAGE_python-sip is not set # CONFIG_PACKAGE_tig is not set @@ -3684,6 +3609,7 @@ CONFIG_PACKAGE_jshn=y # # CONFIG_PACKAGE_microperl is not set # CONFIG_PACKAGE_perl is not set +# CONFIG_PACKAGE_perl-test-harness is not set # # Python @@ -3730,6 +3656,9 @@ CONFIG_PACKAGE_jshn=y # CONFIG_PACKAGE_python-openssl is not set # CONFIG_PACKAGE_python-pcap is not set # CONFIG_PACKAGE_python-psycopg is not set +# CONFIG_PACKAGE_python-pydaemon is not set +# CONFIG_PACKAGE_python-pyosc is not set +# CONFIG_PACKAGE_python-rsfile is not set # CONFIG_PACKAGE_python-shutil is not set # CONFIG_PACKAGE_python-smbus is not set # CONFIG_PACKAGE_python-sqlite is not set @@ -3752,6 +3681,8 @@ CONFIG_PACKAGE_jshn=y # CONFIG_PACKAGE_ruby is not set # CONFIG_PACKAGE_4th is not set # CONFIG_PACKAGE_eggdrop is not set +# CONFIG_PACKAGE_libgupnp-vala is not set # CONFIG_PACKAGE_sigscheme is not set # CONFIG_PACKAGE_slsh is not set # CONFIG_PACKAGE_tcl is not set +# CONFIG_PACKAGE_vala is not set diff --git a/build_patches/backport_the_upstream_entropy_changes.patch b/build_patches/backport_the_upstream_entropy_changes.patch deleted file mode 100644 index d32779d..0000000 --- a/build_patches/backport_the_upstream_entropy_changes.patch +++ /dev/null @@ -1,1388 +0,0 @@ -Index: /trunk/target/linux/generic/patches-3.3/051-rng_git_backport-remove_irqf_sample_random.patch -=================================================================== ---- /trunk/target/linux/generic/patches-3.3/051-rng_git_backport-remove_irqf_sample_random.patch (revision 33559) -+++ /trunk/target/linux/generic/patches-3.3/051-rng_git_backport-remove_irqf_sample_random.patch (revision 33559) -@@ -0,0 +1,543 @@ -+--- a/arch/arm/mach-omap1/board-palmz71.c -++++ b/arch/arm/mach-omap1/board-palmz71.c -+@@ -291,8 +291,7 @@ palmz71_gpio_setup(int early) -+ } -+ gpio_direction_input(PALMZ71_USBDETECT_GPIO); -+ if (request_irq(gpio_to_irq(PALMZ71_USBDETECT_GPIO), -+- palmz71_powercable, IRQF_SAMPLE_RANDOM, -+- "palmz71-cable", 0)) -++ palmz71_powercable, 0, "palmz71-cable", 0)) -+ printk(KERN_ERR -+ "IRQ request for power cable failed!\n"); -+ palmz71_powercable(gpio_to_irq(PALMZ71_USBDETECT_GPIO), 0); -+--- a/arch/arm/mach-pxa/lubbock.c -++++ b/arch/arm/mach-pxa/lubbock.c -+@@ -455,7 +455,7 @@ static int lubbock_mci_init(struct devic -+ init_timer(&mmc_timer); -+ mmc_timer.data = (unsigned long) data; -+ return request_irq(LUBBOCK_SD_IRQ, lubbock_detect_int, -+- IRQF_SAMPLE_RANDOM, "lubbock-sd-detect", data); -++ 0, "lubbock-sd-detect", data); -+ } -+ -+ static int lubbock_mci_get_ro(struct device *dev) -+--- a/arch/arm/mach-pxa/magician.c -++++ b/arch/arm/mach-pxa/magician.c -+@@ -617,9 +617,8 @@ static struct platform_device bq24022 = -+ static int magician_mci_init(struct device *dev, -+ irq_handler_t detect_irq, void *data) -+ { -+- return request_irq(IRQ_MAGICIAN_SD, detect_irq, -+- IRQF_DISABLED | IRQF_SAMPLE_RANDOM, -+- "mmc card detect", data); -++ return request_irq(IRQ_MAGICIAN_SD, detect_irq, IRQF_DISABLED, -++ "mmc card detect", data); -+ } -+ -+ static void magician_mci_exit(struct device *dev, void *data) -+--- a/arch/arm/mach-pxa/trizeps4.c -++++ b/arch/arm/mach-pxa/trizeps4.c -+@@ -332,8 +332,8 @@ static int trizeps4_mci_init(struct devi -+ int err; -+ -+ err = request_irq(TRIZEPS4_MMC_IRQ, mci_detect_int, -+- IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_SAMPLE_RANDOM, -+- "MMC card detect", data); -++ IRQF_DISABLED | IRQF_TRIGGER_RISING, -++ "MMC card detect", data); -+ if (err) { -+ printk(KERN_ERR "trizeps4_mci_init: MMC/SD: can't request" -+ "MMC card detect IRQ\n"); -+--- a/arch/ia64/kernel/irq_ia64.c -++++ b/arch/ia64/kernel/irq_ia64.c -+@@ -23,7 +23,6 @@ -+ #include -+ #include -+ #include -+-#include /* for rand_initialize_irq() */ -+ #include -+ #include -+ #include -+--- a/arch/sparc/kernel/ldc.c -++++ b/arch/sparc/kernel/ldc.c -+@@ -1250,14 +1250,12 @@ int ldc_bind(struct ldc_channel *lp, con -+ snprintf(lp->rx_irq_name, LDC_IRQ_NAME_MAX, "%s RX", name); -+ snprintf(lp->tx_irq_name, LDC_IRQ_NAME_MAX, "%s TX", name); -+ -+- err = request_irq(lp->cfg.rx_irq, ldc_rx, -+- IRQF_SAMPLE_RANDOM | IRQF_DISABLED, -++ err = request_irq(lp->cfg.rx_irq, ldc_rx, IRQF_DISABLED, -+ lp->rx_irq_name, lp); -+ if (err) -+ return err; -+ -+- err = request_irq(lp->cfg.tx_irq, ldc_tx, -+- IRQF_SAMPLE_RANDOM | IRQF_DISABLED, -++ err = request_irq(lp->cfg.tx_irq, ldc_tx, IRQF_DISABLED, -+ lp->tx_irq_name, lp); -+ if (err) { -+ free_irq(lp->cfg.rx_irq, lp); -+--- a/arch/um/drivers/line.c -++++ b/arch/um/drivers/line.c -+@@ -371,7 +371,7 @@ static irqreturn_t line_write_interrupt( -+ int line_setup_irq(int fd, int input, int output, struct line *line, void *data) -+ { -+ const struct line_driver *driver = line->driver; -+- int err = 0, flags = IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM; -++ int err = 0, flags = IRQF_DISABLED | IRQF_SHARED; -+ -+ if (input) -+ err = um_request_irq(driver->read_irq, fd, IRQ_READ, -+@@ -807,7 +807,7 @@ void register_winch_irq(int fd, int tty_ -+ .stack = stack }); -+ -+ if (um_request_irq(WINCH_IRQ, fd, IRQ_READ, winch_interrupt, -+- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, -++ IRQF_DISABLED | IRQF_SHARED, -+ "winch", winch) < 0) { -+ printk(KERN_ERR "register_winch_irq - failed to register " -+ "IRQ\n"); -+--- a/arch/um/drivers/mconsole_kern.c -++++ b/arch/um/drivers/mconsole_kern.c -+@@ -773,7 +773,7 @@ static int __init mconsole_init(void) -+ register_reboot_notifier(&reboot_notifier); -+ -+ err = um_request_irq(MCONSOLE_IRQ, sock, IRQ_READ, mconsole_interrupt, -+- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, -++ IRQF_DISABLED | IRQF_SHARED, -+ "mconsole", (void *)sock); -+ if (err) { -+ printk(KERN_ERR "Failed to get IRQ for management console\n"); -+--- a/arch/um/drivers/port_kern.c -++++ b/arch/um/drivers/port_kern.c -+@@ -100,7 +100,7 @@ static int port_accept(struct port_list -+ .port = port }); -+ -+ if (um_request_irq(TELNETD_IRQ, socket[0], IRQ_READ, pipe_interrupt, -+- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, -++ IRQF_DISABLED | IRQF_SHARED, -+ "telnetd", conn)) { -+ printk(KERN_ERR "port_accept : failed to get IRQ for " -+ "telnetd\n"); -+@@ -184,7 +184,7 @@ void *port_data(int port_num) -+ } -+ -+ if (um_request_irq(ACCEPT_IRQ, fd, IRQ_READ, port_interrupt, -+- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, -++ IRQF_DISABLED | IRQF_SHARED, -+ "port", port)) { -+ printk(KERN_ERR "Failed to get IRQ for port %d\n", port_num); -+ goto out_close; -+--- a/arch/um/drivers/random.c -++++ b/arch/um/drivers/random.c -+@@ -131,8 +131,7 @@ static int __init rng_init (void) -+ random_fd = err; -+ -+ err = um_request_irq(RANDOM_IRQ, random_fd, IRQ_READ, random_interrupt, -+- IRQF_DISABLED | IRQF_SAMPLE_RANDOM, "random", -+- NULL); -++ IRQF_DISABLED, "random", NULL); -+ if (err) -+ goto err_out_cleanup_hw; -+ -+--- a/arch/um/drivers/xterm_kern.c -++++ b/arch/um/drivers/xterm_kern.c -+@@ -50,8 +50,7 @@ int xterm_fd(int socket, int *pid_out) -+ init_completion(&data->ready); -+ -+ err = um_request_irq(XTERM_IRQ, socket, IRQ_READ, xterm_interrupt, -+- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, -+- "xterm", data); -++ IRQF_DISABLED | IRQF_SHARED, "xterm", data); -+ if (err) { -+ printk(KERN_ERR "xterm_fd : failed to get IRQ for xterm, " -+ "err = %d\n", err); -+--- a/arch/um/kernel/sigio.c -++++ b/arch/um/kernel/sigio.c -+@@ -25,8 +25,7 @@ int write_sigio_irq(int fd) -+ int err; -+ -+ err = um_request_irq(SIGIO_WRITE_IRQ, fd, IRQ_READ, sigio_interrupt, -+- IRQF_DISABLED|IRQF_SAMPLE_RANDOM, "write sigio", -+- NULL); -++ IRQF_DISABLED, "write sigio", NULL); -+ if (err) { -+ printk(KERN_ERR "write_sigio_irq : um_request_irq failed, " -+ "err = %d\n", err); -+--- a/Documentation/feature-removal-schedule.txt -++++ b/Documentation/feature-removal-schedule.txt -+@@ -71,20 +71,6 @@ Who: Luis R. Rodriguez & Matt Mackall -+- -+---------------------------- -+- -+ What: The ieee80211_regdom module parameter -+ When: March 2010 / desktop catchup -+ -+--- a/drivers/block/xen-blkfront.c -++++ b/drivers/block/xen-blkfront.c -+@@ -852,9 +852,8 @@ static int setup_blkring(struct xenbus_d -+ if (err) -+ goto fail; -+ -+- err = bind_evtchn_to_irqhandler(info->evtchn, -+- blkif_interrupt, -+- IRQF_SAMPLE_RANDOM, "blkif", info); -++ err = bind_evtchn_to_irqhandler(info->evtchn, blkif_interrupt, 0, -++ "blkif", info); -+ if (err <= 0) { -+ xenbus_dev_fatal(dev, err, -+ "bind_evtchn_to_irqhandler failed"); -+--- a/drivers/char/random.c -++++ b/drivers/char/random.c -+@@ -633,43 +633,6 @@ struct timer_rand_state { -+ unsigned dont_count_entropy:1; -+ }; -+ -+-#ifndef CONFIG_GENERIC_HARDIRQS -+- -+-static struct timer_rand_state *irq_timer_state[NR_IRQS]; -+- -+-static struct timer_rand_state *get_timer_rand_state(unsigned int irq) -+-{ -+- return irq_timer_state[irq]; -+-} -+- -+-static void set_timer_rand_state(unsigned int irq, -+- struct timer_rand_state *state) -+-{ -+- irq_timer_state[irq] = state; -+-} -+- -+-#else -+- -+-static struct timer_rand_state *get_timer_rand_state(unsigned int irq) -+-{ -+- struct irq_desc *desc; -+- -+- desc = irq_to_desc(irq); -+- -+- return desc->timer_rand_state; -+-} -+- -+-static void set_timer_rand_state(unsigned int irq, -+- struct timer_rand_state *state) -+-{ -+- struct irq_desc *desc; -+- -+- desc = irq_to_desc(irq); -+- -+- desc->timer_rand_state = state; -+-} -+-#endif -+- -+ /* -+ * Add device- or boot-specific data to the input and nonblocking -+ * pools to help initialize them to unique values. -+@@ -1131,24 +1094,6 @@ static int rand_initialize(void) -+ } -+ module_init(rand_initialize); -+ -+-void rand_initialize_irq(int irq) -+-{ -+- struct timer_rand_state *state; -+- -+- state = get_timer_rand_state(irq); -+- -+- if (state) -+- return; -+- -+- /* -+- * If kzalloc returns null, we just won't use that entropy -+- * source. -+- */ -+- state = kzalloc(sizeof(struct timer_rand_state), GFP_KERNEL); -+- if (state) -+- set_timer_rand_state(irq, state); -+-} -+- -+ #ifdef CONFIG_BLOCK -+ void rand_initialize_disk(struct gendisk *disk) -+ { -+--- a/drivers/crypto/n2_core.c -++++ b/drivers/crypto/n2_core.c -+@@ -1607,8 +1607,7 @@ static int spu_map_ino(struct platform_d -+ -+ sprintf(p->irq_name, "%s-%d", irq_name, index); -+ -+- return request_irq(p->irq, handler, IRQF_SAMPLE_RANDOM, -+- p->irq_name, p); -++ return request_irq(p->irq, handler, 0, p->irq_name, p); -+ } -+ -+ static struct kmem_cache *queue_cache[2]; -+--- a/drivers/hv/vmbus_drv.c -++++ b/drivers/hv/vmbus_drv.c -+@@ -545,8 +545,7 @@ static int vmbus_bus_init(int irq) -+ if (ret) -+ goto err_cleanup; -+ -+- ret = request_irq(irq, vmbus_isr, IRQF_SAMPLE_RANDOM, -+- driver_name, hv_acpi_dev); -++ ret = request_irq(irq, vmbus_isr, 0, driver_name, hv_acpi_dev); -+ -+ if (ret != 0) { -+ pr_err("Unable to request IRQ %d\n", -+--- a/drivers/i2c/busses/i2c-pmcmsp.c -++++ b/drivers/i2c/busses/i2c-pmcmsp.c -+@@ -306,8 +306,7 @@ static int __devinit pmcmsptwi_probe(str -+ pmcmsptwi_data.irq = platform_get_irq(pldev, 0); -+ if (pmcmsptwi_data.irq) { -+ rc = request_irq(pmcmsptwi_data.irq, &pmcmsptwi_interrupt, -+- IRQF_SHARED | IRQF_SAMPLE_RANDOM, -+- pldev->name, &pmcmsptwi_data); -++ IRQF_SHARED, pldev->name, &pmcmsptwi_data); -+ if (rc == 0) { -+ /* -+ * Enable 'DONE' interrupt only. -+--- a/drivers/input/serio/hp_sdc.c -++++ b/drivers/input/serio/hp_sdc.c -+@@ -879,7 +879,7 @@ static int __init hp_sdc_init(void) -+ #endif -+ -+ errstr = "IRQ not available for"; -+- if (request_irq(hp_sdc.irq, &hp_sdc_isr, IRQF_SHARED|IRQF_SAMPLE_RANDOM, -++ if (request_irq(hp_sdc.irq, &hp_sdc_isr, IRQF_SHARED, -+ "HP SDC", &hp_sdc)) -+ goto err1; -+ -+--- a/drivers/mfd/ab3100-core.c -++++ b/drivers/mfd/ab3100-core.c -+@@ -937,9 +937,6 @@ static int __devinit ab3100_probe(struct -+ -+ err = request_threaded_irq(client->irq, NULL, ab3100_irq_handler, -+ IRQF_ONESHOT, "ab3100-core", ab3100); -+- /* This real unpredictable IRQ is of course sampled for entropy */ -+- rand_initialize_irq(client->irq); -+- -+ if (err) -+ goto exit_no_irq; -+ -+--- a/drivers/mfd/tps65010.c -++++ b/drivers/mfd/tps65010.c -+@@ -563,8 +563,7 @@ static int tps65010_probe(struct i2c_cli -+ */ -+ if (client->irq > 0) { -+ status = request_irq(client->irq, tps65010_irq, -+- IRQF_SAMPLE_RANDOM | IRQF_TRIGGER_FALLING, -+- DRIVER_NAME, tps); -++ IRQF_TRIGGER_FALLING, DRIVER_NAME, tps); -+ if (status < 0) { -+ dev_dbg(&client->dev, "can't get IRQ %d, err %d\n", -+ client->irq, status); -+--- a/drivers/net/ethernet/broadcom/tg3.c -++++ b/drivers/net/ethernet/broadcom/tg3.c -+@@ -9415,7 +9415,7 @@ static int tg3_test_interrupt(struct tg3 -+ } -+ -+ err = request_irq(tnapi->irq_vec, tg3_test_isr, -+- IRQF_SHARED | IRQF_SAMPLE_RANDOM, dev->name, tnapi); -++ IRQF_SHARED, dev->name, tnapi); -+ if (err) -+ return err; -+ -+--- a/drivers/power/pda_power.c -++++ b/drivers/power/pda_power.c -+@@ -24,11 +24,7 @@ -+ -+ static inline unsigned int get_irq_flags(struct resource *res) -+ { -+- unsigned int flags = IRQF_SAMPLE_RANDOM | IRQF_SHARED; -+- -+- flags |= res->flags & IRQF_TRIGGER_MASK; -+- -+- return flags; -++ return IRQF_SHARED | (res->flags & IRQF_TRIGGER_MASK); -+ } -+ -+ static struct device *dev; -+--- a/drivers/tty/serial/uartlite.c -++++ b/drivers/tty/serial/uartlite.c -+@@ -216,8 +216,7 @@ static int ulite_startup(struct uart_por -+ { -+ int ret; -+ -+- ret = request_irq(port->irq, ulite_isr, -+- IRQF_SHARED | IRQF_SAMPLE_RANDOM, "uartlite", port); -++ ret = request_irq(port->irq, ulite_isr, IRQF_SHARED, "uartlite", port); -+ if (ret) -+ return ret; -+ -+--- a/drivers/usb/gadget/goku_udc.c -++++ b/drivers/usb/gadget/goku_udc.c -+@@ -1839,7 +1839,7 @@ static int goku_probe(struct pci_dev *pd -+ /* init to known state, then setup irqs */ -+ udc_reset(dev); -+ udc_reinit (dev); -+- if (request_irq(pdev->irq, goku_irq, IRQF_SHARED/*|IRQF_SAMPLE_RANDOM*/, -++ if (request_irq(pdev->irq, goku_irq, IRQF_SHARED, -+ driver_name, dev) != 0) { -+ DBG(dev, "request interrupt %d failed\n", pdev->irq); -+ retval = -EBUSY; -+--- a/drivers/usb/gadget/omap_udc.c -++++ b/drivers/usb/gadget/omap_udc.c -+@@ -2943,7 +2943,7 @@ known: -+ -+ /* USB general purpose IRQ: ep0, state changes, dma, etc */ -+ status = request_irq(pdev->resource[1].start, omap_udc_irq, -+- IRQF_SAMPLE_RANDOM, driver_name, udc); -++ 0, driver_name, udc); -+ if (status != 0) { -+ ERR("can't get irq %d, err %d\n", -+ (int) pdev->resource[1].start, status); -+@@ -2952,7 +2952,7 @@ known: -+ -+ /* USB "non-iso" IRQ (PIO for all but ep0) */ -+ status = request_irq(pdev->resource[2].start, omap_udc_pio_irq, -+- IRQF_SAMPLE_RANDOM, "omap_udc pio", udc); -++ 0, "omap_udc pio", udc); -+ if (status != 0) { -+ ERR("can't get irq %d, err %d\n", -+ (int) pdev->resource[2].start, status); -+--- a/drivers/usb/gadget/pxa25x_udc.c -++++ b/drivers/usb/gadget/pxa25x_udc.c -+@@ -2202,19 +2202,15 @@ static int __init pxa25x_udc_probe(struc -+ -+ #ifdef CONFIG_ARCH_LUBBOCK -+ if (machine_is_lubbock()) { -+- retval = request_irq(LUBBOCK_USB_DISC_IRQ, -+- lubbock_vbus_irq, -+- IRQF_SAMPLE_RANDOM, -+- driver_name, dev); -++ retval = request_irq(LUBBOCK_USB_DISC_IRQ, lubbock_vbus_irq, -++ 0, driver_name, dev); -+ if (retval != 0) { -+ pr_err("%s: can't get irq %i, err %d\n", -+ driver_name, LUBBOCK_USB_DISC_IRQ, retval); -+ goto err_irq_lub; -+ } -+- retval = request_irq(LUBBOCK_USB_IRQ, -+- lubbock_vbus_irq, -+- IRQF_SAMPLE_RANDOM, -+- driver_name, dev); -++ retval = request_irq(LUBBOCK_USB_IRQ, lubbock_vbus_irq, -++ 0, driver_name, dev); -+ if (retval != 0) { -+ pr_err("%s: can't get irq %i, err %d\n", -+ driver_name, LUBBOCK_USB_IRQ, retval); -+--- a/drivers/usb/otg/gpio_vbus.c -++++ b/drivers/usb/otg/gpio_vbus.c -+@@ -51,8 +51,7 @@ struct gpio_vbus_data { -+ * edges might be workable. -+ */ -+ #define VBUS_IRQ_FLAGS \ -+- ( IRQF_SAMPLE_RANDOM | IRQF_SHARED \ -+- | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING ) -++ ( IRQF_SHARED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING ) -+ -+ -+ /* interface to regulator framework */ -+@@ -253,7 +252,7 @@ static int __init gpio_vbus_probe(struct -+ if (res) { -+ irq = res->start; -+ res->flags &= IRQF_TRIGGER_MASK; -+- res->flags |= IRQF_SAMPLE_RANDOM | IRQF_SHARED; -++ res->flags |= IRQF_SHARED; -+ } else -+ irq = gpio_to_irq(gpio); -+ -+--- a/drivers/usb/otg/isp1301_omap.c -++++ b/drivers/usb/otg/isp1301_omap.c -+@@ -1567,7 +1567,6 @@ isp1301_probe(struct i2c_client *i2c, co -+ isp->irq_type = IRQF_TRIGGER_FALLING; -+ } -+ -+- isp->irq_type |= IRQF_SAMPLE_RANDOM; -+ status = request_irq(i2c->irq, isp1301_irq, -+ isp->irq_type, DRIVER_NAME, isp); -+ if (status < 0) { -+--- a/include/linux/interrupt.h -++++ b/include/linux/interrupt.h -+@@ -44,7 +44,6 @@ -+ * -+ * IRQF_DISABLED - keep irqs disabled when calling the action handler. -+ * DEPRECATED. This flag is a NOOP and scheduled to be removed -+- * IRQF_SAMPLE_RANDOM - irq is used to feed the random generator -+ * IRQF_SHARED - allow sharing the irq among several devices -+ * IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur -+ * IRQF_TIMER - Flag to mark this interrupt as timer interrupt -+@@ -63,7 +62,6 @@ -+ * resume time. -+ */ -+ #define IRQF_DISABLED 0x00000020 -+-#define IRQF_SAMPLE_RANDOM 0x00000040 -+ #define IRQF_SHARED 0x00000080 -+ #define IRQF_PROBE_SHARED 0x00000100 -+ #define __IRQF_TIMER 0x00000200 -+--- a/include/linux/irqdesc.h -++++ b/include/linux/irqdesc.h -+@@ -39,7 +39,6 @@ struct module; -+ */ -+ struct irq_desc { -+ struct irq_data irq_data; -+- struct timer_rand_state *timer_rand_state; -+ unsigned int __percpu *kstat_irqs; -+ irq_flow_handler_t handle_irq; -+ #ifdef CONFIG_IRQ_PREFLOW_FASTEOI -+--- a/include/linux/random.h -++++ b/include/linux/random.h -+@@ -48,8 +48,6 @@ struct rnd_state { -+ -+ #ifdef __KERNEL__ -+ -+-extern void rand_initialize_irq(int irq); -+- -+ extern void add_device_randomness(const void *, unsigned int); -+ extern void add_input_randomness(unsigned int type, unsigned int code, -+ unsigned int value); -+--- a/kernel/irq/manage.c -++++ b/kernel/irq/manage.c -+@@ -891,22 +891,6 @@ __setup_irq(unsigned int irq, struct irq -+ return -ENOSYS; -+ if (!try_module_get(desc->owner)) -+ return -ENODEV; -+- /* -+- * Some drivers like serial.c use request_irq() heavily, -+- * so we have to be careful not to interfere with a -+- * running system. -+- */ -+- if (new->flags & IRQF_SAMPLE_RANDOM) { -+- /* -+- * This function might sleep, we want to call it first, -+- * outside of the atomic block. -+- * Yes, this might clear the entropy pool if the wrong -+- * driver is attempted to be loaded, without actually -+- * installing a new handler, but is this really a problem, -+- * only the sysadmin is able to do this. -+- */ -+- rand_initialize_irq(irq); -+- } -+ -+ /* -+ * Check whether the interrupt nests into another interrupt -+@@ -1342,7 +1326,6 @@ EXPORT_SYMBOL(free_irq); -+ * Flags: -+ * -+ * IRQF_SHARED Interrupt is shared -+- * IRQF_SAMPLE_RANDOM The interrupt can be used for entropy -+ * IRQF_TRIGGER_* Specify active edge(s) or level -+ * -+ */ -Index: /trunk/target/linux/generic/patches-3.3/941-ocf_20120127.patch -=================================================================== ---- /trunk/target/linux/generic/patches-3.3/941-ocf_20120127.patch (revision 32672) -+++ /trunk/target/linux/generic/patches-3.3/941-ocf_20120127.patch (revision 33559) -@@ -1,6 +1,6 @@ - --- a/drivers/char/random.c - +++ b/drivers/char/random.c --@@ -130,6 +130,9 @@ -- * void add_interrupt_randomness(int irq); -+@@ -131,6 +131,9 @@ -+ * void add_interrupt_randomness(int irq, int irq_flags); - * void add_disk_randomness(struct gendisk *disk); - * -@@ -11,5 +11,5 @@ - * the event type information from the hardware. - * --@@ -147,6 +150,13 @@ -+@@ -152,6 +155,13 @@ - * seek times do not make for good sources of entropy, as their seek - * times are usually fairly consistent. -@@ -25,5 +25,5 @@ - * particular randomness source. They do this by keeping track of the - * first and second order deltas of the event timings. --@@ -726,6 +736,63 @@ void add_disk_randomness(struct gendisk -+@@ -796,6 +806,63 @@ void add_disk_randomness(struct gendisk - } - #endif -@@ -41,5 +41,5 @@ - +void random_input_words(__u32 *buf, size_t wordcount, int ent_count) - +{ --+ mix_pool_bytes(&input_pool, buf, wordcount*4); -++ mix_pool_bytes(&input_pool, buf, wordcount*4, NULL); - + - + credit_entropy_bits(&input_pool, ent_count); -@@ -142,7 +142,7 @@ - int entropy_count; - int buf_size; --@@ -54,6 +78,10 @@ extern void add_input_randomness(unsigne -+@@ -53,6 +77,10 @@ extern void add_input_randomness(unsigne - unsigned int value); -- extern void add_interrupt_randomness(int irq); -+ extern void add_interrupt_randomness(int irq, int irq_flags); - - +extern void random_input_words(__u32 *buf, size_t wordcount, int ent_count); -@@ -151,6 +151,6 @@ - + - extern void get_random_bytes(void *buf, int nbytes); -+ extern void get_random_bytes_arch(void *buf, int nbytes); - void generate_random_uuid(unsigned char uuid_out[16]); -- - --- a/kernel/pid.c - +++ b/kernel/pid.c -Index: /trunk/target/linux/generic/patches-3.3/050-rng_git_backport.patch -=================================================================== ---- /trunk/target/linux/generic/patches-3.3/050-rng_git_backport.patch (revision 33559) -+++ /trunk/target/linux/generic/patches-3.3/050-rng_git_backport.patch (revision 33559) -@@ -0,0 +1,783 @@ -+--- a/drivers/char/random.c -++++ b/drivers/char/random.c -+@@ -125,21 +125,26 @@ -+ * The current exported interfaces for gathering environmental noise -+ * from the devices are: -+ * -++ * void add_device_randomness(const void *buf, unsigned int size); -+ * void add_input_randomness(unsigned int type, unsigned int code, -+ * unsigned int value); -+- * void add_interrupt_randomness(int irq); -++ * void add_interrupt_randomness(int irq, int irq_flags); -+ * void add_disk_randomness(struct gendisk *disk); -+ * -+ * add_input_randomness() uses the input layer interrupt timing, as well as -+ * the event type information from the hardware. -+ * -+- * add_interrupt_randomness() uses the inter-interrupt timing as random -+- * inputs to the entropy pool. Note that not all interrupts are good -+- * sources of randomness! For example, the timer interrupts is not a -+- * good choice, because the periodicity of the interrupts is too -+- * regular, and hence predictable to an attacker. Network Interface -+- * Controller interrupts are a better measure, since the timing of the -+- * NIC interrupts are more unpredictable. -++ * add_interrupt_randomness() uses the interrupt timing as random -++ * inputs to the entropy pool. Using the cycle counters and the irq source -++ * as inputs, it feeds the randomness roughly once a second. -++ * -++ * add_device_randomness() is for adding data to the random pool that -++ * is likely to differ between two devices (or possibly even per boot). -++ * This would be things like MAC addresses or serial numbers, or the -++ * read-out of the RTC. This does *not* add any actual entropy to the -++ * pool, but it initializes the pool to different values for devices -++ * that might otherwise be identical and have very little entropy -++ * available to them (particularly common in the embedded world). -+ * -+ * add_disk_randomness() uses what amounts to the seek time of block -+ * layer request events, on a per-disk_devt basis, as input to the -+@@ -248,6 +253,7 @@ -+ #include -+ #include -+ #include -++#include -+ -+ #ifdef CONFIG_GENERIC_HARDIRQS -+ # include -+@@ -256,8 +262,12 @@ -+ #include -+ #include -+ #include -++#include -+ #include -+ -++#define CREATE_TRACE_POINTS -++#include -++ -+ /* -+ * Configuration information -+ */ -+@@ -420,8 +430,10 @@ struct entropy_store { -+ /* read-write data: */ -+ spinlock_t lock; -+ unsigned add_ptr; -++ unsigned input_rotate; -+ int entropy_count; -+- int input_rotate; -++ int entropy_total; -++ unsigned int initialized:1; -+ __u8 last_data[EXTRACT_SIZE]; -+ }; -+ -+@@ -454,6 +466,10 @@ static struct entropy_store nonblocking_ -+ .pool = nonblocking_pool_data -+ }; -+ -++static __u32 const twist_table[8] = { -++ 0x00000000, 0x3b6e20c8, 0x76dc4190, 0x4db26158, -++ 0xedb88320, 0xd6d6a3e8, 0x9b64c2b0, 0xa00ae278 }; -++ -+ /* -+ * This function adds bytes into the entropy "pool". It does not -+ * update the entropy estimate. The caller should call -+@@ -464,29 +480,24 @@ static struct entropy_store nonblocking_ -+ * it's cheap to do so and helps slightly in the expected case where -+ * the entropy is concentrated in the low-order bits. -+ */ -+-static void mix_pool_bytes_extract(struct entropy_store *r, const void *in, -+- int nbytes, __u8 out[64]) -++static void _mix_pool_bytes(struct entropy_store *r, const void *in, -++ int nbytes, __u8 out[64]) -+ { -+- static __u32 const twist_table[8] = { -+- 0x00000000, 0x3b6e20c8, 0x76dc4190, 0x4db26158, -+- 0xedb88320, 0xd6d6a3e8, 0x9b64c2b0, 0xa00ae278 }; -+ unsigned long i, j, tap1, tap2, tap3, tap4, tap5; -+ int input_rotate; -+ int wordmask = r->poolinfo->poolwords - 1; -+ const char *bytes = in; -+ __u32 w; -+- unsigned long flags; -+ -+- /* Taps are constant, so we can load them without holding r->lock. */ -+ tap1 = r->poolinfo->tap1; -+ tap2 = r->poolinfo->tap2; -+ tap3 = r->poolinfo->tap3; -+ tap4 = r->poolinfo->tap4; -+ tap5 = r->poolinfo->tap5; -+ -+- spin_lock_irqsave(&r->lock, flags); -+- input_rotate = r->input_rotate; -+- i = r->add_ptr; -++ smp_rmb(); -++ input_rotate = ACCESS_ONCE(r->input_rotate); -++ i = ACCESS_ONCE(r->add_ptr); -+ -+ /* mix one byte at a time to simplify size handling and churn faster */ -+ while (nbytes--) { -+@@ -513,19 +524,61 @@ static void mix_pool_bytes_extract(struc -+ input_rotate += i ? 7 : 14; -+ } -+ -+- r->input_rotate = input_rotate; -+- r->add_ptr = i; -++ ACCESS_ONCE(r->input_rotate) = input_rotate; -++ ACCESS_ONCE(r->add_ptr) = i; -++ smp_wmb(); -+ -+ if (out) -+ for (j = 0; j < 16; j++) -+ ((__u32 *)out)[j] = r->pool[(i - j) & wordmask]; -++} -++ -++static void __mix_pool_bytes(struct entropy_store *r, const void *in, -++ int nbytes, __u8 out[64]) -++{ -++ trace_mix_pool_bytes_nolock(r->name, nbytes, _RET_IP_); -++ _mix_pool_bytes(r, in, nbytes, out); -++} -+ -++static void mix_pool_bytes(struct entropy_store *r, const void *in, -++ int nbytes, __u8 out[64]) -++{ -++ unsigned long flags; -++ -++ trace_mix_pool_bytes(r->name, nbytes, _RET_IP_); -++ spin_lock_irqsave(&r->lock, flags); -++ _mix_pool_bytes(r, in, nbytes, out); -+ spin_unlock_irqrestore(&r->lock, flags); -+ } -+ -+-static void mix_pool_bytes(struct entropy_store *r, const void *in, int bytes) -++struct fast_pool { -++ __u32 pool[4]; -++ unsigned long last; -++ unsigned short count; -++ unsigned char rotate; -++ unsigned char last_timer_intr; -++}; -++ -++/* -++ * This is a fast mixing routine used by the interrupt randomness -++ * collector. It's hardcoded for an 128 bit pool and assumes that any -++ * locks that might be needed are taken by the caller. -++ */ -++static void fast_mix(struct fast_pool *f, const void *in, int nbytes) -+ { -+- mix_pool_bytes_extract(r, in, bytes, NULL); -++ const char *bytes = in; -++ __u32 w; -++ unsigned i = f->count; -++ unsigned input_rotate = f->rotate; -++ -++ while (nbytes--) { -++ w = rol32(*bytes++, input_rotate & 31) ^ f->pool[i & 3] ^ -++ f->pool[(i + 1) & 3]; -++ f->pool[i & 3] = (w >> 3) ^ twist_table[w & 7]; -++ input_rotate += (i++ & 3) ? 7 : 14; -++ } -++ f->count = i; -++ f->rotate = input_rotate; -+ } -+ -+ /* -+@@ -533,30 +586,38 @@ static void mix_pool_bytes(struct entrop -+ */ -+ static void credit_entropy_bits(struct entropy_store *r, int nbits) -+ { -+- unsigned long flags; -+- int entropy_count; -++ int entropy_count, orig; -+ -+ if (!nbits) -+ return; -+ -+- spin_lock_irqsave(&r->lock, flags); -+- -+ DEBUG_ENT("added %d entropy credits to %s\n", nbits, r->name); -+- entropy_count = r->entropy_count; -++retry: -++ entropy_count = orig = ACCESS_ONCE(r->entropy_count); -+ entropy_count += nbits; -++ -+ if (entropy_count < 0) { -+ DEBUG_ENT("negative entropy/overflow\n"); -+ entropy_count = 0; -+ } else if (entropy_count > r->poolinfo->POOLBITS) -+ entropy_count = r->poolinfo->POOLBITS; -+- r->entropy_count = entropy_count; -++ if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig) -++ goto retry; -++ -++ if (!r->initialized && nbits > 0) { -++ r->entropy_total += nbits; -++ if (r->entropy_total > 128) -++ r->initialized = 1; -++ } -++ -++ trace_credit_entropy_bits(r->name, nbits, entropy_count, -++ r->entropy_total, _RET_IP_); -+ -+ /* should we wake readers? */ -+ if (r == &input_pool && entropy_count >= random_read_wakeup_thresh) { -+ wake_up_interruptible(&random_read_wait); -+ kill_fasync(&fasync, SIGIO, POLL_IN); -+ } -+- spin_unlock_irqrestore(&r->lock, flags); -+ } -+ -+ /********************************************************************* -+@@ -609,6 +670,25 @@ static void set_timer_rand_state(unsigne -+ } -+ #endif -+ -++/* -++ * Add device- or boot-specific data to the input and nonblocking -++ * pools to help initialize them to unique values. -++ * -++ * None of this adds any entropy, it is meant to avoid the -++ * problem of the nonblocking pool having similar initial state -++ * across largely identical devices. -++ */ -++void add_device_randomness(const void *buf, unsigned int size) -++{ -++ unsigned long time = get_cycles() ^ jiffies; -++ -++ mix_pool_bytes(&input_pool, buf, size, NULL); -++ mix_pool_bytes(&input_pool, &time, sizeof(time), NULL); -++ mix_pool_bytes(&nonblocking_pool, buf, size, NULL); -++ mix_pool_bytes(&nonblocking_pool, &time, sizeof(time), NULL); -++} -++EXPORT_SYMBOL(add_device_randomness); -++ -+ static struct timer_rand_state input_timer_state; -+ -+ /* -+@@ -637,13 +717,9 @@ static void add_timer_randomness(struct -+ goto out; -+ -+ sample.jiffies = jiffies; -+- -+- /* Use arch random value, fall back to cycles */ -+- if (!arch_get_random_int(&sample.cycles)) -+- sample.cycles = get_cycles(); -+- -++ sample.cycles = get_cycles(); -+ sample.num = num; -+- mix_pool_bytes(&input_pool, &sample, sizeof(sample)); -++ mix_pool_bytes(&input_pool, &sample, sizeof(sample), NULL); -+ -+ /* -+ * Calculate number of bits of randomness we probably added. -+@@ -700,17 +776,48 @@ void add_input_randomness(unsigned int t -+ } -+ EXPORT_SYMBOL_GPL(add_input_randomness); -+ -+-void add_interrupt_randomness(int irq) -++static DEFINE_PER_CPU(struct fast_pool, irq_randomness); -++ -++void add_interrupt_randomness(int irq, int irq_flags) -+ { -+- struct timer_rand_state *state; -++ struct entropy_store *r; -++ struct fast_pool *fast_pool = &__get_cpu_var(irq_randomness); -++ struct pt_regs *regs = get_irq_regs(); -++ unsigned long now = jiffies; -++ __u32 input[4], cycles = get_cycles(); -++ -++ input[0] = cycles ^ jiffies; -++ input[1] = irq; -++ if (regs) { -++ __u64 ip = instruction_pointer(regs); -++ input[2] = ip; -++ input[3] = ip >> 32; -++ } -+ -+- state = get_timer_rand_state(irq); -++ fast_mix(fast_pool, input, sizeof(input)); -+ -+- if (state == NULL) -++ if ((fast_pool->count & 1023) && -++ !time_after(now, fast_pool->last + HZ)) -+ return; -+ -+- DEBUG_ENT("irq event %d\n", irq); -+- add_timer_randomness(state, 0x100 + irq); -++ fast_pool->last = now; -++ -++ r = nonblocking_pool.initialized ? &input_pool : &nonblocking_pool; -++ __mix_pool_bytes(r, &fast_pool->pool, sizeof(fast_pool->pool), NULL); -++ /* -++ * If we don't have a valid cycle counter, and we see -++ * back-to-back timer interrupts, then skip giving credit for -++ * any entropy. -++ */ -++ if (cycles == 0) { -++ if (irq_flags & __IRQF_TIMER) { -++ if (fast_pool->last_timer_intr) -++ return; -++ fast_pool->last_timer_intr = 1; -++ } else -++ fast_pool->last_timer_intr = 0; -++ } -++ credit_entropy_bits(r, 1); -+ } -+ -+ #ifdef CONFIG_BLOCK -+@@ -742,7 +849,11 @@ static ssize_t extract_entropy(struct en -+ */ -+ static void xfer_secondary_pool(struct entropy_store *r, size_t nbytes) -+ { -+- __u32 tmp[OUTPUT_POOL_WORDS]; -++ union { -++ __u32 tmp[OUTPUT_POOL_WORDS]; -++ long hwrand[4]; -++ } u; -++ int i; -+ -+ if (r->pull && r->entropy_count < nbytes * 8 && -+ r->entropy_count < r->poolinfo->POOLBITS) { -+@@ -753,17 +864,22 @@ static void xfer_secondary_pool(struct e -+ /* pull at least as many as BYTES as wakeup BITS */ -+ bytes = max_t(int, bytes, random_read_wakeup_thresh / 8); -+ /* but never more than the buffer size */ -+- bytes = min_t(int, bytes, sizeof(tmp)); -++ bytes = min_t(int, bytes, sizeof(u.tmp)); -+ -+ DEBUG_ENT("going to reseed %s with %d bits " -+ "(%d of %d requested)\n", -+ r->name, bytes * 8, nbytes * 8, r->entropy_count); -+ -+- bytes = extract_entropy(r->pull, tmp, bytes, -++ bytes = extract_entropy(r->pull, u.tmp, bytes, -+ random_read_wakeup_thresh / 8, rsvd); -+- mix_pool_bytes(r, tmp, bytes); -++ mix_pool_bytes(r, u.tmp, bytes, NULL); -+ credit_entropy_bits(r, bytes*8); -+ } -++ for (i = 0; i < 4; i++) -++ if (arch_get_random_long(&u.hwrand[i])) -++ break; -++ if (i) -++ mix_pool_bytes(r, &u.hwrand, i * sizeof(u.hwrand[0]), 0); -+ } -+ -+ /* -+@@ -822,9 +938,11 @@ static void extract_buf(struct entropy_s -+ int i; -+ __u32 hash[5], workspace[SHA_WORKSPACE_WORDS]; -+ __u8 extract[64]; -++ unsigned long flags; -+ -+ /* Generate a hash across the pool, 16 words (512 bits) at a time */ -+ sha_init(hash); -++ spin_lock_irqsave(&r->lock, flags); -+ for (i = 0; i < r->poolinfo->poolwords; i += 16) -+ sha_transform(hash, (__u8 *)(r->pool + i), workspace); -+ -+@@ -837,7 +955,8 @@ static void extract_buf(struct entropy_s -+ * brute-forcing the feedback as hard as brute-forcing the -+ * hash. -+ */ -+- mix_pool_bytes_extract(r, hash, sizeof(hash), extract); -++ __mix_pool_bytes(r, hash, sizeof(hash), extract); -++ spin_unlock_irqrestore(&r->lock, flags); -+ -+ /* -+ * To avoid duplicates, we atomically extract a portion of the -+@@ -860,12 +979,12 @@ static void extract_buf(struct entropy_s -+ } -+ -+ static ssize_t extract_entropy(struct entropy_store *r, void *buf, -+- size_t nbytes, int min, int reserved) -++ size_t nbytes, int min, int reserved) -+ { -+ ssize_t ret = 0, i; -+ __u8 tmp[EXTRACT_SIZE]; -+- unsigned long flags; -+ -++ trace_extract_entropy(r->name, nbytes, r->entropy_count, _RET_IP_); -+ xfer_secondary_pool(r, nbytes); -+ nbytes = account(r, nbytes, min, reserved); -+ -+@@ -873,6 +992,8 @@ static ssize_t extract_entropy(struct en -+ extract_buf(r, tmp); -+ -+ if (fips_enabled) { -++ unsigned long flags; -++ -+ spin_lock_irqsave(&r->lock, flags); -+ if (!memcmp(tmp, r->last_data, EXTRACT_SIZE)) -+ panic("Hardware RNG duplicated output!\n"); -+@@ -898,6 +1019,7 @@ static ssize_t extract_entropy_user(stru -+ ssize_t ret = 0, i; -+ __u8 tmp[EXTRACT_SIZE]; -+ -++ trace_extract_entropy_user(r->name, nbytes, r->entropy_count, _RET_IP_); -+ xfer_secondary_pool(r, nbytes); -+ nbytes = account(r, nbytes, 0, 0); -+ -+@@ -931,17 +1053,35 @@ static ssize_t extract_entropy_user(stru -+ -+ /* -+ * This function is the exported kernel interface. It returns some -+- * number of good random numbers, suitable for seeding TCP sequence -+- * numbers, etc. -++ * number of good random numbers, suitable for key generation, seeding -++ * TCP sequence numbers, etc. It does not use the hw random number -++ * generator, if available; use get_random_bytes_arch() for that. -+ */ -+ void get_random_bytes(void *buf, int nbytes) -+ { -++ extract_entropy(&nonblocking_pool, buf, nbytes, 0, 0); -++} -++EXPORT_SYMBOL(get_random_bytes); -++ -++/* -++ * This function will use the architecture-specific hardware random -++ * number generator if it is available. The arch-specific hw RNG will -++ * almost certainly be faster than what we can do in software, but it -++ * is impossible to verify that it is implemented securely (as -++ * opposed, to, say, the AES encryption of a sequence number using a -++ * key known by the NSA). So it's useful if we need the speed, but -++ * only if we're willing to trust the hardware manufacturer not to -++ * have put in a back door. -++ */ -++void get_random_bytes_arch(void *buf, int nbytes) -++{ -+ char *p = buf; -+ -++ trace_get_random_bytes(nbytes, _RET_IP_); -+ while (nbytes) { -+ unsigned long v; -+ int chunk = min(nbytes, (int)sizeof(unsigned long)); -+- -++ -+ if (!arch_get_random_long(&v)) -+ break; -+ -+@@ -950,9 +1090,11 @@ void get_random_bytes(void *buf, int nby -+ nbytes -= chunk; -+ } -+ -+- extract_entropy(&nonblocking_pool, p, nbytes, 0, 0); -++ if (nbytes) -++ extract_entropy(&nonblocking_pool, p, nbytes, 0, 0); -+ } -+-EXPORT_SYMBOL(get_random_bytes); -++EXPORT_SYMBOL(get_random_bytes_arch); -++ -+ -+ /* -+ * init_std_data - initialize pool with system data -+@@ -966,21 +1108,18 @@ EXPORT_SYMBOL(get_random_bytes); -+ static void init_std_data(struct entropy_store *r) -+ { -+ int i; -+- ktime_t now; -+- unsigned long flags; -++ ktime_t now = ktime_get_real(); -++ unsigned long rv; -+ -+- spin_lock_irqsave(&r->lock, flags); -+ r->entropy_count = 0; -+- spin_unlock_irqrestore(&r->lock, flags); -+- -+- now = ktime_get_real(); -+- mix_pool_bytes(r, &now, sizeof(now)); -+- for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof flags) { -+- if (!arch_get_random_long(&flags)) -++ r->entropy_total = 0; -++ mix_pool_bytes(r, &now, sizeof(now), NULL); -++ for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof(rv)) { -++ if (!arch_get_random_long(&rv)) -+ break; -+- mix_pool_bytes(r, &flags, sizeof(flags)); -++ mix_pool_bytes(r, &rv, sizeof(rv), NULL); -+ } -+- mix_pool_bytes(r, utsname(), sizeof(*(utsname()))); -++ mix_pool_bytes(r, utsname(), sizeof(*(utsname())), NULL); -+ } -+ -+ static int rand_initialize(void) -+@@ -1117,7 +1256,7 @@ write_pool(struct entropy_store *r, cons -+ count -= bytes; -+ p += bytes; -+ -+- mix_pool_bytes(r, buf, bytes); -++ mix_pool_bytes(r, buf, bytes, NULL); -+ cond_resched(); -+ } -+ -+@@ -1274,6 +1413,7 @@ static int proc_do_uuid(ctl_table *table -+ } -+ -+ static int sysctl_poolsize = INPUT_POOL_WORDS * 32; -++extern ctl_table random_table[]; -+ ctl_table random_table[] = { -+ { -+ .procname = "poolsize", -+@@ -1339,7 +1479,7 @@ late_initcall(random_int_secret_init); -+ * value is not cryptographically secure but for several uses the cost of -+ * depleting entropy is too high -+ */ -+-DEFINE_PER_CPU(__u32 [MD5_DIGEST_WORDS], get_random_int_hash); -++static DEFINE_PER_CPU(__u32 [MD5_DIGEST_WORDS], get_random_int_hash); -+ unsigned int get_random_int(void) -+ { -+ __u32 *hash; -+--- a/drivers/mfd/ab3100-core.c -++++ b/drivers/mfd/ab3100-core.c -+@@ -409,8 +409,6 @@ static irqreturn_t ab3100_irq_handler(in -+ u32 fatevent; -+ int err; -+ -+- add_interrupt_randomness(irq); -+- -+ err = ab3100_get_register_page_interruptible(ab3100, AB3100_EVENTA1, -+ event_regs, 3); -+ if (err) -+--- a/drivers/usb/core/hub.c -++++ b/drivers/usb/core/hub.c -+@@ -24,6 +24,7 @@ -+ #include -+ #include -+ #include -++#include -+ -+ #include -+ #include -+@@ -1896,6 +1897,14 @@ int usb_new_device(struct usb_device *ud -+ /* Tell the world! */ -+ announce_device(udev); -+ -++ if (udev->serial) -++ add_device_randomness(udev->serial, strlen(udev->serial)); -++ if (udev->product) -++ add_device_randomness(udev->product, strlen(udev->product)); -++ if (udev->manufacturer) -++ add_device_randomness(udev->manufacturer, -++ strlen(udev->manufacturer)); -++ -+ device_enable_async_suspend(&udev->dev); -+ /* Register the device. The device driver is responsible -+ * for configuring the device and invoking the add-device -+--- a/include/linux/random.h -++++ b/include/linux/random.h -+@@ -50,11 +50,13 @@ struct rnd_state { -+ -+ extern void rand_initialize_irq(int irq); -+ -++extern void add_device_randomness(const void *, unsigned int); -+ extern void add_input_randomness(unsigned int type, unsigned int code, -+ unsigned int value); -+-extern void add_interrupt_randomness(int irq); -++extern void add_interrupt_randomness(int irq, int irq_flags); -+ -+ extern void get_random_bytes(void *buf, int nbytes); -++extern void get_random_bytes_arch(void *buf, int nbytes); -+ void generate_random_uuid(unsigned char uuid_out[16]); -+ -+ #ifndef MODULE -+--- /dev/null -++++ b/include/trace/events/random.h -+@@ -0,0 +1,134 @@ -++#undef TRACE_SYSTEM -++#define TRACE_SYSTEM random -++ -++#if !defined(_TRACE_RANDOM_H) || defined(TRACE_HEADER_MULTI_READ) -++#define _TRACE_RANDOM_H -++ -++#include -++#include -++ -++DECLARE_EVENT_CLASS(random__mix_pool_bytes, -++ TP_PROTO(const char *pool_name, int bytes, unsigned long IP), -++ -++ TP_ARGS(pool_name, bytes, IP), -++ -++ TP_STRUCT__entry( -++ __field( const char *, pool_name ) -++ __field( int, bytes ) -++ __field(unsigned long, IP ) -++ ), -++ -++ TP_fast_assign( -++ __entry->pool_name = pool_name; -++ __entry->bytes = bytes; -++ __entry->IP = IP; -++ ), -++ -++ TP_printk("%s pool: bytes %d caller %pF", -++ __entry->pool_name, __entry->bytes, (void *)__entry->IP) -++); -++ -++DEFINE_EVENT(random__mix_pool_bytes, mix_pool_bytes, -++ TP_PROTO(const char *pool_name, int bytes, unsigned long IP), -++ -++ TP_ARGS(pool_name, bytes, IP) -++); -++ -++DEFINE_EVENT(random__mix_pool_bytes, mix_pool_bytes_nolock, -++ TP_PROTO(const char *pool_name, int bytes, unsigned long IP), -++ -++ TP_ARGS(pool_name, bytes, IP) -++); -++ -++TRACE_EVENT(credit_entropy_bits, -++ TP_PROTO(const char *pool_name, int bits, int entropy_count, -++ int entropy_total, unsigned long IP), -++ -++ TP_ARGS(pool_name, bits, entropy_count, entropy_total, IP), -++ -++ TP_STRUCT__entry( -++ __field( const char *, pool_name ) -++ __field( int, bits ) -++ __field( int, entropy_count ) -++ __field( int, entropy_total ) -++ __field(unsigned long, IP ) -++ ), -++ -++ TP_fast_assign( -++ __entry->pool_name = pool_name; -++ __entry->bits = bits; -++ __entry->entropy_count = entropy_count; -++ __entry->entropy_total = entropy_total; -++ __entry->IP = IP; -++ ), -++ -++ TP_printk("%s pool: bits %d entropy_count %d entropy_total %d " -++ "caller %pF", __entry->pool_name, __entry->bits, -++ __entry->entropy_count, __entry->entropy_total, -++ (void *)__entry->IP) -++); -++ -++TRACE_EVENT(get_random_bytes, -++ TP_PROTO(int nbytes, unsigned long IP), -++ -++ TP_ARGS(nbytes, IP), -++ -++ TP_STRUCT__entry( -++ __field( int, nbytes ) -++ __field(unsigned long, IP ) -++ ), -++ -++ TP_fast_assign( -++ __entry->nbytes = nbytes; -++ __entry->IP = IP; -++ ), -++ -++ TP_printk("nbytes %d caller %pF", __entry->nbytes, (void *)__entry->IP) -++); -++ -++DECLARE_EVENT_CLASS(random__extract_entropy, -++ TP_PROTO(const char *pool_name, int nbytes, int entropy_count, -++ unsigned long IP), -++ -++ TP_ARGS(pool_name, nbytes, entropy_count, IP), -++ -++ TP_STRUCT__entry( -++ __field( const char *, pool_name ) -++ __field( int, nbytes ) -++ __field( int, entropy_count ) -++ __field(unsigned long, IP ) -++ ), -++ -++ TP_fast_assign( -++ __entry->pool_name = pool_name; -++ __entry->nbytes = nbytes; -++ __entry->entropy_count = entropy_count; -++ __entry->IP = IP; -++ ), -++ -++ TP_printk("%s pool: nbytes %d entropy_count %d caller %pF", -++ __entry->pool_name, __entry->nbytes, __entry->entropy_count, -++ (void *)__entry->IP) -++); -++ -++ -++DEFINE_EVENT(random__extract_entropy, extract_entropy, -++ TP_PROTO(const char *pool_name, int nbytes, int entropy_count, -++ unsigned long IP), -++ -++ TP_ARGS(pool_name, nbytes, entropy_count, IP) -++); -++ -++DEFINE_EVENT(random__extract_entropy, extract_entropy_user, -++ TP_PROTO(const char *pool_name, int nbytes, int entropy_count, -++ unsigned long IP), -++ -++ TP_ARGS(pool_name, nbytes, entropy_count, IP) -++); -++ -++ -++ -++#endif /* _TRACE_RANDOM_H */ -++ -++/* This part must be outside protection */ -++#include -+--- a/kernel/irq/handle.c -++++ b/kernel/irq/handle.c -+@@ -117,7 +117,7 @@ irqreturn_t -+ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) -+ { -+ irqreturn_t retval = IRQ_NONE; -+- unsigned int random = 0, irq = desc->irq_data.irq; -++ unsigned int flags = 0, irq = desc->irq_data.irq; -+ -+ do { -+ irqreturn_t res; -+@@ -145,7 +145,7 @@ handle_irq_event_percpu(struct irq_desc -+ -+ /* Fall through to add to randomness */ -+ case IRQ_HANDLED: -+- random |= action->flags; -++ flags |= action->flags; -+ break; -+ -+ default: -+@@ -156,8 +156,7 @@ handle_irq_event_percpu(struct irq_desc -+ action = action->next; -+ } while (action); -+ -+- if (random & IRQF_SAMPLE_RANDOM) -+- add_interrupt_randomness(irq); -++ add_interrupt_randomness(irq, flags); -+ -+ if (!noirqdebug) -+ note_interrupt(irq, desc, retval); -+--- a/net/core/dev.c -++++ b/net/core/dev.c -+@@ -1176,6 +1176,7 @@ static int __dev_open(struct net_device -+ net_dmaengine_get(); -+ dev_set_rx_mode(dev); -+ dev_activate(dev); -++ add_device_randomness(dev->dev_addr, dev->addr_len); -+ } -+ -+ return ret; -+@@ -4823,6 +4824,7 @@ int dev_set_mac_address(struct net_devic -+ err = ops->ndo_set_mac_address(dev, sa); -+ if (!err) -+ call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); -++ add_device_randomness(dev->dev_addr, dev->addr_len); -+ return err; -+ } -+ EXPORT_SYMBOL(dev_set_mac_address); -+@@ -5602,6 +5604,7 @@ int register_netdevice(struct net_device -+ dev_init_scheduler(dev); -+ dev_hold(dev); -+ list_netdevice(dev); -++ add_device_randomness(dev->dev_addr, dev->addr_len); -+ -+ /* Notify protocols, that a new device appeared. */ -+ ret = call_netdevice_notifiers(NETDEV_REGISTER, dev); -+--- a/net/core/rtnetlink.c -++++ b/net/core/rtnetlink.c -+@@ -1371,6 +1371,7 @@ static int do_setlink(struct net_device -+ goto errout; -+ send_addr_notify = 1; -+ modified = 1; -++ add_device_randomness(dev->dev_addr, dev->addr_len); -+ } -+ -+ if (tb[IFLA_MTU]) {