]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Merge remote-tracking branch 'origin/next'
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 10 Apr 2021 13:28:39 +0000 (13:28 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 10 Apr 2021 13:28:39 +0000 (13:28 +0000)
474 files changed:
config/backup/includes/pakfire3 [deleted file]
config/cfgroot/graphs.pl
config/cfgroot/header.pl
config/cfgroot/network-functions.pl
config/collectd/collectd.conf
config/etc/sysctl-aarch64.conf [new file with mode: 0644]
config/etc/sysctl-armv5tel.conf [new file with mode: 0644]
config/etc/sysctl-x86_64.conf
config/etc/sysctl.conf
config/gnump3d/gnump3d.conf
config/rootfiles/common/Archive-Tar
config/rootfiles/common/Archive-Zip
config/rootfiles/common/BerkeleyDB
config/rootfiles/common/Compress-Zlib
config/rootfiles/common/Convert-TNEF
config/rootfiles/common/Convert-UUlib
config/rootfiles/common/Crypt-PasswdMD5
config/rootfiles/common/Digest
config/rootfiles/common/Digest-HMAC
config/rootfiles/common/Digest-SHA1
config/rootfiles/common/GD-Graph
config/rootfiles/common/GD-TextUtil
config/rootfiles/common/HTML-Parser
config/rootfiles/common/HTML-Tagset
config/rootfiles/common/HTML-Template
config/rootfiles/common/IO-Socket-SSL
config/rootfiles/common/IO-Stringy
config/rootfiles/common/MIME-Tools
config/rootfiles/common/Mail-Tools
config/rootfiles/common/Net-DNS
config/rootfiles/common/Net-IPv4Addr
config/rootfiles/common/Net-Server
config/rootfiles/common/Net-Telnet
config/rootfiles/common/Net_SSLeay
config/rootfiles/common/Text-Tabs+Wrap
config/rootfiles/common/URI
config/rootfiles/common/Unix-Syslog
config/rootfiles/common/XML-Parser
config/rootfiles/common/aarch64/rust
config/rootfiles/common/acl
config/rootfiles/common/armv5tel/rust
config/rootfiles/common/attr
config/rootfiles/common/bind
config/rootfiles/common/bzip2
config/rootfiles/common/ed
config/rootfiles/common/gawk
config/rootfiles/common/gettext
config/rootfiles/common/gmp
config/rootfiles/common/i586/rust
config/rootfiles/common/libcap
config/rootfiles/common/libloc
config/rootfiles/common/libmpc
config/rootfiles/common/liboping
config/rootfiles/common/libpcap
config/rootfiles/common/libwww-perl
config/rootfiles/common/nettle
config/rootfiles/common/parted
config/rootfiles/common/perl
config/rootfiles/common/perl-Apache-Htpasswd
config/rootfiles/common/perl-CGI
config/rootfiles/common/perl-DBD-SQLite
config/rootfiles/common/perl-DBI
config/rootfiles/common/perl-Device-Modem
config/rootfiles/common/perl-Device-SerialPort
config/rootfiles/common/perl-Email-Date-Format
config/rootfiles/common/perl-Font-TTF
config/rootfiles/common/perl-GD
config/rootfiles/common/perl-IO-String
config/rootfiles/common/perl-MIME-Lite
config/rootfiles/common/perl-Net-CIDR-Lite
config/rootfiles/common/perl-NetAddr-IP
config/rootfiles/common/perl-PDF-API2
config/rootfiles/common/perl-Sort-Naturally
config/rootfiles/common/perl-Switch
config/rootfiles/common/perl-Text-CSV_XS
config/rootfiles/common/rrdtool
config/rootfiles/common/swig
config/rootfiles/common/web-user-interface
config/rootfiles/common/x86_64/rust
config/rootfiles/common/zstd
config/rootfiles/core/156/exclude [moved from config/rootfiles/core/155/exclude with 100% similarity]
config/rootfiles/core/156/filelists/Archive-Tar [new symlink]
config/rootfiles/core/156/filelists/Archive-Zip [new symlink]
config/rootfiles/core/156/filelists/BerkeleyDB [new symlink]
config/rootfiles/core/156/filelists/Compress-Zlib [new symlink]
config/rootfiles/core/156/filelists/Convert-TNEF [new symlink]
config/rootfiles/core/156/filelists/Convert-UUlib [new symlink]
config/rootfiles/core/156/filelists/Crypt-PasswdMD5 [new symlink]
config/rootfiles/core/156/filelists/Digest-HMAC [new symlink]
config/rootfiles/core/156/filelists/Digest-SHA1 [new symlink]
config/rootfiles/core/156/filelists/GD-Graph [new symlink]
config/rootfiles/core/156/filelists/GD-TextUtil [new symlink]
config/rootfiles/core/156/filelists/HTML-Parser [new symlink]
config/rootfiles/core/156/filelists/HTML-Tagset [new symlink]
config/rootfiles/core/156/filelists/HTML-Template [new symlink]
config/rootfiles/core/156/filelists/IO-Socket-SSL [new symlink]
config/rootfiles/core/156/filelists/IO-Stringy [new symlink]
config/rootfiles/core/156/filelists/MIME-Tools [new symlink]
config/rootfiles/core/156/filelists/Mail-Tools [new symlink]
config/rootfiles/core/156/filelists/Net-DNS [new symlink]
config/rootfiles/core/156/filelists/Net-IPv4Addr [new symlink]
config/rootfiles/core/156/filelists/Net-Server [new symlink]
config/rootfiles/core/156/filelists/Net-Telnet [new symlink]
config/rootfiles/core/156/filelists/Net_SSLeay [new symlink]
config/rootfiles/core/156/filelists/Text-Tabs+Wrap [new symlink]
config/rootfiles/core/156/filelists/URI [new symlink]
config/rootfiles/core/156/filelists/Unix-Syslog [new symlink]
config/rootfiles/core/156/filelists/XML-Parser [new symlink]
config/rootfiles/core/156/filelists/aarch64/files [new file with mode: 0644]
config/rootfiles/core/156/filelists/acl [new symlink]
config/rootfiles/core/156/filelists/armv5tel/files [new file with mode: 0644]
config/rootfiles/core/156/filelists/attr [moved from config/rootfiles/core/155/filelists/attr with 100% similarity]
config/rootfiles/core/156/filelists/bind [moved from config/rootfiles/core/155/filelists/bind with 100% similarity]
config/rootfiles/core/156/filelists/bzip2 [new symlink]
config/rootfiles/core/156/filelists/crda [new symlink]
config/rootfiles/core/156/filelists/diffutils [new symlink]
config/rootfiles/core/156/filelists/ed [new symlink]
config/rootfiles/core/156/filelists/files [new file with mode: 0644]
config/rootfiles/core/156/filelists/gawk [new symlink]
config/rootfiles/core/156/filelists/gettext [new symlink]
config/rootfiles/core/156/filelists/gmp [new symlink]
config/rootfiles/core/156/filelists/grep [new symlink]
config/rootfiles/core/156/filelists/jquery [new symlink]
config/rootfiles/core/156/filelists/libcap [new symlink]
config/rootfiles/core/156/filelists/libloc [new symlink]
config/rootfiles/core/156/filelists/libmpc [new symlink]
config/rootfiles/core/156/filelists/liboping [new symlink]
config/rootfiles/core/156/filelists/libpcap [new symlink]
config/rootfiles/core/156/filelists/libwww-perl [new symlink]
config/rootfiles/core/156/filelists/nettle [moved from config/rootfiles/core/155/filelists/nettle with 100% similarity]
config/rootfiles/core/156/filelists/openssl [moved from config/rootfiles/core/155/filelists/openssl with 100% similarity]
config/rootfiles/core/156/filelists/perl [new symlink]
config/rootfiles/core/156/filelists/perl-Apache-Htpasswd [new symlink]
config/rootfiles/core/156/filelists/perl-CGI [new symlink]
config/rootfiles/core/156/filelists/perl-DBD-SQLite [new symlink]
config/rootfiles/core/156/filelists/perl-DBI [new symlink]
config/rootfiles/core/156/filelists/perl-Device-Modem [new symlink]
config/rootfiles/core/156/filelists/perl-Device-SerialPort [new symlink]
config/rootfiles/core/156/filelists/perl-Email-Date-Format [new symlink]
config/rootfiles/core/156/filelists/perl-Font-TTF [new symlink]
config/rootfiles/core/156/filelists/perl-GD [new symlink]
config/rootfiles/core/156/filelists/perl-IO-String [new symlink]
config/rootfiles/core/156/filelists/perl-MIME-Lite [new symlink]
config/rootfiles/core/156/filelists/perl-Net-CIDR-Lite [new symlink]
config/rootfiles/core/156/filelists/perl-NetAddr-IP [new symlink]
config/rootfiles/core/156/filelists/perl-PDF-API2 [new symlink]
config/rootfiles/core/156/filelists/perl-Sort-Naturally [new symlink]
config/rootfiles/core/156/filelists/perl-Switch [new symlink]
config/rootfiles/core/156/filelists/perl-Text-CSV_XS [new symlink]
config/rootfiles/core/156/filelists/release-files [moved from config/rootfiles/core/155/filelists/release-files with 100% similarity]
config/rootfiles/core/156/filelists/rrdtool [new symlink]
config/rootfiles/core/156/filelists/strongswan [new symlink]
config/rootfiles/core/156/filelists/sudo [new symlink]
config/rootfiles/core/156/filelists/suricata [moved from config/rootfiles/core/155/filelists/suricata with 100% similarity]
config/rootfiles/core/156/filelists/sysvinit [moved from config/rootfiles/core/155/filelists/sysvinit with 100% similarity]
config/rootfiles/core/156/filelists/web-user-interface [new symlink]
config/rootfiles/core/156/filelists/x86_64/files [new file with mode: 0644]
config/rootfiles/core/156/filelists/zstd [new symlink]
config/rootfiles/core/156/update.sh [new file with mode: 0644]
config/rootfiles/oldcore/155/exclude [new file with mode: 0644]
config/rootfiles/oldcore/155/filelists/aarch64/boost [moved from config/rootfiles/core/155/filelists/aarch64/boost with 100% similarity]
config/rootfiles/oldcore/155/filelists/aarch64/python [moved from config/rootfiles/core/155/filelists/aarch64/python with 100% similarity]
config/rootfiles/oldcore/155/filelists/aarch64/python3 [moved from config/rootfiles/core/155/filelists/aarch64/python3 with 100% similarity]
config/rootfiles/oldcore/155/filelists/aarch64/util-linux [moved from config/rootfiles/core/155/filelists/aarch64/util-linux with 100% similarity]
config/rootfiles/oldcore/155/filelists/armv5tel/boost [moved from config/rootfiles/core/155/filelists/armv5tel/boost with 100% similarity]
config/rootfiles/oldcore/155/filelists/armv5tel/python [moved from config/rootfiles/core/155/filelists/armv5tel/python with 100% similarity]
config/rootfiles/oldcore/155/filelists/armv5tel/python3 [moved from config/rootfiles/core/155/filelists/armv5tel/python3 with 100% similarity]
config/rootfiles/oldcore/155/filelists/armv5tel/util-linux [moved from config/rootfiles/core/155/filelists/armv5tel/util-linux with 100% similarity]
config/rootfiles/oldcore/155/filelists/attr [new symlink]
config/rootfiles/oldcore/155/filelists/bind [new symlink]
config/rootfiles/oldcore/155/filelists/collectd [moved from config/rootfiles/core/155/filelists/collectd with 100% similarity]
config/rootfiles/oldcore/155/filelists/dhcp [moved from config/rootfiles/core/155/filelists/dhcp with 100% similarity]
config/rootfiles/oldcore/155/filelists/e2fsprogs [moved from config/rootfiles/core/155/filelists/e2fsprogs with 100% similarity]
config/rootfiles/oldcore/155/filelists/files [moved from config/rootfiles/core/155/filelists/files with 100% similarity]
config/rootfiles/oldcore/155/filelists/freetype [moved from config/rootfiles/core/155/filelists/freetype with 100% similarity]
config/rootfiles/oldcore/155/filelists/glib [moved from config/rootfiles/core/155/filelists/glib with 100% similarity]
config/rootfiles/oldcore/155/filelists/i586/boost [moved from config/rootfiles/core/155/filelists/i586/boost with 100% similarity]
config/rootfiles/oldcore/155/filelists/i586/python [moved from config/rootfiles/core/155/filelists/i586/python with 100% similarity]
config/rootfiles/oldcore/155/filelists/i586/python3 [moved from config/rootfiles/core/155/filelists/i586/python3 with 100% similarity]
config/rootfiles/oldcore/155/filelists/i586/util-linux [moved from config/rootfiles/core/155/filelists/i586/util-linux with 100% similarity]
config/rootfiles/oldcore/155/filelists/iproute2 [moved from config/rootfiles/core/155/filelists/iproute2 with 100% similarity]
config/rootfiles/oldcore/155/filelists/ipset [moved from config/rootfiles/core/155/filelists/ipset with 100% similarity]
config/rootfiles/oldcore/155/filelists/lcms2 [moved from config/rootfiles/core/155/filelists/lcms2 with 100% similarity]
config/rootfiles/oldcore/155/filelists/libffi [moved from config/rootfiles/core/155/filelists/libffi with 100% similarity]
config/rootfiles/oldcore/155/filelists/libgcrypt [moved from config/rootfiles/core/155/filelists/libgcrypt with 100% similarity]
config/rootfiles/oldcore/155/filelists/libhtp [moved from config/rootfiles/core/155/filelists/libhtp with 100% similarity]
config/rootfiles/oldcore/155/filelists/libxcrypt [moved from config/rootfiles/core/155/filelists/libxcrypt with 100% similarity]
config/rootfiles/oldcore/155/filelists/lz4 [moved from config/rootfiles/core/155/filelists/lz4 with 100% similarity]
config/rootfiles/oldcore/155/filelists/net-tools [moved from config/rootfiles/core/155/filelists/net-tools with 100% similarity]
config/rootfiles/oldcore/155/filelists/nettle [new symlink]
config/rootfiles/oldcore/155/filelists/openssh [moved from config/rootfiles/core/155/filelists/openssh with 100% similarity]
config/rootfiles/oldcore/155/filelists/openssl [new symlink]
config/rootfiles/oldcore/155/filelists/pcre2 [moved from config/rootfiles/core/155/filelists/pcre2 with 100% similarity]
config/rootfiles/oldcore/155/filelists/qpdf [moved from config/rootfiles/core/155/filelists/qpdf with 100% similarity]
config/rootfiles/oldcore/155/filelists/release-files [new file with mode: 0644]
config/rootfiles/oldcore/155/filelists/sqlite [moved from config/rootfiles/core/155/filelists/sqlite with 100% similarity]
config/rootfiles/oldcore/155/filelists/squid [moved from config/rootfiles/core/155/filelists/squid with 100% similarity]
config/rootfiles/oldcore/155/filelists/suricata [new symlink]
config/rootfiles/oldcore/155/filelists/sysvinit [new symlink]
config/rootfiles/oldcore/155/filelists/tar [moved from config/rootfiles/core/155/filelists/tar with 100% similarity]
config/rootfiles/oldcore/155/filelists/tcl [moved from config/rootfiles/core/155/filelists/tcl with 100% similarity]
config/rootfiles/oldcore/155/filelists/unbound [moved from config/rootfiles/core/155/filelists/unbound with 100% similarity]
config/rootfiles/oldcore/155/filelists/wget [moved from config/rootfiles/core/155/filelists/wget with 100% similarity]
config/rootfiles/oldcore/155/filelists/x86_64/boost [moved from config/rootfiles/core/155/filelists/x86_64/boost with 100% similarity]
config/rootfiles/oldcore/155/filelists/x86_64/python [moved from config/rootfiles/core/155/filelists/x86_64/python with 100% similarity]
config/rootfiles/oldcore/155/filelists/x86_64/python3 [moved from config/rootfiles/core/155/filelists/x86_64/python3 with 100% similarity]
config/rootfiles/oldcore/155/filelists/x86_64/util-linux [moved from config/rootfiles/core/155/filelists/x86_64/util-linux with 100% similarity]
config/rootfiles/oldcore/155/update.sh [moved from config/rootfiles/core/155/update.sh with 100% similarity]
config/rootfiles/packages/armv5tel/samba
config/rootfiles/packages/foomatic
config/rootfiles/packages/git
config/rootfiles/packages/gnump3d
config/rootfiles/packages/gpgme [deleted file]
config/rootfiles/packages/guardian
config/rootfiles/packages/libmpdclient
config/rootfiles/packages/libstatgrab
config/rootfiles/packages/libtirpc
config/rootfiles/packages/mcelog
config/rootfiles/packages/mpc
config/rootfiles/packages/mpfire
config/rootfiles/packages/netsnmpd
config/rootfiles/packages/pakfire3 [deleted file]
config/rootfiles/packages/perl-Authen-SASL
config/rootfiles/packages/perl-Carp-Clan
config/rootfiles/packages/perl-Date-Calc
config/rootfiles/packages/perl-Date-Manip
config/rootfiles/packages/perl-File-ReadBackwards
config/rootfiles/packages/perl-File-Tail
config/rootfiles/packages/perl-MIME-Base64
config/rootfiles/packages/perl-Net-IP
config/rootfiles/packages/perl-Net-LibIDN [deleted file]
config/rootfiles/packages/perl-Net-SMTP-SSL
config/rootfiles/packages/perl-Parse-Yapp
config/rootfiles/packages/perl-TimeDate
config/rootfiles/packages/perl-common-sense
config/rootfiles/packages/perl-gettext
config/rootfiles/packages/perl-inotify2
config/rootfiles/packages/pycurl [deleted file]
config/rootfiles/packages/pygpgme [deleted file]
config/rootfiles/packages/python-lzma [deleted file]
config/rootfiles/packages/python-progressbar [deleted file]
config/rootfiles/packages/rpcbind
config/rootfiles/packages/speedtest-cli
config/rootfiles/packages/swatch
config/rootfiles/packages/sysbench
config/rootfiles/packages/urlgrabber [deleted file]
config/rootfiles/packages/x86_64/samba
config/udev/network-hotplug-bridges
config/udev/network-hotplug-rename
doc/language_issues.de
doc/language_issues.en
doc/language_issues.es
doc/language_issues.fr
doc/language_issues.it
doc/language_issues.nl
doc/language_issues.pl
doc/language_issues.ru
doc/language_issues.tr
doc/language_missings
html/cgi-bin/atm-status.cgi
html/cgi-bin/backup.cgi
html/cgi-bin/captive.cgi
html/cgi-bin/connscheduler.cgi
html/cgi-bin/credits.cgi
html/cgi-bin/ddns.cgi
html/cgi-bin/dhcp.cgi
html/cgi-bin/dns.cgi
html/cgi-bin/dnsforward.cgi
html/cgi-bin/entropy.cgi
html/cgi-bin/firewall.cgi
html/cgi-bin/fwhosts.cgi
html/cgi-bin/getrrdimage.cgi [new file with mode: 0644]
html/cgi-bin/guardian.cgi
html/cgi-bin/gui.cgi
html/cgi-bin/hardwaregraphs.cgi
html/cgi-bin/hosts.cgi
html/cgi-bin/ids.cgi
html/cgi-bin/index.cgi
html/cgi-bin/ipinfo.cgi
html/cgi-bin/location-block.cgi
html/cgi-bin/logs.cgi/firewalllog.dat
html/cgi-bin/logs.cgi/firewalllogcountry.dat
html/cgi-bin/logs.cgi/firewalllogip.dat
html/cgi-bin/logs.cgi/firewalllogport.dat
html/cgi-bin/logs.cgi/ids.dat
html/cgi-bin/logs.cgi/log.dat
html/cgi-bin/logs.cgi/ovpnclients.dat
html/cgi-bin/logs.cgi/proxylog.dat
html/cgi-bin/logs.cgi/showrequestfromcountry.dat
html/cgi-bin/logs.cgi/urlfilter.dat
html/cgi-bin/mail.cgi
html/cgi-bin/mdstat.cgi
html/cgi-bin/media.cgi
html/cgi-bin/memory.cgi
html/cgi-bin/mpfire.cgi
html/cgi-bin/netexternal.cgi
html/cgi-bin/netinternal.cgi
html/cgi-bin/netother.cgi
html/cgi-bin/netovpnrw.cgi
html/cgi-bin/netovpnsrv.cgi
html/cgi-bin/ovpnmain.cgi
html/cgi-bin/p2p-block.cgi
html/cgi-bin/pakfire.cgi
html/cgi-bin/pppsetup.cgi
html/cgi-bin/proxy.cgi
html/cgi-bin/qos.cgi
html/cgi-bin/remote.cgi
html/cgi-bin/routing.cgi
html/cgi-bin/samba.cgi
html/cgi-bin/services.cgi
html/cgi-bin/system.cgi
html/cgi-bin/tor.cgi
html/cgi-bin/traffic.cgi
html/cgi-bin/updatexlrator.cgi
html/cgi-bin/vpnmain.cgi
html/cgi-bin/vulnerabilities.cgi
html/cgi-bin/wakeonlan.cgi
html/cgi-bin/wirelessclient.cgi
html/cgi-bin/wlanap.cgi
html/cgi-bin/zoneconf.cgi
html/html/include/rrdimage.js [new file with mode: 0644]
html/html/include/snortupdateutility.js [deleted file]
html/html/themes/darkdos/images/IPFire.png [deleted file]
html/html/themes/darkdos/images/b1.gif [deleted file]
html/html/themes/darkdos/images/b2.gif [deleted file]
html/html/themes/darkdos/images/b3.gif [deleted file]
html/html/themes/darkdos/images/b4.gif [deleted file]
html/html/themes/darkdos/images/b5.gif [deleted file]
html/html/themes/darkdos/images/b6.gif [deleted file]
html/html/themes/darkdos/images/spacer.gif [deleted file]
html/html/themes/darkdos/include/colors.txt [deleted file]
html/html/themes/darkdos/include/functions.pl [deleted file]
html/html/themes/darkdos/include/style.css [deleted file]
html/html/themes/ipfire-legacy/images/n1.gif [deleted file]
html/html/themes/ipfire-legacy/images/n2.gif [deleted file]
html/html/themes/ipfire-legacy/images/n3.gif [deleted file]
html/html/themes/ipfire-legacy/images/n4.gif [deleted file]
html/html/themes/ipfire-legacy/images/n5.gif [deleted file]
html/html/themes/ipfire-legacy/images/n6.gif [deleted file]
html/html/themes/ipfire-legacy/images/spacer.gif [deleted file]
html/html/themes/ipfire-legacy/include/colors.txt [deleted file]
html/html/themes/ipfire-legacy/include/functions.pl [deleted file]
html/html/themes/ipfire-legacy/include/style.css [deleted file]
html/html/themes/ipfire/include/css/style-rounded.css [deleted file]
html/html/themes/ipfire/include/css/style.css
html/html/themes/ipfire/include/functions.pl
html/html/themes/maniac/images/IPFire.png [deleted file]
html/html/themes/maniac/images/b1.gif [deleted file]
html/html/themes/maniac/images/b2.gif [deleted file]
html/html/themes/maniac/images/b3.gif [deleted file]
html/html/themes/maniac/images/b4.gif [deleted file]
html/html/themes/maniac/images/b5.gif [deleted file]
html/html/themes/maniac/images/b6.gif [deleted file]
html/html/themes/maniac/images/spacer.gif [deleted file]
html/html/themes/maniac/include/colors.txt [deleted file]
html/html/themes/maniac/include/functions.pl [deleted file]
html/html/themes/maniac/include/style.css [deleted file]
langs/de/cgi-bin/de.pl
langs/en/cgi-bin/en.pl
langs/es/cgi-bin/es.pl
langs/fr/cgi-bin/fr.pl
langs/it/cgi-bin/it.pl
langs/nl/cgi-bin/nl.pl
langs/pl/cgi-bin/pl.pl
langs/ru/cgi-bin/ru.pl
langs/tr/cgi-bin/tr.pl
lfs/Config
lfs/Net-DNS
lfs/acl
lfs/attr
lfs/backports [deleted file]
lfs/bind
lfs/bison
lfs/bzip2
lfs/clamav
lfs/cmake
lfs/crda
lfs/diffutils
lfs/e1000e [deleted file]
lfs/ed
lfs/foomatic
lfs/gawk
lfs/gettext
lfs/git
lfs/gmp
lfs/gnump3d
lfs/gperf
lfs/gpgme [deleted file]
lfs/grep
lfs/guardian
lfs/igb [deleted file]
lfs/ixgbe [deleted file]
lfs/jquery
lfs/libcap
lfs/libloc
lfs/libmpc
lfs/libmpdclient
lfs/libnfsidmap
lfs/libpcap
lfs/libstatgrab
lfs/libtirpc
lfs/mcelog
lfs/monit
lfs/mpc
lfs/mpfire
lfs/netsnmpd
lfs/nettle
lfs/nfs
lfs/pakfire3 [deleted file]
lfs/parted
lfs/perl
lfs/perl-Authen-SASL
lfs/perl-Carp-Clan
lfs/perl-Date-Calc
lfs/perl-Date-Manip
lfs/perl-File-ReadBackwards
lfs/perl-File-Tail
lfs/perl-MIME-Base64
lfs/perl-Net-IP
lfs/perl-Net-SMTP-SSL
lfs/perl-Parse-Yapp
lfs/perl-TimeDate
lfs/perl-common-sense
lfs/perl-gettext
lfs/perl-inotify2
lfs/pigz
lfs/poppler
lfs/pycurl [deleted file]
lfs/pygpgme [deleted file]
lfs/python-lzma [deleted file]
lfs/python-progressbar [deleted file]
lfs/rpcbind
lfs/rust
lfs/samba
lfs/speedtest-cli
lfs/strace
lfs/strongswan
lfs/sudo
lfs/swatch
lfs/swig
lfs/sysbench
lfs/sysvinit
lfs/tcpdump
lfs/tor
lfs/tshark
lfs/urlgrabber [deleted file]
lfs/web-user-interface
lfs/zstd
make.sh
src/initscripts/helper/azure-setup
src/initscripts/system/suricata
src/patches/backports-3.18.1-1-ipfire-build.patch [deleted file]
src/patches/backports-3.18.1-1_add_libertas_uap.patch [deleted file]
src/patches/backports-3.18.1-1_no_dma_sgtable_on_x86_64.patch [deleted file]
src/patches/backports-3.18.1-1_rt2x00usb_suppress_queue_warnings.patch [deleted file]
src/patches/backports-4.2.6-1-add_usbnet_modules.patch [deleted file]
src/patches/backports-4.2.6-1-ath9k_add_missing_mask_init.patch [deleted file]
src/patches/backports-4.2.6-1-grsecurity.patch [deleted file]
src/patches/backports-4.2.6-1-mt7601_upstream_fixes.patch [deleted file]
src/patches/backports-4.2.6-1_ath10k_remove_logspam.patch [deleted file]
src/patches/libloc-0.9.5-location-Fix-list-networks-by-as.patch [deleted file]
src/patches/libtirpc-1.0.2-glibc-2.26.patch [deleted file]
src/patches/linux/backports-4.2.6-1_ath10k_remove_logspam.patch [deleted file]
src/patches/pakfire-database-Add-inst_size-column-when-creating-new-data.patch [deleted file]
src/patches/pakfire3-changes-for-ipfire2.diff [deleted file]
src/patches/parted-3.2-device-mapper.patch [deleted file]
src/patches/parted-3.2-sysmacros.patch [deleted file]
src/patches/perl-5.30.0-fix-build-failure-against-gcc-10.patch [deleted file]
src/patches/python-pycurl-fix-do_curl_reset-refcount.patch [deleted file]
src/patches/rpcbind/rpcbind-0.2.3-tirpc_fix-1.patch [deleted file]
src/scripts/makegraphs
src/squid-accounting/accounting.cgi
src/wio/wio-graphs.pl
src/wio/wio.cgi

diff --git a/config/backup/includes/pakfire3 b/config/backup/includes/pakfire3
deleted file mode 100644 (file)
index 404e92c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/etc/pakfire
index e4c3613fb9f2526b13c15574c77c2de06fb7dfa0..441d4c483a46a56335dba96d8a83b0f7defae402 100644 (file)
@@ -24,11 +24,18 @@ package Graphs;
 
 use strict;
 use RRDs;
+use experimental 'smartmatch';
 
 require '/var/ipfire/general-functions.pl';
 require "${General::swroot}/lang.pl";
 require "${General::swroot}/header.pl";
 
+# Graph image size in pixel
+our %image_size = ('width' => 910, 'height' => 300);
+
+# List of all available time ranges
+our @time_ranges = ("hour", "day", "week", "month", "year");
+
 my $ERROR;
 
 my @GRAPH_ARGS = (
@@ -48,21 +55,19 @@ my @GRAPH_ARGS = (
        "-W www.ipfire.org",
 
        # Default size
-       "-w 910",
-       "-h 300",
+       "-w $image_size{'width'}",
+       "-h $image_size{'height'}",
 
        # Use alternative grid
        "--alt-y-grid",
 );
 
-# Read the global settings files to get the current theme and after this load
-# colors for this theme
 
 my %color = ();
 my %mainsettings = ();
 my %sensorsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 if ( $mainsettings{'RRDLOG'} eq "" ){
        $mainsettings{'RRDLOG'}="/var/log/rrd";
@@ -93,26 +98,35 @@ foreach (@sensorsdir){
 &General::readhash("${General::swroot}/sensors/settings", \%sensorsettings);
 
 # Generate a nice box for selection of time range in graphs
-# this will generate a nice iframe for the cgi every klick for
-# the graph will be handled inside the iframe
+# this will generate a nice div box for the cgi every klick for
+# the graph will be handled by javascript
 # 0 is the cgi refering to
 # 1 is the graph name
-# 2 is the time range for the graph
-# 3 if given is the height of the iframe default if nothing is given
+# 2 is the time range for the graph (optional)
 
 sub makegraphbox {
-       print "<center>";
-       print "<a href='".$_[0]."?".$_[1]."?hour' target='".$_[1]."box'><b>".$Lang::tr{'hour'}."</b></a>";
-       print " - ";
-       print "<a href='".$_[0]."?".$_[1]."?day' target='".$_[1]."box'><b>".$Lang::tr{'day'}."</b></a>";
-       print " - ";
-       print "<a href='".$_[0]."?".$_[1]."?week' target='".$_[1]."box'><b>".$Lang::tr{'week'}."</b></a>";
-       print " - ";
-       print "<a href='".$_[0]."?".$_[1]."?month' target='".$_[1]."box'><b>".$Lang::tr{'month'}."</b></a>";
-       print " - ";
-       print "<a href='".$_[0]."?".$_[1]."?year' target='".$_[1]."box'><b>".$Lang::tr{'year'}."</b></a>";
-       print "<br></center>";
-       print "<iframe class='graph' src='".$_[0]."?".$_[1]."?".$_[2]."' scrolling='no' frameborder='no' marginheight='0' name='".$_[1]."box'></iframe>";
+       my ($origin, $name, $default_range) = @_;
+       
+       # Optional time range: Default to "day" unless otherwise specified
+       $default_range = "day" unless ($default_range ~~ @time_ranges);
+
+       print <<END;
+<div class="rrdimage" id="rrdimg-$name" data-origin="$origin" data-graph="$name" data-default-range="$default_range">
+       <ul>
+END
+
+       # Print range select buttons
+       foreach my $range (@time_ranges) {
+               print <<END;
+               <li><button data-range="$range" onclick="rrdimage_selectRange(this)">$Lang::tr{$range}</button></li>
+END
+       }
+
+       print <<END;
+       </ul>
+       <img src="/cgi-bin/getrrdimage.cgi?origin=${origin}&graph=${name}&range=${default_range}" alt="$Lang::tr{'graph'} ($name)">
+</div>
+END
 }
 
 # Generate the CPU Graph for the current period of time for values given by
@@ -242,7 +256,7 @@ sub updatecpugraph {
 
        RRDs::graph (@command);
        $ERROR = RRDs::error;
-       print "Error in RRD::graph for cpu: ".$ERROR."\n" if $ERROR;
+       return "Error in RRD::graph for cpu: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Load Graph for the current period of time for values given by collecd
@@ -274,7 +288,7 @@ sub updateloadgraph {
                "LINE1:load1".$color{"color18"},
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for load: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for load: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Memory Graph for the current period of time for values given by collecd
@@ -330,7 +344,7 @@ sub updatememorygraph {
                "GPRINT:freepct:LAST:%3.2lf%%\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for memory: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for memory: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Swap Graph for the current period of time for values given by collecd
@@ -379,7 +393,7 @@ sub updateswapgraph {
                "GPRINT:freepct:LAST:%3.2lf%%\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for memory: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for memory: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Process Cpu Graph for the current period of time for values given by collecd
@@ -426,7 +440,7 @@ sub updateprocessescpugraph {
 
                RRDs::graph (@command);
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for processes: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for processes: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Process Memory Graph for the current period of time for values given by collecd
@@ -472,7 +486,7 @@ sub updateprocessesmemorygraph {
 
                RRDs::graph (@command);
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for processesmemory: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for processesmemory: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Disk Graph for the current period of time for values given by collecd
@@ -516,7 +530,7 @@ sub updatediskgraph {
                "GPRINT:write:LAST:%8.1lf %sBps\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for ".$disk.": ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for ".$disk.": ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Interface Graph for the current period of time for values given by collecd
@@ -555,7 +569,7 @@ sub updateifgraph {
                "GPRINT:outgoing:LAST:%8.1lf %sBps\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;
 }
 
 sub updatevpngraph {
@@ -592,7 +606,7 @@ sub updatevpngraph {
                "GPRINT:outgoing:LAST:%8.1lf %sBps\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;
 }
 
 sub updatevpnn2ngraph {
@@ -655,7 +669,7 @@ sub updatevpnn2ngraph {
                "GPRINT:compression_out:LAST:%8.1lf %sBps\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Firewall Graph for the current period of time for values given by collecd
@@ -710,7 +724,7 @@ sub updatefwhitsgraph {
                "GPRINT:portscan:LAST:%8.1lf %sBps\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for firewallhits: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for firewallhits: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Line Quality Graph for the current period of time for values given by collecd
@@ -752,7 +766,7 @@ sub updatepinggraph {
                "GPRINT:roundtrip:LAST:%3.2lf ms\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for link quality: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for link quality: ".$ERROR."\n" if $ERROR;
 }
 
 sub updatewirelessgraph {
@@ -787,7 +801,7 @@ sub updatewirelessgraph {
                "GPRINT:power:LAST:%5.1lf %sdBm\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for wireless: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for wireless: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the HDD Temp Graph for the current period of time for values given by collecd and lm_sensors
@@ -821,7 +835,7 @@ sub updatehddgraph {
                "GPRINT:temperature:LAST:%3.0lf °C\\j",
                );
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for hdd-".$disk.": ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for hdd-".$disk.": ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Temp Graph for the current period of time for values given by collecd and lm_sensors
@@ -869,7 +883,7 @@ sub updatehwtempgraph {
 
                RRDs::graph (@command);
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for HDD Temp: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for HDD Temp: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Fan Graph for the current period of time for values given by collecd and lm_sensors
@@ -916,7 +930,7 @@ sub updatehwfangraph {
 
                RRDs::graph (@command);
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for Fan Speed: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for Fan Speed: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Voltage Graph for the current period of time for values given by collecd and lm_sensors
@@ -963,7 +977,7 @@ sub updatehwvoltgraph {
 
                RRDs::graph (@command);
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for Voltage: ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for Voltage: ".$ERROR."\n" if $ERROR;
 }
 
 
@@ -1045,7 +1059,7 @@ sub updateqosgraph {
                }
                RRDs::graph (@command);
                $ERROR = RRDs::error;
-               print "Error in RRD::graph for qos device ".$qossettings{'DEV'}.": ".$ERROR."\n" if $ERROR;
+               return "Error in RRD::graph for qos device ".$qossettings{'DEV'}.": ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the CPU Frequency Graph for the current period of time for values given by collectd an lm_sensors
@@ -1084,7 +1098,7 @@ sub updatecpufreqgraph {
 
        RRDs::graph (@command);
        $ERROR = RRDs::error;
-       print "Error in RRD::graph for cpu freq: ".$ERROR."\n" if $ERROR;
+       return "Error in RRD::graph for cpu freq: ".$ERROR."\n" if $ERROR;
 }
 
 # Generate the Thermal Zone Temp CPU Graph
@@ -1123,7 +1137,7 @@ sub updatethermaltempgraph {
 
        RRDs::graph (@command);
        $ERROR = RRDs::error;
-       print "Error in RRD::graph for thermal temp: ".$ERROR."\n" if $ERROR;
+       return "Error in RRD::graph for thermal temp: ".$ERROR."\n" if $ERROR;
 }
 
 
@@ -1168,7 +1182,7 @@ sub updateentropygraph {
        RRDs::graph (@command);
        $ERROR = RRDs::error;
 
-       print "Error in RRD::graph for entropy: ".$ERROR."\n" if $ERROR;
+       return "Error in RRD::graph for entropy: ".$ERROR."\n" if $ERROR;
 }
 
 sub updateconntrackgraph {
@@ -1196,5 +1210,5 @@ sub updateconntrackgraph {
        RRDs::graph(@command);
        $ERROR = RRDs::error;
 
-       print STDERR "Error in RRD::Graph for conntrack: " . $ERROR . "\n" if $ERROR;
+       return "Error in RRD::Graph for conntrack: " . $ERROR . "\n" if $ERROR;
 }
index 5684c01c553ea11a7e8fb8894ebe5c85397fdfc7..83ef019517ad779d8ffd32e8878e6055f13e7ab1 100644 (file)
@@ -91,11 +91,10 @@ if ( -d "/var/ipfire/langs/${language}/" ) {
     };
 };
 
-our $THEME_NAME = $settings{'THEME'};
 
 require "${swroot}/langs/en.pl";
 require "${swroot}/langs/${language}.pl";
-eval `/bin/cat /srv/web/ipfire/html/themes/$THEME_NAME/include/functions.pl`;
+eval `/bin/cat /srv/web/ipfire/html/themes/ipfire/include/functions.pl`;
 
 sub green_used() {
     if ($ethsettings{'GREEN_DEV'} && $ethsettings{'GREEN_DEV'} ne "") {
@@ -170,6 +169,12 @@ sub genmenu {
         $menu->{'02.status'}{'subMenu'}->{'74.modem-status'}{'enabled'} = 1;
     }
 
+       # Disable the Dialup/PPPoE menu item when the RED interface is in IP mode
+       # (the "Network" module is loaded by general-functions.pl)
+       if(&Network::is_red_mode_ip()) {
+               $menu->{'01.system'}{'subMenu'}->{'20.dialup'}{'enabled'} = 0;
+       }
+
     # Disbale unusable things in cloud environments
     if (&General::running_in_cloud()) {
         $menu->{'03.network'}{'subMenu'}->{'30.dhcp'}{'enabled'} = 0;
index e94404f05418925fd36c859715bdace42fc26067..9908ee8abd2089962f8a482f8222edc1066c7106 100644 (file)
@@ -431,6 +431,18 @@ sub valid_mac($) {
        return $mac =~ /^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$/;
 }
 
+# Compares two MAC addresses and returns true if they are equal
+sub is_mac_equal {
+       my $mac_1 = uc shift; # convert to upper case
+       my $mac_2 = uc shift;
+
+       if(valid_mac($mac_1) && valid_mac($mac_2) && ($mac_1 eq $mac_2)) {
+               return 1;
+       }
+
+       return 0;
+}
+
 sub random_mac {
        my $address = "02";
 
index c2316e415c6e0b4f7a1ca36c5022a36cd48832ed..941c631c9380954cbda807a47b8c2464e62382d9 100644 (file)
@@ -36,7 +36,6 @@ include "/etc/collectd.precache"
 <Plugin interface>
        Interface "lo"
        Interface "/[0-9]*phys$/"
-       Interface "/^macvtap[0-9]*$/"
        Interface "/^vnet[0-9]*$/"
        IgnoreSelected true
 </Plugin>
diff --git a/config/etc/sysctl-aarch64.conf b/config/etc/sysctl-aarch64.conf
new file mode 100644 (file)
index 0000000..9f84080
--- /dev/null
@@ -0,0 +1,2 @@
+# Turn on BPF JIT hardening, if the JIT is enabled.
+net.core.bpf_jit_harden = 2
diff --git a/config/etc/sysctl-armv5tel.conf b/config/etc/sysctl-armv5tel.conf
new file mode 100644 (file)
index 0000000..9f84080
--- /dev/null
@@ -0,0 +1,2 @@
+# Turn on BPF JIT hardening, if the JIT is enabled.
+net.core.bpf_jit_harden = 2
index 7384bed513164a3c8e51cd533b9751ab80be6df2..c7abecc5d0c75ad56d2dbcf6065df9405e33c8a5 100644 (file)
@@ -1,3 +1,6 @@
 # Improve KASLR effectiveness for mmap
 vm.mmap_rnd_bits = 32
 vm.mmap_rnd_compat_bits = 16
+
+# Turn on BPF JIT hardening, if the JIT is enabled.
+net.core.bpf_jit_harden = 2
index c9b4c092af55df80e5555a386c54308912b56ecf..832ad3d1c23ffa8f05a233cf09b7c5485cf9e386 100644 (file)
@@ -39,6 +39,10 @@ net.bridge.bridge-nf-call-ip6tables = 0
 net.bridge.bridge-nf-call-iptables = 0
 net.bridge.bridge-nf-call-arptables = 0
 
+# Restrict loading TTY line disciplines to CAP_SYS_MODULE to prevent unprivileged attackers
+# from loading vulnerable line disciplines with the TIOCSETD ioctl.
+dev.tty.ldisc_autoload = 0
+
 # Try to keep kernel address exposures out of various /proc files (kallsyms, modules, etc).
 kernel.kptr_restrict = 2
 
index 9d0728e07e801ad191214881a31d5274d7895d35..64ea9845c2bd6ad7b5b624526b81a89849dfebae 100644 (file)
@@ -731,7 +731,7 @@ sort_order = $TRACK
 # the installation script - if this doesn't happen report this as
 # a bug.
 #
-plugin_directory = /usr/lib/perl5/5.30.0/gnump3d/plugins
+plugin_directory = /usr/lib/perl5/5.32.1/gnump3d/plugins
 #
 
 
index 6b6b019c90f4e33890b02d923e16c058051fd6f5..2ee7c1290c0d3e08ebbe5964a0da4724baccaab4 100644 (file)
@@ -1,13 +1,13 @@
 #usr/bin/ptar
 #usr/bin/ptardiff
-#usr/lib/perl5/site_perl/5.30.0/Archive
-#usr/lib/perl5/site_perl/5.30.0/Archive/Tar
-usr/lib/perl5/site_perl/5.30.0/Archive/Tar.pm
-usr/lib/perl5/site_perl/5.30.0/Archive/Tar/Constant.pm
-usr/lib/perl5/site_perl/5.30.0/Archive/Tar/File.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Archive
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Archive/Tar
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Archive/Tar/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Archive
+#usr/lib/perl5/site_perl/5.32.1/Archive/Tar
+usr/lib/perl5/site_perl/5.32.1/Archive/Tar.pm
+usr/lib/perl5/site_perl/5.32.1/Archive/Tar/Constant.pm
+usr/lib/perl5/site_perl/5.32.1/Archive/Tar/File.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Archive
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Archive/Tar
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Archive/Tar/.packlist
 #usr/share/man/man1/ptar.1
 #usr/share/man/man1/ptardiff.1
 #usr/share/man/man3/Archive::Tar.3
index f7ec69a779d415fdd9d5a96bc2da1c5673a8b80d..962ccfe2f282a78918ed476fa768c88ad6682ec5 100644 (file)
@@ -1,14 +1,14 @@
 #usr/bin/crc32
-#usr/lib/perl5/site_perl/5.30.0/Archive/Zip
-usr/lib/perl5/site_perl/5.30.0/Archive/Zip.pm
-#usr/lib/perl5/site_perl/5.30.0/Archive/Zip.pod
-usr/lib/perl5/site_perl/5.30.0/Archive/Zip/BufferedFileHandle.pm
-#usr/lib/perl5/site_perl/5.30.0/Archive/Zip/FAQ.pod
-usr/lib/perl5/site_perl/5.30.0/Archive/Zip/MemberRead.pm
-usr/lib/perl5/site_perl/5.30.0/Archive/Zip/MockFileHandle.pm
-usr/lib/perl5/site_perl/5.30.0/Archive/Zip/Tree.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Archive/Zip
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Archive/Zip/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Archive/Zip
+usr/lib/perl5/site_perl/5.32.1/Archive/Zip.pm
+#usr/lib/perl5/site_perl/5.32.1/Archive/Zip.pod
+usr/lib/perl5/site_perl/5.32.1/Archive/Zip/BufferedFileHandle.pm
+#usr/lib/perl5/site_perl/5.32.1/Archive/Zip/FAQ.pod
+usr/lib/perl5/site_perl/5.32.1/Archive/Zip/MemberRead.pm
+usr/lib/perl5/site_perl/5.32.1/Archive/Zip/MockFileHandle.pm
+usr/lib/perl5/site_perl/5.32.1/Archive/Zip/Tree.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Archive/Zip
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Archive/Zip/.packlist
 #usr/share/man/man3/Archive::Zip.3
 #usr/share/man/man3/Archive::Zip::FAQ.3
 #usr/share/man/man3/Archive::Zip::MemberRead.3
index c9e34172855ebc9c1b5a3c13e40a80068fee905e..36daa04aa5384c44b4b86e32d43e8d45c2b6e9f2 100644 (file)
@@ -1,13 +1,13 @@
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/perllocal.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/BerkeleyDB
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/BerkeleyDB.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/BerkeleyDB.pod
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/BerkeleyDB/Btree.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/BerkeleyDB/Hash.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/BerkeleyDB
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/BerkeleyDB/.packlist
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/BerkeleyDB/BerkeleyDB.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/mkconsts.pl
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/scan.pl
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/perllocal.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/BerkeleyDB
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/BerkeleyDB.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/BerkeleyDB.pod
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/BerkeleyDB/Btree.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/BerkeleyDB/Hash.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/BerkeleyDB
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/BerkeleyDB/.packlist
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/BerkeleyDB/BerkeleyDB.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/mkconsts.pl
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/scan.pl
 #usr/share/man/man3/BerkeleyDB.3
index 32b26a027ac75f806a8b9f6700705de3e25a56fa..575395dcf30e8317f20a6a02fcb0639611fe80f4 100644 (file)
@@ -1,9 +1,9 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Compress
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Compress/Zlib.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib/Zlib.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib/Zlib.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Compress
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Compress/Zlib.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib/Zlib.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib/Zlib.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Zlib/autosplit.ix
 #usr/share/man/man3/Compress::Zlib.3
index a2614dbda933fe1ed90216a89070663fcbedb8be..2832256d0cd07649e697e608f4b4a085ac8128fe 100644 (file)
@@ -1,6 +1,6 @@
-#usr/lib/perl5/site_perl/5.30.0/Convert
-usr/lib/perl5/site_perl/5.30.0/Convert/TNEF.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Convert
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Convert/TNEF
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Convert/TNEF/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Convert
+usr/lib/perl5/site_perl/5.32.1/Convert/TNEF.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Convert
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Convert/TNEF
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Convert/TNEF/.packlist
 #usr/share/man/man3/Convert::TNEF.3
index fcc44bb04453b70b9553ddd2df55b3de2bf66c8f..4a05f5182d8bbc26ff7c1820608e469f38fa8091 100644 (file)
@@ -1,7 +1,7 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Convert
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Convert/UUlib.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Convert/UUlib
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Convert/UUlib/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Convert/UUlib/UUlib.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Convert/UUlib/UUlib.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Convert
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Convert/UUlib.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Convert/UUlib
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Convert/UUlib/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Convert/UUlib/UUlib.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Convert/UUlib/UUlib.so
 #usr/share/man/man3/Convert::UUlib.3
index bcc05ecb2b6ea4bcf7d296211df7b576a351eac9..ed1d00d48bb4d1790c5a53b002db13052a834498 100644 (file)
@@ -1,6 +1,6 @@
-#usr/lib/perl5/site_perl/5.30.0/Crypt
-usr/lib/perl5/site_perl/5.30.0/Crypt/PasswdMD5.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Crypt
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Crypt/PasswdMD5
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Crypt/PasswdMD5/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Crypt
+usr/lib/perl5/site_perl/5.32.1/Crypt/PasswdMD5.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Crypt
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Crypt/PasswdMD5
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Crypt/PasswdMD5/.packlist
 #usr/share/man/man3/Crypt::PasswdMD5.3
index 0a477a5883e040639f3351e062bf73f15e9d9d38..5a883f604aa354aa7485cd1119be94fd340e4a43 100644 (file)
@@ -1 +1 @@
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/.packlist
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/.packlist
index 8a5451ed4d9c6f84914b6109faa6eb2effb3d1e0..72bca5720cef1efc3987679acfcaf91b4dd0bc93 100644 (file)
@@ -1,9 +1,9 @@
-#usr/lib/perl5/site_perl/5.30.0/Digest
-usr/lib/perl5/site_perl/5.30.0/Digest/HMAC.pm
-usr/lib/perl5/site_perl/5.30.0/Digest/HMAC_MD5.pm
-usr/lib/perl5/site_perl/5.30.0/Digest/HMAC_SHA1.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/HMAC
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/HMAC/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Digest
+usr/lib/perl5/site_perl/5.32.1/Digest/HMAC.pm
+usr/lib/perl5/site_perl/5.32.1/Digest/HMAC_MD5.pm
+usr/lib/perl5/site_perl/5.32.1/Digest/HMAC_SHA1.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/HMAC
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/HMAC/.packlist
 #usr/share/man/man3/Digest::HMAC.3
 #usr/share/man/man3/Digest::HMAC_MD5.3
 #usr/share/man/man3/Digest::HMAC_SHA1.3
index d01282eedf7eaa19502b9c84c208c6bb2b20915c..21e013b1b862328dceb13637c8da1fce9f34ae8c 100644 (file)
@@ -1,7 +1,7 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Digest
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Digest/SHA1.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA1
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA1/.packlist
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA1/SHA1.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Digest
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Digest/SHA1.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA1
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA1/.packlist
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA1/SHA1.so
 #usr/share/man/man3/Digest::SHA1.3
index 793424f12fb28b06b5849670ab9d533ecae301cb..d4aac2f640ab1014f342ae5bda1b1db874d2724e 100644 (file)
@@ -1,24 +1,24 @@
-#usr/lib/perl5/site_perl/5.30.0/GD
-#usr/lib/perl5/site_perl/5.30.0/GD/Graph
-usr/lib/perl5/site_perl/5.30.0/GD/Graph.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/Data.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/Error.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/FAQ.pod
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/area.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/axestype.pm
-#usr/lib/perl5/site_perl/5.30.0/GD/Graph/axestype.pm.orig
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/bars.pm
-#usr/lib/perl5/site_perl/5.30.0/GD/Graph/bars.pm.orig
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/colour.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/hbars.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/lines.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/linespoints.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/mixed.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/pie.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/points.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Graph/utils.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/GD/Graph
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/GD/Graph/.packlist
+#usr/lib/perl5/site_perl/5.32.1/GD
+#usr/lib/perl5/site_perl/5.32.1/GD/Graph
+usr/lib/perl5/site_perl/5.32.1/GD/Graph.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/Data.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/Error.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/FAQ.pod
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/area.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/axestype.pm
+#usr/lib/perl5/site_perl/5.32.1/GD/Graph/axestype.pm.orig
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/bars.pm
+#usr/lib/perl5/site_perl/5.32.1/GD/Graph/bars.pm.orig
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/colour.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/hbars.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/lines.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/linespoints.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/mixed.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/pie.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/points.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Graph/utils.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/GD/Graph
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/GD/Graph/.packlist
 #usr/share/man/man3/GD::Graph.3
 #usr/share/man/man3/GD::Graph::Data.3
 #usr/share/man/man3/GD::Graph::Error.3
index 0fb7f13f729e2525cd2badc2a44350632b18b347..0a9b2aab1d316ba387afe4d964a5417a98673043 100644 (file)
@@ -1,9 +1,9 @@
-#usr/lib/perl5/site_perl/5.30.0/GD/Text
-usr/lib/perl5/site_perl/5.30.0/GD/Text.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Text/Align.pm
-usr/lib/perl5/site_perl/5.30.0/GD/Text/Wrap.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/GD/Text
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/GD/Text/.packlist
+#usr/lib/perl5/site_perl/5.32.1/GD/Text
+usr/lib/perl5/site_perl/5.32.1/GD/Text.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Text/Align.pm
+usr/lib/perl5/site_perl/5.32.1/GD/Text/Wrap.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/GD/Text
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/GD/Text/.packlist
 #usr/share/man/man3/GD::Text.3
 #usr/share/man/man3/GD::Text::Align.3
 #usr/share/man/man3/GD::Text::Wrap.3
index 52b46ac28264fba90bf08014e7fb0dfa71b5b531..f3f9f0d0b7c5ea8b78a47ea28ecdeb50b731da4a 100644 (file)
@@ -1,15 +1,15 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/HTML
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/HTML/Entities.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/HTML/Filter.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/HTML/HeadParser.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/HTML/LinkExtor.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/HTML/Parser.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/HTML/PullParser.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/HTML/TokeParser.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/HTML/Parser
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/HTML/Parser/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/HTML/Parser/Parser.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/HTML/Parser/Parser.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/HTML
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/HTML/Entities.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/HTML/Filter.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/HTML/HeadParser.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/HTML/LinkExtor.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/HTML/Parser.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/HTML/PullParser.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/HTML/TokeParser.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/HTML/Parser
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/HTML/Parser/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/HTML/Parser/Parser.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/HTML/Parser/Parser.so
 #usr/share/man/man3/HTML::Entities.3
 #usr/share/man/man3/HTML::Filter.3
 #usr/share/man/man3/HTML::HeadParser.3
index 3557788be3e6b372bd158564abe99a077630acef..e946238de05e429591719c04ad9fd407515ae227 100644 (file)
@@ -1,6 +1,6 @@
-#usr/lib/perl5/site_perl/5.30.0/HTML
-usr/lib/perl5/site_perl/5.30.0/HTML/Tagset.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/HTML
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/HTML/Tagset
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/HTML/Tagset/.packlist
+#usr/lib/perl5/site_perl/5.32.1/HTML
+usr/lib/perl5/site_perl/5.32.1/HTML/Tagset.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/HTML
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/HTML/Tagset
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/HTML/Tagset/.packlist
 #usr/share/man/man3/HTML::Tagset.3
index 8b2c5dd57e0d125391f1ad05802561ad8fbc15e3..aacf6b8dd9276840ad8bdf2a18cbdb319488b76b 100644 (file)
@@ -1,7 +1,7 @@
-usr/lib/perl5/site_perl/5.30.0/HTML/Template
-usr/lib/perl5/site_perl/5.30.0/HTML/Template.pm
-usr/lib/perl5/site_perl/5.30.0/HTML/Template/FAQ.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/HTML/Template
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/HTML/Template/.packlist
+usr/lib/perl5/site_perl/5.32.1/HTML/Template
+usr/lib/perl5/site_perl/5.32.1/HTML/Template.pm
+usr/lib/perl5/site_perl/5.32.1/HTML/Template/FAQ.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/HTML/Template
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/HTML/Template/.packlist
 #usr/share/man/man3/HTML::Template.3
 #usr/share/man/man3/HTML::Template::FAQ.3
index b960c5985b706cfa327b9b952ccbf2c46064d7c8..203ce122bbf38076e42f586912f1b18a389351e0 100644 (file)
@@ -1,13 +1,13 @@
-#usr/lib/perl5/site_perl/5.30.0/IO/Socket
-#usr/lib/perl5/site_perl/5.30.0/IO/Socket/SSL
-usr/lib/perl5/site_perl/5.30.0/IO/Socket/SSL.pm
-#usr/lib/perl5/site_perl/5.30.0/IO/Socket/SSL.pod
-usr/lib/perl5/site_perl/5.30.0/IO/Socket/SSL/Intercept.pm
-usr/lib/perl5/site_perl/5.30.0/IO/Socket/SSL/PublicSuffix.pm
-usr/lib/perl5/site_perl/5.30.0/IO/Socket/SSL/Utils.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO/Socket
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO/Socket/SSL
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO/Socket/SSL/.packlist
+#usr/lib/perl5/site_perl/5.32.1/IO/Socket
+#usr/lib/perl5/site_perl/5.32.1/IO/Socket/SSL
+usr/lib/perl5/site_perl/5.32.1/IO/Socket/SSL.pm
+#usr/lib/perl5/site_perl/5.32.1/IO/Socket/SSL.pod
+usr/lib/perl5/site_perl/5.32.1/IO/Socket/SSL/Intercept.pm
+usr/lib/perl5/site_perl/5.32.1/IO/Socket/SSL/PublicSuffix.pm
+usr/lib/perl5/site_perl/5.32.1/IO/Socket/SSL/Utils.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO/Socket
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO/Socket/SSL
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO/Socket/SSL/.packlist
 #usr/share/man/man3/IO::Socket::SSL.3
 #usr/share/man/man3/IO::Socket::SSL::Intercept.3
 #usr/share/man/man3/IO::Socket::SSL::PublicSuffix.3
index 480bc93ba7ad90d03a73c471aa755b5c4f938606..a61e59f6358d962ac30113b1bf25c0c9dbb3dbf1 100644 (file)
@@ -1,15 +1,15 @@
-#usr/lib/perl5/site_perl/5.30.0/IO
-usr/lib/perl5/site_perl/5.30.0/IO/AtomicFile.pm
-usr/lib/perl5/site_perl/5.30.0/IO/InnerFile.pm
-usr/lib/perl5/site_perl/5.30.0/IO/Lines.pm
-usr/lib/perl5/site_perl/5.30.0/IO/Scalar.pm
-usr/lib/perl5/site_perl/5.30.0/IO/ScalarArray.pm
-usr/lib/perl5/site_perl/5.30.0/IO/Stringy.pm
-usr/lib/perl5/site_perl/5.30.0/IO/Wrap.pm
-usr/lib/perl5/site_perl/5.30.0/IO/WrapTie.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO/Stringy
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO/Stringy/.packlist
+#usr/lib/perl5/site_perl/5.32.1/IO
+usr/lib/perl5/site_perl/5.32.1/IO/AtomicFile.pm
+usr/lib/perl5/site_perl/5.32.1/IO/InnerFile.pm
+usr/lib/perl5/site_perl/5.32.1/IO/Lines.pm
+usr/lib/perl5/site_perl/5.32.1/IO/Scalar.pm
+usr/lib/perl5/site_perl/5.32.1/IO/ScalarArray.pm
+usr/lib/perl5/site_perl/5.32.1/IO/Stringy.pm
+usr/lib/perl5/site_perl/5.32.1/IO/Wrap.pm
+usr/lib/perl5/site_perl/5.32.1/IO/WrapTie.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO/Stringy
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO/Stringy/.packlist
 #usr/share/man/man3/IO::AtomicFile.3
 #usr/share/man/man3/IO::InnerFile.3
 #usr/share/man/man3/IO::Lines.3
index 60aad246e50ce4235d6cac67738fd641140f7d24..0ad8ae9c159c8a31e25177eb1baf640d32b0181c 100644 (file)
@@ -1,32 +1,32 @@
-#usr/lib/perl5/site_perl/5.30.0/MIME
-usr/lib/perl5/site_perl/5.30.0/MIME/Body.pm
-#usr/lib/perl5/site_perl/5.30.0/MIME/Decoder
-usr/lib/perl5/site_perl/5.30.0/MIME/Decoder.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Decoder/Base64.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Decoder/BinHex.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Decoder/Binary.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Decoder/Gzip64.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Decoder/NBit.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Decoder/QuotedPrint.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Decoder/UU.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Entity.pm
-#usr/lib/perl5/site_perl/5.30.0/MIME/Field
-usr/lib/perl5/site_perl/5.30.0/MIME/Field/ConTraEnc.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Field/ContDisp.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Field/ContType.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Field/ParamVal.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Head.pm
-#usr/lib/perl5/site_perl/5.30.0/MIME/Parser
-usr/lib/perl5/site_perl/5.30.0/MIME/Parser.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Parser/Filer.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Parser/Reader.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Parser/Results.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Tools.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/WordDecoder.pm
-usr/lib/perl5/site_perl/5.30.0/MIME/Words.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/tools
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/tools/.packlist
+#usr/lib/perl5/site_perl/5.32.1/MIME
+usr/lib/perl5/site_perl/5.32.1/MIME/Body.pm
+#usr/lib/perl5/site_perl/5.32.1/MIME/Decoder
+usr/lib/perl5/site_perl/5.32.1/MIME/Decoder.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Decoder/Base64.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Decoder/BinHex.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Decoder/Binary.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Decoder/Gzip64.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Decoder/NBit.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Decoder/QuotedPrint.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Decoder/UU.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Entity.pm
+#usr/lib/perl5/site_perl/5.32.1/MIME/Field
+usr/lib/perl5/site_perl/5.32.1/MIME/Field/ConTraEnc.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Field/ContDisp.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Field/ContType.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Field/ParamVal.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Head.pm
+#usr/lib/perl5/site_perl/5.32.1/MIME/Parser
+usr/lib/perl5/site_perl/5.32.1/MIME/Parser.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Parser/Filer.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Parser/Reader.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Parser/Results.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Tools.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/WordDecoder.pm
+usr/lib/perl5/site_perl/5.32.1/MIME/Words.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/tools
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/tools/.packlist
 #usr/share/man/man3/MIME::Body.3
 #usr/share/man/man3/MIME::Decoder.3
 #usr/share/man/man3/MIME::Decoder::Base64.3
index ed42405347fc3683e8660ca93095acf571830497..35dc678f84158734216bb41592f50093d1bcfdb9 100644 (file)
@@ -1,38 +1,38 @@
-#usr/lib/perl5/site_perl/5.30.0/Mail
-usr/lib/perl5/site_perl/5.30.0/Mail/Address.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Address.pod
-usr/lib/perl5/site_perl/5.30.0/Mail/Cap.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Cap.pod
-#usr/lib/perl5/site_perl/5.30.0/Mail/Field
-usr/lib/perl5/site_perl/5.30.0/Mail/Field.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Field.pod
-usr/lib/perl5/site_perl/5.30.0/Mail/Field/AddrList.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Field/AddrList.pod
-usr/lib/perl5/site_perl/5.30.0/Mail/Field/Date.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Field/Date.pod
-usr/lib/perl5/site_perl/5.30.0/Mail/Field/Generic.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Field/Generic.pod
-usr/lib/perl5/site_perl/5.30.0/Mail/Filter.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Filter.pod
-usr/lib/perl5/site_perl/5.30.0/Mail/Header.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Header.pod
-usr/lib/perl5/site_perl/5.30.0/Mail/Internet.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Internet.pod
-#usr/lib/perl5/site_perl/5.30.0/Mail/Mailer
-usr/lib/perl5/site_perl/5.30.0/Mail/Mailer.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Mailer.pod
-usr/lib/perl5/site_perl/5.30.0/Mail/Mailer/qmail.pm
-usr/lib/perl5/site_perl/5.30.0/Mail/Mailer/rfc822.pm
-usr/lib/perl5/site_perl/5.30.0/Mail/Mailer/sendmail.pm
-usr/lib/perl5/site_perl/5.30.0/Mail/Mailer/smtp.pm
-usr/lib/perl5/site_perl/5.30.0/Mail/Mailer/smtps.pm
-usr/lib/perl5/site_perl/5.30.0/Mail/Mailer/testfile.pm
-usr/lib/perl5/site_perl/5.30.0/Mail/Send.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Send.pod
-usr/lib/perl5/site_perl/5.30.0/Mail/Util.pm
-#usr/lib/perl5/site_perl/5.30.0/Mail/Util.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Mail
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Mail/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Mail
+usr/lib/perl5/site_perl/5.32.1/Mail/Address.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Address.pod
+usr/lib/perl5/site_perl/5.32.1/Mail/Cap.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Cap.pod
+#usr/lib/perl5/site_perl/5.32.1/Mail/Field
+usr/lib/perl5/site_perl/5.32.1/Mail/Field.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Field.pod
+usr/lib/perl5/site_perl/5.32.1/Mail/Field/AddrList.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Field/AddrList.pod
+usr/lib/perl5/site_perl/5.32.1/Mail/Field/Date.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Field/Date.pod
+usr/lib/perl5/site_perl/5.32.1/Mail/Field/Generic.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Field/Generic.pod
+usr/lib/perl5/site_perl/5.32.1/Mail/Filter.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Filter.pod
+usr/lib/perl5/site_perl/5.32.1/Mail/Header.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Header.pod
+usr/lib/perl5/site_perl/5.32.1/Mail/Internet.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Internet.pod
+#usr/lib/perl5/site_perl/5.32.1/Mail/Mailer
+usr/lib/perl5/site_perl/5.32.1/Mail/Mailer.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Mailer.pod
+usr/lib/perl5/site_perl/5.32.1/Mail/Mailer/qmail.pm
+usr/lib/perl5/site_perl/5.32.1/Mail/Mailer/rfc822.pm
+usr/lib/perl5/site_perl/5.32.1/Mail/Mailer/sendmail.pm
+usr/lib/perl5/site_perl/5.32.1/Mail/Mailer/smtp.pm
+usr/lib/perl5/site_perl/5.32.1/Mail/Mailer/smtps.pm
+usr/lib/perl5/site_perl/5.32.1/Mail/Mailer/testfile.pm
+usr/lib/perl5/site_perl/5.32.1/Mail/Send.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Send.pod
+usr/lib/perl5/site_perl/5.32.1/Mail/Util.pm
+#usr/lib/perl5/site_perl/5.32.1/Mail/Util.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Mail
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Mail/.packlist
 #usr/share/man/man3/Mail::Address.3
 #usr/share/man/man3/Mail::Cap.3
 #usr/share/man/man3/Mail::Field.3
index 5ccee99495d1b52d3a761259cb9e2ed1208fe0d2..4afc1be07863c325290e8618f1509fcda8879257 100644 (file)
@@ -1,92 +1,94 @@
-#usr/lib/perl5/site_perl/5.30.0/Net/DNS
-usr/lib/perl5/site_perl/5.30.0/Net/DNS.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Domain.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/DomainName.pm
-#usr/lib/perl5/site_perl/5.30.0/Net/DNS/FAQ.pod
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Header.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Mailbox.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Nameserver.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Packet.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Parameters.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Question.pm
-#usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/A.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/AAAA.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/AFSDB.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/AMTRELAY.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/APL.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/CAA.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/CDNSKEY.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/CDS.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/CERT.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/CNAME.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/CSYNC.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/DHCID.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/DNAME.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/DNSKEY.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/DS.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/EUI48.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/EUI64.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/GPOS.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/HINFO.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/HIP.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/IPSECKEY.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/ISDN.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/KEY.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/KX.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/L32.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/L64.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/LOC.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/LP.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/MB.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/MG.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/MINFO.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/MR.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/MX.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/NAPTR.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/NID.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/NS.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/NSEC.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/NSEC3.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/NSEC3PARAM.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/NULL.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/OPENPGPKEY.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/OPT.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/PTR.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/PX.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/RP.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/RRSIG.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/RT.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/SIG.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/SMIMEA.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/SOA.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/SPF.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/SRV.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/SSHFP.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/TKEY.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/TLSA.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/TSIG.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/TXT.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/URI.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/X25.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR/ZONEMD.pm
-#usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver/Base.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver/MSWin32.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver/Recurse.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver/UNIX.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver/android.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver/cygwin.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver/os2.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver/os390.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Text.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/Update.pm
-usr/lib/perl5/site_perl/5.30.0/Net/DNS/ZoneFile.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/DNS
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/DNS/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Net/DNS
+usr/lib/perl5/site_perl/5.32.1/Net/DNS.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Domain.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/DomainName.pm
+#usr/lib/perl5/site_perl/5.32.1/Net/DNS/FAQ.pod
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Header.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Mailbox.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Nameserver.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Packet.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Parameters.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Question.pm
+#usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/A.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/AAAA.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/AFSDB.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/AMTRELAY.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/APL.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/CAA.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/CDNSKEY.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/CDS.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/CERT.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/CNAME.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/CSYNC.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/DHCID.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/DNAME.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/DNSKEY.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/DS.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/EUI48.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/EUI64.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/GPOS.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/HINFO.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/HIP.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/HTTPS.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/IPSECKEY.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/ISDN.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/KEY.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/KX.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/L32.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/L64.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/LOC.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/LP.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/MB.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/MG.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/MINFO.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/MR.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/MX.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/NAPTR.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/NID.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/NS.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/NSEC.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/NSEC3.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/NSEC3PARAM.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/NULL.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/OPENPGPKEY.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/OPT.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/PTR.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/PX.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/RP.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/RRSIG.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/RT.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/SIG.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/SMIMEA.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/SOA.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/SPF.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/SRV.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/SSHFP.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/SVCB.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/TKEY.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/TLSA.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/TSIG.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/TXT.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/URI.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/X25.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/RR/ZONEMD.pm
+#usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver/Base.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver/MSWin32.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver/Recurse.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver/UNIX.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver/android.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver/cygwin.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver/os2.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Resolver/os390.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Text.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/Update.pm
+usr/lib/perl5/site_perl/5.32.1/Net/DNS/ZoneFile.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/DNS
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/DNS/.packlist
 #usr/share/man/man3/Net::DNS.3
 #usr/share/man/man3/Net::DNS::Domain.3
 #usr/share/man/man3/Net::DNS::DomainName.3
@@ -118,6 +120,7 @@ usr/lib/perl5/site_perl/5.30.0/Net/DNS/ZoneFile.pm
 #usr/share/man/man3/Net::DNS::RR::GPOS.3
 #usr/share/man/man3/Net::DNS::RR::HINFO.3
 #usr/share/man/man3/Net::DNS::RR::HIP.3
+#usr/share/man/man3/Net::DNS::RR::HTTPS.3
 #usr/share/man/man3/Net::DNS::RR::IPSECKEY.3
 #usr/share/man/man3/Net::DNS::RR::ISDN.3
 #usr/share/man/man3/Net::DNS::RR::KEY.3
@@ -151,6 +154,7 @@ usr/lib/perl5/site_perl/5.30.0/Net/DNS/ZoneFile.pm
 #usr/share/man/man3/Net::DNS::RR::SPF.3
 #usr/share/man/man3/Net::DNS::RR::SRV.3
 #usr/share/man/man3/Net::DNS::RR::SSHFP.3
+#usr/share/man/man3/Net::DNS::RR::SVCB.3
 #usr/share/man/man3/Net::DNS::RR::TKEY.3
 #usr/share/man/man3/Net::DNS::RR::TLSA.3
 #usr/share/man/man3/Net::DNS::RR::TSIG.3
index 48072e6ebb18e62c58cae0c58074d3ebf503f507..ae6fbfec4b47652fbf1fbc055aca93cced3ef080 100644 (file)
@@ -1,10 +1,10 @@
 #usr/bin/ipv4calc
-usr/lib/perl5/site_perl/5.30.0/Net/IPv4Addr.pm
-#usr/lib/perl5/site_perl/5.30.0/auto
-#usr/lib/perl5/site_perl/5.30.0/auto/Net
-#usr/lib/perl5/site_perl/5.30.0/auto/Net/IPv4Addr
-usr/lib/perl5/site_perl/5.30.0/auto/Net/IPv4Addr/autosplit.ix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/IPv4Addr
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/IPv4Addr/.packlist
+usr/lib/perl5/site_perl/5.32.1/Net/IPv4Addr.pm
+#usr/lib/perl5/site_perl/5.32.1/auto
+#usr/lib/perl5/site_perl/5.32.1/auto/Net
+#usr/lib/perl5/site_perl/5.32.1/auto/Net/IPv4Addr
+usr/lib/perl5/site_perl/5.32.1/auto/Net/IPv4Addr/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/IPv4Addr
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/IPv4Addr/.packlist
 #usr/share/man/man1/ipv4calc.1
 #usr/share/man/man3/Net::IPv4Addr.3
index 1e2ad305ad43c5aa37e1752dad0f31a6996e08de..6b55cbad30bb5089253acf8b339723410000d9cc 100644 (file)
@@ -1,23 +1,23 @@
-#usr/lib/perl5/site_perl/5.30.0/Net/Server
-usr/lib/perl5/site_perl/5.30.0/Net/Server.pm
-#usr/lib/perl5/site_perl/5.30.0/Net/Server.pod
-usr/lib/perl5/site_perl/5.30.0/Net/Server/Daemonize.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/Fork.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/INET.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/MultiType.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/Multiplex.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/PreFork.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/PreForkSimple.pm
-#usr/lib/perl5/site_perl/5.30.0/Net/Server/Proto
-usr/lib/perl5/site_perl/5.30.0/Net/Server/Proto.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/Proto/SSL.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/Proto/TCP.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/Proto/UDP.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/Proto/UNIX.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/SIG.pm
-usr/lib/perl5/site_perl/5.30.0/Net/Server/Single.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/Server
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/Server/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Net/Server
+usr/lib/perl5/site_perl/5.32.1/Net/Server.pm
+#usr/lib/perl5/site_perl/5.32.1/Net/Server.pod
+usr/lib/perl5/site_perl/5.32.1/Net/Server/Daemonize.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/Fork.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/INET.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/MultiType.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/Multiplex.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/PreFork.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/PreForkSimple.pm
+#usr/lib/perl5/site_perl/5.32.1/Net/Server/Proto
+usr/lib/perl5/site_perl/5.32.1/Net/Server/Proto.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/Proto/SSL.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/Proto/TCP.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/Proto/UDP.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/Proto/UNIX.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/SIG.pm
+usr/lib/perl5/site_perl/5.32.1/Net/Server/Single.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/Server
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/Server/.packlist
 #usr/share/man/man3/Net::Server.3
 #usr/share/man/man3/Net::Server::Daemonize.3
 #usr/share/man/man3/Net::Server::Fork.3
index 0229b5aec99c705d9904d383f199b51a36b80985..87bafd21cb1a09bff5214d9903d401dd37706b62 100644 (file)
@@ -1,4 +1,4 @@
-usr/lib/perl5/site_perl/5.30.0/Net/Telnet.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/Telnet
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/Telnet/.packlist
+usr/lib/perl5/site_perl/5.32.1/Net/Telnet.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/Telnet
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/Telnet/.packlist
 #usr/share/man/man3/Net::Telnet.3
index cb7695d4422458ac44b65b72ca50e6fd3352cf9a..31587ccdacf83d31a8bd93575f5cef78ecd1a46b 100644 (file)
@@ -1,86 +1,86 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Net
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Net/SSLeay
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Net/SSLeay.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Net/SSLeay.pod
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Net/SSLeay/Handle.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/.packlist
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/SSLeay.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/autosplit.ix
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/debug_read.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_https.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_https2.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_https3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_https4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_httpx2.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_httpx3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_httpx4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/dump_peer_certificate.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_http.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_http3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_http4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_https.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_https3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_https4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_httpx.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_httpx3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_httpx4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_http.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_http3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_http4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_https.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_https3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_https4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_httpx.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_httpx3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_httpx4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/http_cat.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/https_cat.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/httpx_cat.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/initialize.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/make_form.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/make_headers.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/new_x_ctx.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/open_proxy_tcp_connection.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/open_tcp_connection.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_http.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_http3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_http4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_https.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_https3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_https4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_httpx.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_httpx3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_httpx4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_http.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_http3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_http4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_https.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_https3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_https4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_httpx.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_httpx3.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_httpx4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/randomize.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/set_cert_and_key.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/set_proxy.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/set_server_cert_and_key.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_read_CRLF.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_read_all.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_read_until.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_write_CRLF.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_write_all.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/sslcat.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_read_CRLF.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_read_all.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_read_until.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_write_CRLF.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_write_all.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcpcat.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcpxcat.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/want_X509_lookup.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/want_nothing.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/want_read.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/want_write.al
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Net
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Net/SSLeay
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Net/SSLeay.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Net/SSLeay.pod
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Net/SSLeay/Handle.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/.packlist
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/SSLeay.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/autosplit.ix
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/debug_read.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_https.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_https2.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_https3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_https4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_httpx2.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_httpx3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/do_httpx4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/dump_peer_certificate.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_http.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_http3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_http4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_https.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_https3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_https4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_httpx.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_httpx3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/get_httpx4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_http.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_http3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_http4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_https.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_https3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_https4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_httpx.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_httpx3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/head_httpx4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/http_cat.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/https_cat.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/httpx_cat.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/initialize.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/make_form.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/make_headers.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/new_x_ctx.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/open_proxy_tcp_connection.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/open_tcp_connection.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_http.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_http3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_http4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_https.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_https3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_https4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_httpx.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_httpx3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/post_httpx4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_http.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_http3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_http4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_https.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_https3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_https4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_httpx.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_httpx3.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/put_httpx4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/randomize.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/set_cert_and_key.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/set_proxy.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/set_server_cert_and_key.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_read_CRLF.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_read_all.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_read_until.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_write_CRLF.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/ssl_write_all.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/sslcat.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_read_CRLF.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_read_all.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_read_until.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_write_CRLF.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcp_write_all.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcpcat.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/tcpxcat.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/want_X509_lookup.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/want_nothing.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/want_read.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SSLeay/want_write.al
 #usr/share/man/man3/Net::SSLeay.3
 #usr/share/man/man3/Net::SSLeay::Handle.3
index 992c7690f943a47b578f64b3f72b262597240b0d..00e0a3812feb0a8a5320b470fa774c2ed76f0ab9 100644 (file)
@@ -1,2 +1,2 @@
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Text
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Text/.packlist
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Text
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Text/.packlist
index 3c7b84ecbcb4cdc960dea8cc94ae55d210deb9cb..6cd15d5fc41050234317e2b35ebb0ecb07a6b5e9 100644 (file)
@@ -1,57 +1,57 @@
-#usr/lib/perl5/site_perl/5.30.0/URI
-usr/lib/perl5/site_perl/5.30.0/URI.pm
-usr/lib/perl5/site_perl/5.30.0/URI/Escape.pm
-usr/lib/perl5/site_perl/5.30.0/URI/Heuristic.pm
-usr/lib/perl5/site_perl/5.30.0/URI/QueryParam.pm
-usr/lib/perl5/site_perl/5.30.0/URI/Split.pm
-usr/lib/perl5/site_perl/5.30.0/URI/URL.pm
-usr/lib/perl5/site_perl/5.30.0/URI/WithBase.pm
-usr/lib/perl5/site_perl/5.30.0/URI/_foreign.pm
-usr/lib/perl5/site_perl/5.30.0/URI/_generic.pm
-usr/lib/perl5/site_perl/5.30.0/URI/_ldap.pm
-usr/lib/perl5/site_perl/5.30.0/URI/_login.pm
-usr/lib/perl5/site_perl/5.30.0/URI/_query.pm
-usr/lib/perl5/site_perl/5.30.0/URI/_segment.pm
-usr/lib/perl5/site_perl/5.30.0/URI/_server.pm
-usr/lib/perl5/site_perl/5.30.0/URI/_userpass.pm
-usr/lib/perl5/site_perl/5.30.0/URI/data.pm
-usr/lib/perl5/site_perl/5.30.0/URI/file
-usr/lib/perl5/site_perl/5.30.0/URI/file.pm
-usr/lib/perl5/site_perl/5.30.0/URI/file/Base.pm
-usr/lib/perl5/site_perl/5.30.0/URI/file/FAT.pm
-usr/lib/perl5/site_perl/5.30.0/URI/file/Mac.pm
-usr/lib/perl5/site_perl/5.30.0/URI/file/OS2.pm
-usr/lib/perl5/site_perl/5.30.0/URI/file/QNX.pm
-usr/lib/perl5/site_perl/5.30.0/URI/file/Unix.pm
-usr/lib/perl5/site_perl/5.30.0/URI/file/Win32.pm
-usr/lib/perl5/site_perl/5.30.0/URI/ftp.pm
-usr/lib/perl5/site_perl/5.30.0/URI/gopher.pm
-usr/lib/perl5/site_perl/5.30.0/URI/http.pm
-usr/lib/perl5/site_perl/5.30.0/URI/https.pm
-usr/lib/perl5/site_perl/5.30.0/URI/ldap.pm
-usr/lib/perl5/site_perl/5.30.0/URI/ldapi.pm
-usr/lib/perl5/site_perl/5.30.0/URI/ldaps.pm
-usr/lib/perl5/site_perl/5.30.0/URI/mailto.pm
-usr/lib/perl5/site_perl/5.30.0/URI/mms.pm
-usr/lib/perl5/site_perl/5.30.0/URI/news.pm
-usr/lib/perl5/site_perl/5.30.0/URI/nntp.pm
-usr/lib/perl5/site_perl/5.30.0/URI/pop.pm
-usr/lib/perl5/site_perl/5.30.0/URI/rlogin.pm
-usr/lib/perl5/site_perl/5.30.0/URI/rsync.pm
-usr/lib/perl5/site_perl/5.30.0/URI/rtsp.pm
-usr/lib/perl5/site_perl/5.30.0/URI/rtspu.pm
-usr/lib/perl5/site_perl/5.30.0/URI/sip.pm
-usr/lib/perl5/site_perl/5.30.0/URI/sips.pm
-usr/lib/perl5/site_perl/5.30.0/URI/snews.pm
-usr/lib/perl5/site_perl/5.30.0/URI/ssh.pm
-usr/lib/perl5/site_perl/5.30.0/URI/telnet.pm
-usr/lib/perl5/site_perl/5.30.0/URI/tn3270.pm
-#usr/lib/perl5/site_perl/5.30.0/URI/urn
-usr/lib/perl5/site_perl/5.30.0/URI/urn.pm
-usr/lib/perl5/site_perl/5.30.0/URI/urn/isbn.pm
-usr/lib/perl5/site_perl/5.30.0/URI/urn/oid.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/URI
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/URI/.packlist
+#usr/lib/perl5/site_perl/5.32.1/URI
+usr/lib/perl5/site_perl/5.32.1/URI.pm
+usr/lib/perl5/site_perl/5.32.1/URI/Escape.pm
+usr/lib/perl5/site_perl/5.32.1/URI/Heuristic.pm
+usr/lib/perl5/site_perl/5.32.1/URI/QueryParam.pm
+usr/lib/perl5/site_perl/5.32.1/URI/Split.pm
+usr/lib/perl5/site_perl/5.32.1/URI/URL.pm
+usr/lib/perl5/site_perl/5.32.1/URI/WithBase.pm
+usr/lib/perl5/site_perl/5.32.1/URI/_foreign.pm
+usr/lib/perl5/site_perl/5.32.1/URI/_generic.pm
+usr/lib/perl5/site_perl/5.32.1/URI/_ldap.pm
+usr/lib/perl5/site_perl/5.32.1/URI/_login.pm
+usr/lib/perl5/site_perl/5.32.1/URI/_query.pm
+usr/lib/perl5/site_perl/5.32.1/URI/_segment.pm
+usr/lib/perl5/site_perl/5.32.1/URI/_server.pm
+usr/lib/perl5/site_perl/5.32.1/URI/_userpass.pm
+usr/lib/perl5/site_perl/5.32.1/URI/data.pm
+usr/lib/perl5/site_perl/5.32.1/URI/file
+usr/lib/perl5/site_perl/5.32.1/URI/file.pm
+usr/lib/perl5/site_perl/5.32.1/URI/file/Base.pm
+usr/lib/perl5/site_perl/5.32.1/URI/file/FAT.pm
+usr/lib/perl5/site_perl/5.32.1/URI/file/Mac.pm
+usr/lib/perl5/site_perl/5.32.1/URI/file/OS2.pm
+usr/lib/perl5/site_perl/5.32.1/URI/file/QNX.pm
+usr/lib/perl5/site_perl/5.32.1/URI/file/Unix.pm
+usr/lib/perl5/site_perl/5.32.1/URI/file/Win32.pm
+usr/lib/perl5/site_perl/5.32.1/URI/ftp.pm
+usr/lib/perl5/site_perl/5.32.1/URI/gopher.pm
+usr/lib/perl5/site_perl/5.32.1/URI/http.pm
+usr/lib/perl5/site_perl/5.32.1/URI/https.pm
+usr/lib/perl5/site_perl/5.32.1/URI/ldap.pm
+usr/lib/perl5/site_perl/5.32.1/URI/ldapi.pm
+usr/lib/perl5/site_perl/5.32.1/URI/ldaps.pm
+usr/lib/perl5/site_perl/5.32.1/URI/mailto.pm
+usr/lib/perl5/site_perl/5.32.1/URI/mms.pm
+usr/lib/perl5/site_perl/5.32.1/URI/news.pm
+usr/lib/perl5/site_perl/5.32.1/URI/nntp.pm
+usr/lib/perl5/site_perl/5.32.1/URI/pop.pm
+usr/lib/perl5/site_perl/5.32.1/URI/rlogin.pm
+usr/lib/perl5/site_perl/5.32.1/URI/rsync.pm
+usr/lib/perl5/site_perl/5.32.1/URI/rtsp.pm
+usr/lib/perl5/site_perl/5.32.1/URI/rtspu.pm
+usr/lib/perl5/site_perl/5.32.1/URI/sip.pm
+usr/lib/perl5/site_perl/5.32.1/URI/sips.pm
+usr/lib/perl5/site_perl/5.32.1/URI/snews.pm
+usr/lib/perl5/site_perl/5.32.1/URI/ssh.pm
+usr/lib/perl5/site_perl/5.32.1/URI/telnet.pm
+usr/lib/perl5/site_perl/5.32.1/URI/tn3270.pm
+#usr/lib/perl5/site_perl/5.32.1/URI/urn
+usr/lib/perl5/site_perl/5.32.1/URI/urn.pm
+usr/lib/perl5/site_perl/5.32.1/URI/urn/isbn.pm
+usr/lib/perl5/site_perl/5.32.1/URI/urn/oid.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/URI
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/URI/.packlist
 #usr/share/man/man3/URI.3
 #usr/share/man/man3/URI::Escape.3
 #usr/share/man/man3/URI::Heuristic.3
index f180b5e2366951e551c93e866fd4a384abb62a33..8de359e0fca2ef8b3d3a448f41f1088b6cb1f971 100644 (file)
@@ -1,9 +1,9 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Unix
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Unix/Syslog.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog/Syslog.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog/Syslog.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Unix
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Unix/Syslog.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog/Syslog.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog/Syslog.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unix/Syslog/autosplit.ix
 #usr/share/man/man3/Unix::Syslog.3
index 596be08af2c55beaee6be3d08b6f0ca107d93841..8a389c004cdec017e930fd4e260282419ce648a8 100644 (file)
@@ -1,40 +1,40 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/Japanese_Encodings.msg
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/README
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/big5.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/euc-kr.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-2.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-3.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-4.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-5.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-7.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-8.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-9.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/windows-1250.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/windows-1252.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-euc-jp-jisx0221.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-euc-jp-unicode.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-sjis-cp932.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-sjis-jdk117.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-sjis-jisx0221.enc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-sjis-unicode.enc
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Expat.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/LWPExternEnt.pl
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Debug.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Objects.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Stream.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Subs.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Tree.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/XML
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser/Expat
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser/Expat/Expat.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser/Expat/Expat.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/Japanese_Encodings.msg
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/README
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/big5.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/euc-kr.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-2.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-3.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-4.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-5.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-7.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-8.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/iso-8859-9.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/windows-1250.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/windows-1252.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-euc-jp-jisx0221.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-euc-jp-unicode.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-sjis-cp932.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-sjis-jdk117.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-sjis-jisx0221.enc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Encodings/x-sjis-unicode.enc
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Expat.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/LWPExternEnt.pl
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Debug.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Objects.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Stream.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Subs.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/XML/Parser/Style/Tree.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/XML
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser/Expat
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser/Expat/Expat.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/XML/Parser/Expat/Expat.so
 #usr/share/man/man3/XML::Parser.3
 #usr/share/man/man3/XML::Parser::Expat.3
 #usr/share/man/man3/XML::Parser::Style::Debug.3
index f7890012667466884aeca67839b538120724190f..c26d4591ba0ffd813f30e397f4173108ffcc7cc9 100644 (file)
@@ -6,48 +6,48 @@
 #usr/bin/rustdoc
 #usr/etc/bash_completion.d
 #usr/etc/bash_completion.d/cargo
-#usr/lib/libchalk_derive-ab8da7706852c7d1.so
-#usr/lib/librustc_driver-127e9fc83f5fe8ed.so
-#usr/lib/librustc_macros-a802875ebd51e14a.so
-#usr/lib/libserde_derive-2afdd6ad3f546f4c.so
-#usr/lib/libstd-29781dd1b9640f75.so
-#usr/lib/libtest-b14ca498adaa2310.so
-#usr/lib/libtracing_attributes-4a7bcaae800b5679.so
+#usr/lib/libchalk_derive-60c7d9b67167a9f2.so
+#usr/lib/librustc_driver-d05deb70c2a826c2.so
+#usr/lib/librustc_macros-6959a92dde7c0104.so
+#usr/lib/libserde_derive-f6c55381d3d185eb.so
+#usr/lib/libstd-78700ac2ab56c3bb.so
+#usr/lib/libtest-5140f7e2ec410eb4.so
+#usr/lib/libtracing_attributes-f1588bb03dae1fd1.so
 #usr/lib/rustlib
 #usr/lib/rustlib/aarch64-unknown-linux-gnu
 #usr/lib/rustlib/aarch64-unknown-linux-gnu/bin
 #usr/lib/rustlib/aarch64-unknown-linux-gnu/lib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libaddr2line-a92724f046a57e30.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libadler-ea2a91695faa1e89.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/liballoc-d43e6e879187a608.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcfg_if-925daaf2c5cf2e92.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcompiler_builtins-8f808686cc3affc6.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore-6439d1c9dd80162d.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgetopts-77116bc06b68c794.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgimli-e455ee89e274c367.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libhashbrown-859c421200511ced.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/liblibc-068af3faa1ac144d.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libminiz_oxide-f65fb6567bf17f27.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libobject-ff7e65325e1e523d.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libpanic_abort-348df52f634c1c81.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libpanic_unwind-56aa6707cabe8000.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libproc_macro-26339a83b27f844d.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libprofiler_builtins-d032df49d914a49d.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libaddr2line-228db558b4700480.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libadler-f8e203c5b1ddf98b.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/liballoc-e22f07436e09e5de.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcfg_if-10f6c1cf2d7e4beb.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcompiler_builtins-81a70c8852741fae.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore-3c0fae3704d95225.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgetopts-bf6c53d8d87e5474.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgimli-ee0753eb4294dd52.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libhashbrown-b407e6a2057ae6e3.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/liblibc-05c1d7ca8cdec168.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libminiz_oxide-449db24deb93dd8d.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libobject-8e2621586e9e42ed.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libpanic_abort-35141bf59368e7af.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libpanic_unwind-808231bb932c6507.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libproc_macro-52033248ff2e703e.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libprofiler_builtins-f29e4894fa03fc09.rlib
 #usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc-stable_rt.asan.a
 #usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc-stable_rt.lsan.a
 #usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc-stable_rt.msan.a
 #usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc-stable_rt.tsan.a
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_demangle-8b7a51ed264de226.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-ce6bfcff7df99ce9.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_core-9308879ac90871bd.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_std-b9172e7308e6d327.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd-29781dd1b9640f75.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd-29781dd1b9640f75.so
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libterm-0211ae29ecd59761.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libtest-b14ca498adaa2310.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libtest-b14ca498adaa2310.so
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libunicode_width-4303c3a3b74b63c5.rlib
-#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libunwind-006b74d7aab2848d.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_demangle-76d8cd0fb823c519.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-4e6c971b08227805.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_core-5291610c2695652b.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_std-f823a3559cc11aa8.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd-78700ac2ab56c3bb.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd-78700ac2ab56c3bb.so
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libterm-ccf3fc5c25933c6d.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libtest-5140f7e2ec410eb4.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libtest-5140f7e2ec410eb4.so
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libunicode_width-fa2a3a9c86d3c072.rlib
+#usr/lib/rustlib/aarch64-unknown-linux-gnu/lib/libunwind-94e50e919db6c56e.rlib
 #usr/lib/rustlib/components
 #usr/lib/rustlib/etc
 #usr/lib/rustlib/etc/gdb_load_rust_pretty_printers.py
index 19ce21ca02960084b4e5217404e69ed122194b56..a3476d9a5d1fbe3a009378385777ea3692d33baa 100644 (file)
@@ -7,7 +7,7 @@ usr/bin/setfacl
 #usr/lib/libacl.la
 usr/lib/libacl.so
 usr/lib/libacl.so.1
-usr/lib/libacl.so.1.1.2253
+usr/lib/libacl.so.1.1.2301
 #usr/lib/pkgconfig/libacl.pc
 #usr/share/doc/acl
 #usr/share/doc/acl/CHANGES
@@ -17,11 +17,7 @@ usr/lib/libacl.so.1.1.2253
 #usr/share/doc/acl/extensions.txt
 #usr/share/doc/acl/libacl.txt
 #usr/share/locale/de/LC_MESSAGES/acl.mo
-#usr/share/locale/en@boldquot
-#usr/share/locale/en@boldquot/LC_MESSAGES
 #usr/share/locale/en@boldquot/LC_MESSAGES/acl.mo
-#usr/share/locale/en@quot
-#usr/share/locale/en@quot/LC_MESSAGES
 #usr/share/locale/en@quot/LC_MESSAGES/acl.mo
 #usr/share/locale/es/LC_MESSAGES/acl.mo
 #usr/share/locale/fr/LC_MESSAGES/acl.mo
index 58de53c1c04dee6c98c5d1bc3d189914dcdedd35..ffe8318ab7f8d2e479c8862109e73390586fe512 100644 (file)
@@ -6,43 +6,43 @@
 #usr/bin/rustdoc
 #usr/etc/bash_completion.d
 #usr/etc/bash_completion.d/cargo
-#usr/lib/libchalk_derive-6802dacd9eb319eb.so
-#usr/lib/librustc_driver-31339ba3cbfbe07c.so
-#usr/lib/librustc_macros-efe4024eb71bda81.so
-#usr/lib/libserde_derive-4bb6eda35aa7c292.so
-#usr/lib/libstd-aaa37882fc02daba.so
-#usr/lib/libtest-203e0eef4f2e4c21.so
-#usr/lib/libtracing_attributes-866cd8e3dbccf66e.so
+#usr/lib/libchalk_derive-60e6609799a3665c.so
+#usr/lib/librustc_driver-d9db5d9f5168f26a.so
+#usr/lib/librustc_macros-5adaaf63fffb4acc.so
+#usr/lib/libserde_derive-7dfe7ef76bb583c0.so
+#usr/lib/libstd-08ee4762acc7bd6c.so
+#usr/lib/libtest-ab3fca57c5ff3f13.so
+#usr/lib/libtracing_attributes-119e673def241fe0.so
 #usr/lib/rustlib
 #usr/lib/rustlib/arm-unknown-linux-gnueabi
 #usr/lib/rustlib/arm-unknown-linux-gnueabi/bin
 #usr/lib/rustlib/arm-unknown-linux-gnueabi/lib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libaddr2line-bfe9f5d269928db7.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libadler-f6b48b65c9174419.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/liballoc-195b05f9d78e6b09.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libcfg_if-63b2ba5be1a54244.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libcompiler_builtins-1a50a82804be3743.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libcore-94f591d6304be447.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libgetopts-86bdb8605ffe80e0.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libgimli-c2f187b0ce2c186d.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libhashbrown-c87e68c05b7e6ae7.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/liblibc-1929674575942af9.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libminiz_oxide-ac4274ba34088b7e.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libobject-19f8bb4b95ae4e74.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libpanic_abort-9709b5dd45c87a35.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libpanic_unwind-802b485553963e09.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libproc_macro-0dc0b2089ea858e8.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/librustc_demangle-8a1ce41bd5ebba6e.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/librustc_std_workspace_alloc-836188e641bc6c19.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/librustc_std_workspace_core-270987e744c299b8.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/librustc_std_workspace_std-97769c80f4f04c6b.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libstd-aaa37882fc02daba.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libstd-aaa37882fc02daba.so
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libterm-4f211dfe3c3efca4.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libtest-203e0eef4f2e4c21.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libtest-203e0eef4f2e4c21.so
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libunicode_width-22a05ba07ce727e9.rlib
-#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libunwind-0ee590c063dbf7c8.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libaddr2line-a93e1e1d8fc43c22.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libadler-b353a1d292e49fc9.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/liballoc-f19953fa31c5e53c.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libcfg_if-35e2f271631dab8b.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libcompiler_builtins-ddbc6586d7a17833.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libcore-14499a277447f4f6.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libgetopts-a643ba6ad20cd7fc.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libgimli-cc1b705e5055e3a6.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libhashbrown-081221f480fdcb96.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/liblibc-15548400be905d1f.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libminiz_oxide-d5d80e62031eaec6.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libobject-f538e004b85c6b56.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libpanic_abort-9719b08ba8e4a62e.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libpanic_unwind-67eb8cc728beb84e.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libproc_macro-6d2282bdaf511097.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/librustc_demangle-138ccc5a7c1205f8.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/librustc_std_workspace_alloc-48aee1e7bcd00a8b.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/librustc_std_workspace_core-d7f7aed366972d31.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/librustc_std_workspace_std-36a49e2bcef28653.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libstd-08ee4762acc7bd6c.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libstd-08ee4762acc7bd6c.so
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libterm-cde6bfa2a44e2ae0.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libtest-ab3fca57c5ff3f13.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libtest-ab3fca57c5ff3f13.so
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libunicode_width-070cf192d55ba738.rlib
+#usr/lib/rustlib/arm-unknown-linux-gnueabi/lib/libunwind-0dfac9185d575a7e.rlib
 #usr/lib/rustlib/components
 #usr/lib/rustlib/etc
 #usr/lib/rustlib/etc/gdb_load_rust_pretty_printers.py
index ba3ed7db7513ef44f682bef2087df729911fa4b6..536cfb9fc35a5673c8413badf85666e33a95e1ed 100644 (file)
@@ -11,7 +11,7 @@ usr/bin/setfattr
 #usr/lib/libattr.la
 #usr/lib/libattr.so
 usr/lib/libattr.so.1
-usr/lib/libattr.so.1.1.2448
+usr/lib/libattr.so.1.1.2501
 #usr/lib/pkgconfig/libattr.pc
 #usr/share/doc/attr
 #usr/share/doc/attr/CHANGES
index c3235bb8ff702939388b3f49319f052116b1a08c..7e1ecd48fe5936ce139c82f4bb3cf5d32b8619d0 100644 (file)
@@ -273,7 +273,7 @@ usr/lib/libbind9.so.161.0.4
 #usr/lib/libdns.la
 #usr/lib/libdns.so
 usr/lib/libdns.so.1113
-usr/lib/libdns.so.1113.0.1
+usr/lib/libdns.so.1113.0.2
 #usr/lib/libisc.la
 #usr/lib/libisc.so
 usr/lib/libisc.so.1107
index f6ad610d40746665d53abc6d51be2d10f25e336f..9a8e88148f67376b0849f7a91ba6b4b882473f6b 100644 (file)
@@ -2,7 +2,7 @@ bin/bunzip2
 bin/bzcat
 bin/bzip2
 lib/libbz2.so.1.0
-lib/libbz2.so.1.0.6
+lib/libbz2.so.1.0.8
 usr/bin/bunzip2
 usr/bin/bzcat
 usr/bin/bzcmp
index 0779fcfe1be771b2bb3950b531acbee1a6d1a348..55e16d813f067a7292e021f9f3df3bf6388926fe 100644 (file)
@@ -1,6 +1,5 @@
 #bin/ed
 #bin/red
-#usr/info
-#usr/info/ed.info
-#usr/man/man1/ed.1
-#usr/man/man1/red.1
+#usr/share/info/ed.info
+#usr/share/man/man1/ed.1
+#usr/share/man/man1/red.1
index f9e1e8ae4029c8d39265310bfb1da27d03add14f..61778f408b480a723636dea405645e0363606128 100644 (file)
@@ -1,7 +1,9 @@
 usr/bin/awk
 usr/bin/gawk
-#usr/bin/gawk-4.1.4
-#usr/bin/igawk
+usr/bin/gawk-5.1.0
+usr/etc/profile.d
+usr/etc/profile.d/gawk.csh
+usr/etc/profile.d/gawk.sh
 #usr/include/gawkapi.h
 #usr/lib/awk
 #usr/lib/awk/grcat
@@ -11,13 +13,13 @@ usr/lib/gawk/filefuncs.so
 usr/lib/gawk/fnmatch.so
 usr/lib/gawk/fork.so
 usr/lib/gawk/inplace.so
+usr/lib/gawk/intdiv.so
 usr/lib/gawk/ordchr.so
 usr/lib/gawk/readdir.so
 usr/lib/gawk/readfile.so
 usr/lib/gawk/revoutput.so
 usr/lib/gawk/revtwoway.so
 usr/lib/gawk/rwarray.so
-usr/lib/gawk/testext.so
 usr/lib/gawk/time.so
 #usr/share/awk
 #usr/share/awk/assert.awk
@@ -28,10 +30,13 @@ usr/lib/gawk/time.so
 #usr/share/awk/getopt.awk
 #usr/share/awk/gettime.awk
 #usr/share/awk/group.awk
+#usr/share/awk/have_mpfr.awk
 #usr/share/awk/inplace.awk
+#usr/share/awk/intdiv0.awk
 #usr/share/awk/join.awk
 #usr/share/awk/libintl.awk
 #usr/share/awk/noassign.awk
+#usr/share/awk/ns_passwd.awk
 #usr/share/awk/ord.awk
 #usr/share/awk/passwd.awk
 #usr/share/awk/processarray.awk
@@ -46,8 +51,8 @@ usr/lib/gawk/time.so
 #usr/share/awk/zerofile.awk
 #usr/share/info/gawk.info
 #usr/share/info/gawkinet.info
+#usr/share/info/gawkworkflow.info
 #usr/share/man/man1/gawk.1
-#usr/share/man/man1/igawk.1
 #usr/share/man/man3/filefuncs.3am
 #usr/share/man/man3/fnmatch.3am
 #usr/share/man/man3/fork.3am
index 359b8f79e83ed12c677ad9d99195887363393b46..04728caa9cedaa694278fd8cf2a1aaaa18e1d66e 100644 (file)
@@ -22,6 +22,11 @@ usr/bin/gettext.sh
 #usr/bin/xgettext
 #usr/include/autosprintf.h
 #usr/include/gettext-po.h
+#usr/include/textstyle
+#usr/include/textstyle.h
+#usr/include/textstyle/stdbool.h
+#usr/include/textstyle/version.h
+#usr/include/textstyle/woe32dll.h
 #usr/lib/gettext
 #usr/lib/gettext/cldr-plurals
 #usr/lib/gettext/hostname
@@ -33,50 +38,33 @@ usr/bin/gettext.sh
 #usr/lib/libasprintf.so
 usr/lib/libasprintf.so.0
 usr/lib/libasprintf.so.0.0.0
-usr/lib/libgettextlib-0.19.8.1.so
+usr/lib/libgettextlib-0.21.so
 #usr/lib/libgettextlib.la
 #usr/lib/libgettextlib.so
 #usr/lib/libgettextpo.a
 #usr/lib/libgettextpo.la
 #usr/lib/libgettextpo.so
 usr/lib/libgettextpo.so.0
-usr/lib/libgettextpo.so.0.5.4
-usr/lib/libgettextsrc-0.19.8.1.so
+usr/lib/libgettextpo.so.0.5.7
+usr/lib/libgettextsrc-0.21.so
 #usr/lib/libgettextsrc.la
 usr/lib/libgettextsrc.so
+#usr/lib/libtextstyle.a
+#usr/lib/libtextstyle.la
+#usr/lib/libtextstyle.so
+usr/lib/libtextstyle.so.0
+usr/lib/libtextstyle.so.0.1.1
 usr/lib/preloadable_libintl.so
-#usr/share/aclocal/codeset.m4
-#usr/share/aclocal/extern-inline.m4
-#usr/share/aclocal/fcntl-o.m4
 #usr/share/aclocal/gettext.m4
-#usr/share/aclocal/glibc2.m4
-#usr/share/aclocal/glibc21.m4
+#usr/share/aclocal/host-cpu-c-abi.m4
 #usr/share/aclocal/iconv.m4
-#usr/share/aclocal/intdiv0.m4
-#usr/share/aclocal/intl.m4
-#usr/share/aclocal/intldir.m4
 #usr/share/aclocal/intlmacosx.m4
-#usr/share/aclocal/intmax.m4
-#usr/share/aclocal/inttypes-pri.m4
-#usr/share/aclocal/inttypes_h.m4
-#usr/share/aclocal/lcmessage.m4
 #usr/share/aclocal/lib-ld.m4
 #usr/share/aclocal/lib-link.m4
 #usr/share/aclocal/lib-prefix.m4
-#usr/share/aclocal/lock.m4
-#usr/share/aclocal/longlong.m4
 #usr/share/aclocal/nls.m4
 #usr/share/aclocal/po.m4
-#usr/share/aclocal/printf-posix.m4
 #usr/share/aclocal/progtest.m4
-#usr/share/aclocal/size_max.m4
-#usr/share/aclocal/stdint_h.m4
-#usr/share/aclocal/threadlib.m4
-#usr/share/aclocal/uintmax_t.m4
-#usr/share/aclocal/visibility.m4
-#usr/share/aclocal/wchar_t.m4
-#usr/share/aclocal/wint_t.m4
-#usr/share/aclocal/xsize.m4
 #usr/share/doc/gettext
 #usr/share/doc/gettext/FAQ.html
 #usr/share/doc/gettext/autopoint.1.html
@@ -98,7 +86,6 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/build-aux/csharpexec-test.exe
 #usr/share/doc/gettext/examples/build-aux/csharpexec.m4
 #usr/share/doc/gettext/examples/build-aux/csharpexec.sh.in
-#usr/share/doc/gettext/examples/build-aux/gcj.m4
 #usr/share/doc/gettext/examples/build-aux/javacomp.m4
 #usr/share/doc/gettext/examples/build-aux/javacomp.sh.in
 #usr/share/doc/gettext/examples/build-aux/javaexec.m4
@@ -148,6 +135,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/mt.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/nb.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/nl.po
+#usr/share/doc/gettext/examples/hello-c++-gnome/po/nn.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/pl.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/pt.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/pt_BR.po
@@ -155,8 +143,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/ru.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/sk.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/sl.po
+#usr/share/doc/gettext/examples/hello-c++-gnome/po/sq.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/sr.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/sv.po
+#usr/share/doc/gettext/examples/hello-c++-gnome/po/ta.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/tr.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/uk.po
 #usr/share/doc/gettext/examples/hello-c++-gnome/po/vi.po
@@ -229,6 +219,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++-kde/po/mt.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/nb.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/nl.po
+#usr/share/doc/gettext/examples/hello-c++-kde/po/nn.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/pl.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/pt.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/pt_BR.po
@@ -236,8 +227,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++-kde/po/ru.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/sk.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/sl.po
+#usr/share/doc/gettext/examples/hello-c++-kde/po/sq.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/sr.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/sv.po
+#usr/share/doc/gettext/examples/hello-c++-kde/po/ta.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/tr.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/uk.po
 #usr/share/doc/gettext/examples/hello-c++-kde/po/vi.po
@@ -283,6 +276,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++-qt/po/mt.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/nb.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/nl.po
+#usr/share/doc/gettext/examples/hello-c++-qt/po/nn.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/pl.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/pt.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/pt_BR.po
@@ -290,8 +284,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++-qt/po/ru.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/sk.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/sl.po
+#usr/share/doc/gettext/examples/hello-c++-qt/po/sq.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/sr.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/sv.po
+#usr/share/doc/gettext/examples/hello-c++-qt/po/ta.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/tr.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/uk.po
 #usr/share/doc/gettext/examples/hello-c++-qt/po/vi.po
@@ -336,6 +332,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/mt.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/nb.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/nl.po
+#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/nn.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/pl.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/pt.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/pt_BR.po
@@ -343,8 +340,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ru.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sk.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sl.po
+#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sq.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sr.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sv.po
+#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ta.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/tr.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/uk.po
 #usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/vi.po
@@ -388,6 +387,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++/po/mt.po
 #usr/share/doc/gettext/examples/hello-c++/po/nb.po
 #usr/share/doc/gettext/examples/hello-c++/po/nl.po
+#usr/share/doc/gettext/examples/hello-c++/po/nn.po
 #usr/share/doc/gettext/examples/hello-c++/po/pl.po
 #usr/share/doc/gettext/examples/hello-c++/po/pt.po
 #usr/share/doc/gettext/examples/hello-c++/po/pt_BR.po
@@ -395,8 +395,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c++/po/ru.po
 #usr/share/doc/gettext/examples/hello-c++/po/sk.po
 #usr/share/doc/gettext/examples/hello-c++/po/sl.po
+#usr/share/doc/gettext/examples/hello-c++/po/sq.po
 #usr/share/doc/gettext/examples/hello-c++/po/sr.po
 #usr/share/doc/gettext/examples/hello-c++/po/sv.po
+#usr/share/doc/gettext/examples/hello-c++/po/ta.po
 #usr/share/doc/gettext/examples/hello-c++/po/tr.po
 #usr/share/doc/gettext/examples/hello-c++/po/uk.po
 #usr/share/doc/gettext/examples/hello-c++/po/vi.po
@@ -444,6 +446,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c-gnome/po/mt.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/nb.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/nl.po
+#usr/share/doc/gettext/examples/hello-c-gnome/po/nn.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/pl.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/pt.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/pt_BR.po
@@ -451,8 +454,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c-gnome/po/ru.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/sk.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/sl.po
+#usr/share/doc/gettext/examples/hello-c-gnome/po/sq.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/sr.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/sv.po
+#usr/share/doc/gettext/examples/hello-c-gnome/po/ta.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/tr.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/uk.po
 #usr/share/doc/gettext/examples/hello-c-gnome/po/vi.po
@@ -501,6 +506,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/mt.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/nb.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/nl.po
+#usr/share/doc/gettext/examples/hello-c-gnome3/po/nn.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/pl.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/pt.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/pt_BR.po
@@ -508,8 +514,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/ru.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/sk.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/sl.po
+#usr/share/doc/gettext/examples/hello-c-gnome3/po/sq.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/sr.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/sv.po
+#usr/share/doc/gettext/examples/hello-c-gnome3/po/ta.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/tr.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/uk.po
 #usr/share/doc/gettext/examples/hello-c-gnome3/po/vi.po
@@ -553,6 +561,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c/po/mt.po
 #usr/share/doc/gettext/examples/hello-c/po/nb.po
 #usr/share/doc/gettext/examples/hello-c/po/nl.po
+#usr/share/doc/gettext/examples/hello-c/po/nn.po
 #usr/share/doc/gettext/examples/hello-c/po/pl.po
 #usr/share/doc/gettext/examples/hello-c/po/pt.po
 #usr/share/doc/gettext/examples/hello-c/po/pt_BR.po
@@ -560,8 +569,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-c/po/ru.po
 #usr/share/doc/gettext/examples/hello-c/po/sk.po
 #usr/share/doc/gettext/examples/hello-c/po/sl.po
+#usr/share/doc/gettext/examples/hello-c/po/sq.po
 #usr/share/doc/gettext/examples/hello-c/po/sr.po
 #usr/share/doc/gettext/examples/hello-c/po/sv.po
+#usr/share/doc/gettext/examples/hello-c/po/ta.po
 #usr/share/doc/gettext/examples/hello-c/po/tr.po
 #usr/share/doc/gettext/examples/hello-c/po/uk.po
 #usr/share/doc/gettext/examples/hello-c/po/vi.po
@@ -605,6 +616,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-clisp/po/mt.po
 #usr/share/doc/gettext/examples/hello-clisp/po/nb.po
 #usr/share/doc/gettext/examples/hello-clisp/po/nl.po
+#usr/share/doc/gettext/examples/hello-clisp/po/nn.po
 #usr/share/doc/gettext/examples/hello-clisp/po/pl.po
 #usr/share/doc/gettext/examples/hello-clisp/po/pt.po
 #usr/share/doc/gettext/examples/hello-clisp/po/pt_BR.po
@@ -612,8 +624,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-clisp/po/ru.po
 #usr/share/doc/gettext/examples/hello-clisp/po/sk.po
 #usr/share/doc/gettext/examples/hello-clisp/po/sl.po
+#usr/share/doc/gettext/examples/hello-clisp/po/sq.po
 #usr/share/doc/gettext/examples/hello-clisp/po/sr.po
 #usr/share/doc/gettext/examples/hello-clisp/po/sv.po
+#usr/share/doc/gettext/examples/hello-clisp/po/ta.po
 #usr/share/doc/gettext/examples/hello-clisp/po/tr.po
 #usr/share/doc/gettext/examples/hello-clisp/po/uk.po
 #usr/share/doc/gettext/examples/hello-clisp/po/vi.po
@@ -622,7 +636,6 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-clisp/po/zh_TW.po
 #usr/share/doc/gettext/examples/hello-csharp
 #usr/share/doc/gettext/examples/hello-csharp-forms
-#usr/share/doc/gettext/examples/hello-csharp-forms/BUGS
 #usr/share/doc/gettext/examples/hello-csharp-forms/INSTALL
 #usr/share/doc/gettext/examples/hello-csharp-forms/Makefile.am
 #usr/share/doc/gettext/examples/hello-csharp-forms/README
@@ -660,6 +673,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/mt.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/nb.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/nl.po
+#usr/share/doc/gettext/examples/hello-csharp-forms/po/nn.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/pl.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/pt.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/pt_BR.po
@@ -667,8 +681,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/ru.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/sk.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/sl.po
+#usr/share/doc/gettext/examples/hello-csharp-forms/po/sq.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/sr.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/sv.po
+#usr/share/doc/gettext/examples/hello-csharp-forms/po/ta.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/tr.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/uk.po
 #usr/share/doc/gettext/examples/hello-csharp-forms/po/vi.po
@@ -711,6 +727,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-csharp/po/mt.po
 #usr/share/doc/gettext/examples/hello-csharp/po/nb.po
 #usr/share/doc/gettext/examples/hello-csharp/po/nl.po
+#usr/share/doc/gettext/examples/hello-csharp/po/nn.po
 #usr/share/doc/gettext/examples/hello-csharp/po/pl.po
 #usr/share/doc/gettext/examples/hello-csharp/po/pt.po
 #usr/share/doc/gettext/examples/hello-csharp/po/pt_BR.po
@@ -718,8 +735,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-csharp/po/ru.po
 #usr/share/doc/gettext/examples/hello-csharp/po/sk.po
 #usr/share/doc/gettext/examples/hello-csharp/po/sl.po
+#usr/share/doc/gettext/examples/hello-csharp/po/sq.po
 #usr/share/doc/gettext/examples/hello-csharp/po/sr.po
 #usr/share/doc/gettext/examples/hello-csharp/po/sv.po
+#usr/share/doc/gettext/examples/hello-csharp/po/ta.po
 #usr/share/doc/gettext/examples/hello-csharp/po/tr.po
 #usr/share/doc/gettext/examples/hello-csharp/po/uk.po
 #usr/share/doc/gettext/examples/hello-csharp/po/vi.po
@@ -763,6 +782,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-gawk/po/mt.po
 #usr/share/doc/gettext/examples/hello-gawk/po/nb.po
 #usr/share/doc/gettext/examples/hello-gawk/po/nl.po
+#usr/share/doc/gettext/examples/hello-gawk/po/nn.po
 #usr/share/doc/gettext/examples/hello-gawk/po/pl.po
 #usr/share/doc/gettext/examples/hello-gawk/po/pt.po
 #usr/share/doc/gettext/examples/hello-gawk/po/pt_BR.po
@@ -770,8 +790,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-gawk/po/ru.po
 #usr/share/doc/gettext/examples/hello-gawk/po/sk.po
 #usr/share/doc/gettext/examples/hello-gawk/po/sl.po
+#usr/share/doc/gettext/examples/hello-gawk/po/sq.po
 #usr/share/doc/gettext/examples/hello-gawk/po/sr.po
 #usr/share/doc/gettext/examples/hello-gawk/po/sv.po
+#usr/share/doc/gettext/examples/hello-gawk/po/ta.po
 #usr/share/doc/gettext/examples/hello-gawk/po/tr.po
 #usr/share/doc/gettext/examples/hello-gawk/po/uk.po
 #usr/share/doc/gettext/examples/hello-gawk/po/vi.po
@@ -815,6 +837,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-guile/po/mt.po
 #usr/share/doc/gettext/examples/hello-guile/po/nb.po
 #usr/share/doc/gettext/examples/hello-guile/po/nl.po
+#usr/share/doc/gettext/examples/hello-guile/po/nn.po
 #usr/share/doc/gettext/examples/hello-guile/po/pl.po
 #usr/share/doc/gettext/examples/hello-guile/po/pt.po
 #usr/share/doc/gettext/examples/hello-guile/po/pt_BR.po
@@ -822,8 +845,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-guile/po/ru.po
 #usr/share/doc/gettext/examples/hello-guile/po/sk.po
 #usr/share/doc/gettext/examples/hello-guile/po/sl.po
+#usr/share/doc/gettext/examples/hello-guile/po/sq.po
 #usr/share/doc/gettext/examples/hello-guile/po/sr.po
 #usr/share/doc/gettext/examples/hello-guile/po/sv.po
+#usr/share/doc/gettext/examples/hello-guile/po/ta.po
 #usr/share/doc/gettext/examples/hello-guile/po/tr.po
 #usr/share/doc/gettext/examples/hello-guile/po/uk.po
 #usr/share/doc/gettext/examples/hello-guile/po/vi.po
@@ -871,6 +896,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-java-awt/po/mt.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/nb.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/nl.po
+#usr/share/doc/gettext/examples/hello-java-awt/po/nn.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/pl.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/pt.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/pt_BR.po
@@ -878,8 +904,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-java-awt/po/ru.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/sk.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/sl.po
+#usr/share/doc/gettext/examples/hello-java-awt/po/sq.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/sr.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/sv.po
+#usr/share/doc/gettext/examples/hello-java-awt/po/ta.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/tr.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/uk.po
 #usr/share/doc/gettext/examples/hello-java-awt/po/vi.po
@@ -926,6 +954,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/mt.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/nb.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/nl.po
+#usr/share/doc/gettext/examples/hello-java-qtjambi/po/nn.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/pl.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/pt.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/pt_BR.po
@@ -933,8 +962,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/ru.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/sk.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/sl.po
+#usr/share/doc/gettext/examples/hello-java-qtjambi/po/sq.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/sr.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/sv.po
+#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ta.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/tr.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/uk.po
 #usr/share/doc/gettext/examples/hello-java-qtjambi/po/vi.po
@@ -981,6 +1012,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-java-swing/po/mt.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/nb.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/nl.po
+#usr/share/doc/gettext/examples/hello-java-swing/po/nn.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/pl.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/pt.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/pt_BR.po
@@ -988,8 +1020,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-java-swing/po/ru.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/sk.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/sl.po
+#usr/share/doc/gettext/examples/hello-java-swing/po/sq.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/sr.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/sv.po
+#usr/share/doc/gettext/examples/hello-java-swing/po/ta.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/tr.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/uk.po
 #usr/share/doc/gettext/examples/hello-java-swing/po/vi.po
@@ -1032,6 +1066,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-java/po/mt.po
 #usr/share/doc/gettext/examples/hello-java/po/nb.po
 #usr/share/doc/gettext/examples/hello-java/po/nl.po
+#usr/share/doc/gettext/examples/hello-java/po/nn.po
 #usr/share/doc/gettext/examples/hello-java/po/pl.po
 #usr/share/doc/gettext/examples/hello-java/po/pt.po
 #usr/share/doc/gettext/examples/hello-java/po/pt_BR.po
@@ -1039,8 +1074,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-java/po/ru.po
 #usr/share/doc/gettext/examples/hello-java/po/sk.po
 #usr/share/doc/gettext/examples/hello-java/po/sl.po
+#usr/share/doc/gettext/examples/hello-java/po/sq.po
 #usr/share/doc/gettext/examples/hello-java/po/sr.po
 #usr/share/doc/gettext/examples/hello-java/po/sv.po
+#usr/share/doc/gettext/examples/hello-java/po/ta.po
 #usr/share/doc/gettext/examples/hello-java/po/tr.po
 #usr/share/doc/gettext/examples/hello-java/po/uk.po
 #usr/share/doc/gettext/examples/hello-java/po/vi.po
@@ -1084,6 +1121,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-librep/po/mt.po
 #usr/share/doc/gettext/examples/hello-librep/po/nb.po
 #usr/share/doc/gettext/examples/hello-librep/po/nl.po
+#usr/share/doc/gettext/examples/hello-librep/po/nn.po
 #usr/share/doc/gettext/examples/hello-librep/po/pl.po
 #usr/share/doc/gettext/examples/hello-librep/po/pt.po
 #usr/share/doc/gettext/examples/hello-librep/po/pt_BR.po
@@ -1091,8 +1129,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-librep/po/ru.po
 #usr/share/doc/gettext/examples/hello-librep/po/sk.po
 #usr/share/doc/gettext/examples/hello-librep/po/sl.po
+#usr/share/doc/gettext/examples/hello-librep/po/sq.po
 #usr/share/doc/gettext/examples/hello-librep/po/sr.po
 #usr/share/doc/gettext/examples/hello-librep/po/sv.po
+#usr/share/doc/gettext/examples/hello-librep/po/ta.po
 #usr/share/doc/gettext/examples/hello-librep/po/tr.po
 #usr/share/doc/gettext/examples/hello-librep/po/uk.po
 #usr/share/doc/gettext/examples/hello-librep/po/vi.po
@@ -1141,6 +1181,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/mt.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/nb.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/nl.po
+#usr/share/doc/gettext/examples/hello-objc-gnome/po/nn.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/pl.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/pt.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/pt_BR.po
@@ -1148,8 +1189,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/ru.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/sk.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/sl.po
+#usr/share/doc/gettext/examples/hello-objc-gnome/po/sq.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/sr.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/sv.po
+#usr/share/doc/gettext/examples/hello-objc-gnome/po/ta.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/tr.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/uk.po
 #usr/share/doc/gettext/examples/hello-objc-gnome/po/vi.po
@@ -1196,6 +1239,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/mt.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/nb.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/nl.po
+#usr/share/doc/gettext/examples/hello-objc-gnustep/po/nn.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/pl.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/pt.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/pt_BR.po
@@ -1203,8 +1247,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ru.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sk.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sl.po
+#usr/share/doc/gettext/examples/hello-objc-gnustep/po/sq.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sr.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sv.po
+#usr/share/doc/gettext/examples/hello-objc-gnustep/po/ta.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/tr.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/uk.po
 #usr/share/doc/gettext/examples/hello-objc-gnustep/po/vi.po
@@ -1248,6 +1294,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-objc/po/mt.po
 #usr/share/doc/gettext/examples/hello-objc/po/nb.po
 #usr/share/doc/gettext/examples/hello-objc/po/nl.po
+#usr/share/doc/gettext/examples/hello-objc/po/nn.po
 #usr/share/doc/gettext/examples/hello-objc/po/pl.po
 #usr/share/doc/gettext/examples/hello-objc/po/pt.po
 #usr/share/doc/gettext/examples/hello-objc/po/pt_BR.po
@@ -1255,8 +1302,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-objc/po/ru.po
 #usr/share/doc/gettext/examples/hello-objc/po/sk.po
 #usr/share/doc/gettext/examples/hello-objc/po/sl.po
+#usr/share/doc/gettext/examples/hello-objc/po/sq.po
 #usr/share/doc/gettext/examples/hello-objc/po/sr.po
 #usr/share/doc/gettext/examples/hello-objc/po/sv.po
+#usr/share/doc/gettext/examples/hello-objc/po/ta.po
 #usr/share/doc/gettext/examples/hello-objc/po/tr.po
 #usr/share/doc/gettext/examples/hello-objc/po/uk.po
 #usr/share/doc/gettext/examples/hello-objc/po/vi.po
@@ -1270,7 +1319,6 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-pascal/autogen.sh
 #usr/share/doc/gettext/examples/hello-pascal/configure.ac
 #usr/share/doc/gettext/examples/hello-pascal/hello.pas
-#usr/share/doc/gettext/examples/hello-pascal/hello.rst
 #usr/share/doc/gettext/examples/hello-pascal/m4
 #usr/share/doc/gettext/examples/hello-pascal/m4/Makefile.am
 #usr/share/doc/gettext/examples/hello-pascal/po
@@ -1301,6 +1349,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-pascal/po/mt.po
 #usr/share/doc/gettext/examples/hello-pascal/po/nb.po
 #usr/share/doc/gettext/examples/hello-pascal/po/nl.po
+#usr/share/doc/gettext/examples/hello-pascal/po/nn.po
 #usr/share/doc/gettext/examples/hello-pascal/po/pl.po
 #usr/share/doc/gettext/examples/hello-pascal/po/pt.po
 #usr/share/doc/gettext/examples/hello-pascal/po/pt_BR.po
@@ -1308,8 +1357,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-pascal/po/ru.po
 #usr/share/doc/gettext/examples/hello-pascal/po/sk.po
 #usr/share/doc/gettext/examples/hello-pascal/po/sl.po
+#usr/share/doc/gettext/examples/hello-pascal/po/sq.po
 #usr/share/doc/gettext/examples/hello-pascal/po/sr.po
 #usr/share/doc/gettext/examples/hello-pascal/po/sv.po
+#usr/share/doc/gettext/examples/hello-pascal/po/ta.po
 #usr/share/doc/gettext/examples/hello-pascal/po/tr.po
 #usr/share/doc/gettext/examples/hello-pascal/po/uk.po
 #usr/share/doc/gettext/examples/hello-pascal/po/vi.po
@@ -1354,6 +1405,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-perl/po/mt.po
 #usr/share/doc/gettext/examples/hello-perl/po/nb.po
 #usr/share/doc/gettext/examples/hello-perl/po/nl.po
+#usr/share/doc/gettext/examples/hello-perl/po/nn.po
 #usr/share/doc/gettext/examples/hello-perl/po/pl.po
 #usr/share/doc/gettext/examples/hello-perl/po/pt.po
 #usr/share/doc/gettext/examples/hello-perl/po/pt_BR.po
@@ -1361,8 +1413,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-perl/po/ru.po
 #usr/share/doc/gettext/examples/hello-perl/po/sk.po
 #usr/share/doc/gettext/examples/hello-perl/po/sl.po
+#usr/share/doc/gettext/examples/hello-perl/po/sq.po
 #usr/share/doc/gettext/examples/hello-perl/po/sr.po
 #usr/share/doc/gettext/examples/hello-perl/po/sv.po
+#usr/share/doc/gettext/examples/hello-perl/po/ta.po
 #usr/share/doc/gettext/examples/hello-perl/po/tr.po
 #usr/share/doc/gettext/examples/hello-perl/po/uk.po
 #usr/share/doc/gettext/examples/hello-perl/po/vi.po
@@ -1407,6 +1461,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-php/po/mt.po
 #usr/share/doc/gettext/examples/hello-php/po/nb.po
 #usr/share/doc/gettext/examples/hello-php/po/nl.po
+#usr/share/doc/gettext/examples/hello-php/po/nn.po
 #usr/share/doc/gettext/examples/hello-php/po/pl.po
 #usr/share/doc/gettext/examples/hello-php/po/pt.po
 #usr/share/doc/gettext/examples/hello-php/po/pt_BR.po
@@ -1414,8 +1469,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-php/po/ru.po
 #usr/share/doc/gettext/examples/hello-php/po/sk.po
 #usr/share/doc/gettext/examples/hello-php/po/sl.po
+#usr/share/doc/gettext/examples/hello-php/po/sq.po
 #usr/share/doc/gettext/examples/hello-php/po/sr.po
 #usr/share/doc/gettext/examples/hello-php/po/sv.po
+#usr/share/doc/gettext/examples/hello-php/po/ta.po
 #usr/share/doc/gettext/examples/hello-php/po/tr.po
 #usr/share/doc/gettext/examples/hello-php/po/uk.po
 #usr/share/doc/gettext/examples/hello-php/po/vi.po
@@ -1459,6 +1516,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-python/po/mt.po
 #usr/share/doc/gettext/examples/hello-python/po/nb.po
 #usr/share/doc/gettext/examples/hello-python/po/nl.po
+#usr/share/doc/gettext/examples/hello-python/po/nn.po
 #usr/share/doc/gettext/examples/hello-python/po/pl.po
 #usr/share/doc/gettext/examples/hello-python/po/pt.po
 #usr/share/doc/gettext/examples/hello-python/po/pt_BR.po
@@ -1466,8 +1524,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-python/po/ru.po
 #usr/share/doc/gettext/examples/hello-python/po/sk.po
 #usr/share/doc/gettext/examples/hello-python/po/sl.po
+#usr/share/doc/gettext/examples/hello-python/po/sq.po
 #usr/share/doc/gettext/examples/hello-python/po/sr.po
 #usr/share/doc/gettext/examples/hello-python/po/sv.po
+#usr/share/doc/gettext/examples/hello-python/po/ta.po
 #usr/share/doc/gettext/examples/hello-python/po/tr.po
 #usr/share/doc/gettext/examples/hello-python/po/uk.po
 #usr/share/doc/gettext/examples/hello-python/po/vi.po
@@ -1511,6 +1571,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-sh/po/mt.po
 #usr/share/doc/gettext/examples/hello-sh/po/nb.po
 #usr/share/doc/gettext/examples/hello-sh/po/nl.po
+#usr/share/doc/gettext/examples/hello-sh/po/nn.po
 #usr/share/doc/gettext/examples/hello-sh/po/pl.po
 #usr/share/doc/gettext/examples/hello-sh/po/pt.po
 #usr/share/doc/gettext/examples/hello-sh/po/pt_BR.po
@@ -1518,8 +1579,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-sh/po/ru.po
 #usr/share/doc/gettext/examples/hello-sh/po/sk.po
 #usr/share/doc/gettext/examples/hello-sh/po/sl.po
+#usr/share/doc/gettext/examples/hello-sh/po/sq.po
 #usr/share/doc/gettext/examples/hello-sh/po/sr.po
 #usr/share/doc/gettext/examples/hello-sh/po/sv.po
+#usr/share/doc/gettext/examples/hello-sh/po/ta.po
 #usr/share/doc/gettext/examples/hello-sh/po/tr.po
 #usr/share/doc/gettext/examples/hello-sh/po/uk.po
 #usr/share/doc/gettext/examples/hello-sh/po/vi.po
@@ -1563,6 +1626,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-smalltalk/po/mt.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/nb.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/nl.po
+#usr/share/doc/gettext/examples/hello-smalltalk/po/nn.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/pl.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/pt.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/pt_BR.po
@@ -1570,8 +1634,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-smalltalk/po/ru.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/sk.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/sl.po
+#usr/share/doc/gettext/examples/hello-smalltalk/po/sq.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/sr.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/sv.po
+#usr/share/doc/gettext/examples/hello-smalltalk/po/ta.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/tr.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/uk.po
 #usr/share/doc/gettext/examples/hello-smalltalk/po/vi.po
@@ -1616,6 +1682,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/mt.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/nb.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/nl.po
+#usr/share/doc/gettext/examples/hello-tcl-tk/po/nn.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/pl.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/pt.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/pt_BR.po
@@ -1623,8 +1690,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/ru.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/sk.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/sl.po
+#usr/share/doc/gettext/examples/hello-tcl-tk/po/sq.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/sr.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/sv.po
+#usr/share/doc/gettext/examples/hello-tcl-tk/po/ta.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/tr.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/uk.po
 #usr/share/doc/gettext/examples/hello-tcl-tk/po/vi.po
@@ -1667,6 +1736,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-tcl/po/mt.po
 #usr/share/doc/gettext/examples/hello-tcl/po/nb.po
 #usr/share/doc/gettext/examples/hello-tcl/po/nl.po
+#usr/share/doc/gettext/examples/hello-tcl/po/nn.po
 #usr/share/doc/gettext/examples/hello-tcl/po/pl.po
 #usr/share/doc/gettext/examples/hello-tcl/po/pt.po
 #usr/share/doc/gettext/examples/hello-tcl/po/pt_BR.po
@@ -1674,8 +1744,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-tcl/po/ru.po
 #usr/share/doc/gettext/examples/hello-tcl/po/sk.po
 #usr/share/doc/gettext/examples/hello-tcl/po/sl.po
+#usr/share/doc/gettext/examples/hello-tcl/po/sq.po
 #usr/share/doc/gettext/examples/hello-tcl/po/sr.po
 #usr/share/doc/gettext/examples/hello-tcl/po/sv.po
+#usr/share/doc/gettext/examples/hello-tcl/po/ta.po
 #usr/share/doc/gettext/examples/hello-tcl/po/tr.po
 #usr/share/doc/gettext/examples/hello-tcl/po/uk.po
 #usr/share/doc/gettext/examples/hello-tcl/po/vi.po
@@ -1719,6 +1791,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-ycp/po/mt.po
 #usr/share/doc/gettext/examples/hello-ycp/po/nb.po
 #usr/share/doc/gettext/examples/hello-ycp/po/nl.po
+#usr/share/doc/gettext/examples/hello-ycp/po/nn.po
 #usr/share/doc/gettext/examples/hello-ycp/po/pl.po
 #usr/share/doc/gettext/examples/hello-ycp/po/pt.po
 #usr/share/doc/gettext/examples/hello-ycp/po/pt_BR.po
@@ -1726,8 +1799,10 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/examples/hello-ycp/po/ru.po
 #usr/share/doc/gettext/examples/hello-ycp/po/sk.po
 #usr/share/doc/gettext/examples/hello-ycp/po/sl.po
+#usr/share/doc/gettext/examples/hello-ycp/po/sq.po
 #usr/share/doc/gettext/examples/hello-ycp/po/sr.po
 #usr/share/doc/gettext/examples/hello-ycp/po/sv.po
+#usr/share/doc/gettext/examples/hello-ycp/po/ta.po
 #usr/share/doc/gettext/examples/hello-ycp/po/tr.po
 #usr/share/doc/gettext/examples/hello-ycp/po/uk.po
 #usr/share/doc/gettext/examples/hello-ycp/po/vi.po
@@ -1755,14 +1830,20 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/gettext_23.html
 #usr/share/doc/gettext/gettext_24.html
 #usr/share/doc/gettext/gettext_25.html
+#usr/share/doc/gettext/gettext_26.html
+#usr/share/doc/gettext/gettext_27.html
+#usr/share/doc/gettext/gettext_28.html
+#usr/share/doc/gettext/gettext_29.html
 #usr/share/doc/gettext/gettext_3.html
+#usr/share/doc/gettext/gettext_30.html
 #usr/share/doc/gettext/gettext_4.html
 #usr/share/doc/gettext/gettext_5.html
 #usr/share/doc/gettext/gettext_6.html
 #usr/share/doc/gettext/gettext_7.html
 #usr/share/doc/gettext/gettext_8.html
 #usr/share/doc/gettext/gettext_9.html
-#usr/share/doc/gettext/gettext_foot.html
+#usr/share/doc/gettext/gettext_abt.html
+#usr/share/doc/gettext/gettext_fot.html
 #usr/share/doc/gettext/gettext_toc.html
 #usr/share/doc/gettext/gettextize.1.html
 #usr/share/doc/gettext/javadoc2
@@ -1804,87 +1885,31 @@ usr/lib/preloadable_libintl.so
 #usr/share/doc/gettext/xgettext.1.html
 #usr/share/doc/libasprintf
 #usr/share/doc/libasprintf/autosprintf_all.html
+#usr/share/doc/libtextstyle
+#usr/share/doc/libtextstyle/libtextstyle_1.html
+#usr/share/doc/libtextstyle/libtextstyle_2.html
+#usr/share/doc/libtextstyle/libtextstyle_3.html
+#usr/share/doc/libtextstyle/libtextstyle_4.html
+#usr/share/doc/libtextstyle/libtextstyle_5.html
+#usr/share/doc/libtextstyle/libtextstyle_6.html
+#usr/share/doc/libtextstyle/libtextstyle_7.html
+#usr/share/doc/libtextstyle/libtextstyle_abt.html
+#usr/share/doc/libtextstyle/libtextstyle_toc.html
 #usr/share/gettext
-#usr/share/gettext-0.19.8
-#usr/share/gettext-0.19.8/its
-#usr/share/gettext-0.19.8/its/appdata.its
-#usr/share/gettext-0.19.8/its/appdata.loc
-#usr/share/gettext-0.19.8/its/glade.loc
-#usr/share/gettext-0.19.8/its/glade1.its
-#usr/share/gettext-0.19.8/its/glade2.its
-#usr/share/gettext-0.19.8/its/gsettings.its
-#usr/share/gettext-0.19.8/its/gsettings.loc
-#usr/share/gettext-0.19.8/its/gtkbuilder.its
+#usr/share/gettext-0.21
+#usr/share/gettext-0.21/its
+#usr/share/gettext-0.21/its/glade.loc
+#usr/share/gettext-0.21/its/glade1.its
+#usr/share/gettext-0.21/its/glade2.its
+#usr/share/gettext-0.21/its/gsettings.its
+#usr/share/gettext-0.21/its/gsettings.loc
+#usr/share/gettext-0.21/its/gtkbuilder.its
+#usr/share/gettext-0.21/its/metainfo.its
+#usr/share/gettext-0.21/its/metainfo.loc
 #usr/share/gettext/ABOUT-NLS
 #usr/share/gettext/archive.dir.tar.xz
 #usr/share/gettext/config.rpath
 #usr/share/gettext/gettext.h
-#usr/share/gettext/intl
-#usr/share/gettext/intl/COPYING.LIB
-#usr/share/gettext/intl/Makefile.in
-#usr/share/gettext/intl/VERSION
-#usr/share/gettext/intl/bindtextdom.c
-#usr/share/gettext/intl/config.charset
-#usr/share/gettext/intl/dcgettext.c
-#usr/share/gettext/intl/dcigettext.c
-#usr/share/gettext/intl/dcngettext.c
-#usr/share/gettext/intl/dgettext.c
-#usr/share/gettext/intl/dngettext.c
-#usr/share/gettext/intl/eval-plural.h
-#usr/share/gettext/intl/explodename.c
-#usr/share/gettext/intl/export.h
-#usr/share/gettext/intl/finddomain.c
-#usr/share/gettext/intl/gettext.c
-#usr/share/gettext/intl/gettextP.h
-#usr/share/gettext/intl/gmo.h
-#usr/share/gettext/intl/hash-string.c
-#usr/share/gettext/intl/hash-string.h
-#usr/share/gettext/intl/intl-compat.c
-#usr/share/gettext/intl/intl-exports.c
-#usr/share/gettext/intl/l10nflist.c
-#usr/share/gettext/intl/langprefs.c
-#usr/share/gettext/intl/libgnuintl.in.h
-#usr/share/gettext/intl/libintl.rc
-#usr/share/gettext/intl/loadinfo.h
-#usr/share/gettext/intl/loadmsgcat.c
-#usr/share/gettext/intl/localcharset.c
-#usr/share/gettext/intl/localcharset.h
-#usr/share/gettext/intl/locale.alias
-#usr/share/gettext/intl/localealias.c
-#usr/share/gettext/intl/localename.c
-#usr/share/gettext/intl/lock.c
-#usr/share/gettext/intl/lock.h
-#usr/share/gettext/intl/log.c
-#usr/share/gettext/intl/ngettext.c
-#usr/share/gettext/intl/os2compat.c
-#usr/share/gettext/intl/os2compat.h
-#usr/share/gettext/intl/osdep.c
-#usr/share/gettext/intl/plural-exp.c
-#usr/share/gettext/intl/plural-exp.h
-#usr/share/gettext/intl/plural.c
-#usr/share/gettext/intl/plural.y
-#usr/share/gettext/intl/printf-args.c
-#usr/share/gettext/intl/printf-args.h
-#usr/share/gettext/intl/printf-parse.c
-#usr/share/gettext/intl/printf-parse.h
-#usr/share/gettext/intl/printf.c
-#usr/share/gettext/intl/ref-add.sin
-#usr/share/gettext/intl/ref-del.sin
-#usr/share/gettext/intl/relocatable.c
-#usr/share/gettext/intl/relocatable.h
-#usr/share/gettext/intl/setlocale.c
-#usr/share/gettext/intl/textdomain.c
-#usr/share/gettext/intl/threadlib.c
-#usr/share/gettext/intl/tsearch.c
-#usr/share/gettext/intl/tsearch.h
-#usr/share/gettext/intl/vasnprintf.c
-#usr/share/gettext/intl/vasnprintf.h
-#usr/share/gettext/intl/vasnwprintf.h
-#usr/share/gettext/intl/verify.h
-#usr/share/gettext/intl/version.c
-#usr/share/gettext/intl/wprintf-parse.h
-#usr/share/gettext/intl/xsize.c
-#usr/share/gettext/intl/xsize.h
 #usr/share/gettext/javaversion.class
 #usr/share/gettext/msgunfmt.tcl
 #usr/share/gettext/po
@@ -1924,6 +1949,7 @@ usr/lib/preloadable_libintl.so
 #usr/share/gettext/styles/po-vim.css
 #usr/share/info/autosprintf.info
 #usr/share/info/gettext.info
+#usr/share/info/libtextstyle.info
 #usr/share/man/man1/autopoint.1
 #usr/share/man/man1/envsubst.1
 #usr/share/man/man1/gettext.1
index c1d6a7d9d0d2968a6f6449eae0976b2e9d50e12c..64d39effb56a2d51c1cf6cf50bb269cf3eb938bf 100644 (file)
@@ -4,12 +4,12 @@
 #usr/lib/libgmp.la
 #usr/lib/libgmp.so
 usr/lib/libgmp.so.10
-usr/lib/libgmp.so.10.4.0
+usr/lib/libgmp.so.10.4.1
 #usr/lib/libgmpxx.a
 #usr/lib/libgmpxx.la
 #usr/lib/libgmpxx.so
 usr/lib/libgmpxx.so.4
-usr/lib/libgmpxx.so.4.6.0
+usr/lib/libgmpxx.so.4.6.1
 #usr/lib/pkgconfig/gmp.pc
 #usr/lib/pkgconfig/gmpxx.pc
 #usr/share/info/gmp.info
index 4592d661f7b943373b4d9c3bbdf0f6ef3adb0a0b..1ba069dee8e659338c19a59e897a09ca3da8e8fe 100644 (file)
@@ -6,13 +6,9 @@
 #usr/bin/rustdoc
 #usr/etc/bash_completion.d
 #usr/etc/bash_completion.d/cargo
-#usr/lib/libchalk_derive-dfa7d4aa3c4122b5.so
-#usr/lib/librustc_driver-6f74b8765a504030.so
-#usr/lib/librustc_macros-5af2465d06f3e5ef.so
-#usr/lib/libserde_derive-cc14479bf5403ff4.so
-#usr/lib/libstd-432c60b323be1e4f.so
-#usr/lib/libtest-c924162c32bc9689.so
-#usr/lib/libtracing_attributes-9e3e92feee9eb8a7.so
+#usr/lib/librustc_driver-c20ca3c04a59a7fd.so
+#usr/lib/libstd-17af607fafeec010.so
+#usr/lib/libtest-6ed499b2de6f7ed3.so
 #usr/lib/rustlib
 #usr/lib/rustlib/components
 #usr/lib/rustlib/etc
 #usr/lib/rustlib/i686-unknown-linux-gnu
 #usr/lib/rustlib/i686-unknown-linux-gnu/bin
 #usr/lib/rustlib/i686-unknown-linux-gnu/lib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libaddr2line-1110d28274a5a558.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libadler-4b1049af3d913803.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/liballoc-5e2a7d41358b8c39.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libcfg_if-a9603e8333d12216.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libcompiler_builtins-57f1b8bc97a86ad5.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libcore-041b4871def5ffdd.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libgetopts-0c11f8eb378407f6.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libgimli-f94ca12d741aa829.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libhashbrown-05b3bb325f871ab6.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/liblibc-71dc1a7fd36fc1f8.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libminiz_oxide-647a40100ab2bea5.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libobject-6f43ac9680623372.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libpanic_abort-55b8dce24446be0e.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libpanic_unwind-5792752fa50f924f.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libproc_macro-65269cd9094d14e6.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libprofiler_builtins-22fe3e13ecb9d52f.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/librustc_demangle-97839ff2b38debae.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/librustc_std_workspace_alloc-970c252fdb322ff9.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/librustc_std_workspace_core-e2ebdd0dee50567f.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/librustc_std_workspace_std-cd6fe2855767d095.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libstd-432c60b323be1e4f.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libstd-432c60b323be1e4f.so
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libterm-111efd21a26ba2c8.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libtest-c924162c32bc9689.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libtest-c924162c32bc9689.so
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libunicode_width-6d6c428d48531c31.rlib
-#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libunwind-cb989ad6c1d6d8e4.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libaddr2line-c8071f4fd64b8447.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libadler-0349698873defa34.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/liballoc-4ee3c33938208aa4.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libcfg_if-026ad87104cdfeea.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libcompiler_builtins-9a06243c6c7e8528.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libcore-7da5ae6b1d061c3d.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libgetopts-0ddc724072fa12a1.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libgimli-0eddbd769f241c1d.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libhashbrown-9e99065747e32362.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/liblibc-92bbd0da49665057.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libminiz_oxide-24ad70872c68e01f.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libobject-5ab850799bc1d85d.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libpanic_abort-95ba58a890227a5f.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libpanic_unwind-469a8af1d4d55ce7.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libproc_macro-28c6ba6967e07051.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libprofiler_builtins-d58f76d15eb44c57.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/librustc_demangle-7a538ce2f1f58338.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/librustc_std_workspace_alloc-63380016f02a674e.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/librustc_std_workspace_core-b83ea8012e4ee99e.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/librustc_std_workspace_std-1bece10cc5dfb00b.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libstd-17af607fafeec010.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libstd-17af607fafeec010.so
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libterm-2aea246853cd806a.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libtest-6ed499b2de6f7ed3.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libtest-6ed499b2de6f7ed3.so
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libunicode_width-9a244ee40f5e4b24.rlib
+#usr/lib/rustlib/i686-unknown-linux-gnu/lib/libunwind-78445e0a22ee32d6.rlib
 #usr/lib/rustlib/install.log
 #usr/lib/rustlib/manifest-cargo
 #usr/lib/rustlib/manifest-rust-std-i686-unknown-linux-gnu
index 294eca6d161ed666cf702123f4b54e8e544e3c9c..a3bfbc1571053a7a7652eb4c79448c9e668d4a59 100644 (file)
@@ -1,15 +1,20 @@
-lib/libcap.so
-lib/libcap.so.1
+#lib/libcap.a
 lib/libcap.so.2
-lib/libcap.so.2.25
+lib/libcap.so.2.49
+#lib/libpsx.a
+#lib/libpsx.so
+#lib/libpsx.so.2
+#lib/libpsx.so.2.49
+#lib/pkgconfig/libcap.pc
+#lib/pkgconfig/libpsx.pc
 lib/security/pam_cap.so
 sbin/capsh
 sbin/getcap
 sbin/getpcaps
 sbin/setcap
 #usr/include/sys/capability.h
+#usr/include/sys/psx_syscall.h
 usr/lib/libcap.so
-#usr/lib/pkgconfig/libcap.pc
 #usr/share/man/man1/capsh.1
 #usr/share/man/man3/cap_clear.3
 #usr/share/man/man3/cap_clear_flag.3
@@ -21,22 +26,53 @@ usr/lib/libcap.so
 #usr/share/man/man3/cap_free.3
 #usr/share/man/man3/cap_from_name.3
 #usr/share/man/man3/cap_from_text.3
+#usr/share/man/man3/cap_func_launcher.3
 #usr/share/man/man3/cap_get_bound.3
 #usr/share/man/man3/cap_get_fd.3
 #usr/share/man/man3/cap_get_file.3
 #usr/share/man/man3/cap_get_flag.3
+#usr/share/man/man3/cap_get_mode.3
 #usr/share/man/man3/cap_get_pid.3
 #usr/share/man/man3/cap_get_proc.3
+#usr/share/man/man3/cap_get_secbits.3
+#usr/share/man/man3/cap_iab.3
+#usr/share/man/man3/cap_iab_fill.3
+#usr/share/man/man3/cap_iab_from_text.3
+#usr/share/man/man3/cap_iab_get_proc.3
+#usr/share/man/man3/cap_iab_get_vector.3
+#usr/share/man/man3/cap_iab_init.3
+#usr/share/man/man3/cap_iab_set_proc.3
+#usr/share/man/man3/cap_iab_set_vector.3
+#usr/share/man/man3/cap_iab_to_text.3
 #usr/share/man/man3/cap_init.3
+#usr/share/man/man3/cap_launch.3
+#usr/share/man/man3/cap_launcher_callback.3
+#usr/share/man/man3/cap_launcher_set_chroot.3
+#usr/share/man/man3/cap_launcher_set_iab.3
+#usr/share/man/man3/cap_launcher_set_mode.3
+#usr/share/man/man3/cap_launcher_setgroups.3
+#usr/share/man/man3/cap_launcher_setuid.3
+#usr/share/man/man3/cap_mode.3
+#usr/share/man/man3/cap_mode_name.3
+#usr/share/man/man3/cap_new_launcher.3
 #usr/share/man/man3/cap_set_fd.3
 #usr/share/man/man3/cap_set_file.3
 #usr/share/man/man3/cap_set_flag.3
+#usr/share/man/man3/cap_set_mode.3
 #usr/share/man/man3/cap_set_proc.3
+#usr/share/man/man3/cap_set_secbits.3
+#usr/share/man/man3/cap_setgroups.3
+#usr/share/man/man3/cap_setuid.3
 #usr/share/man/man3/cap_size.3
 #usr/share/man/man3/cap_to_name.3
 #usr/share/man/man3/cap_to_text.3
 #usr/share/man/man3/capgetp.3
 #usr/share/man/man3/capsetp.3
 #usr/share/man/man3/libcap.3
+#usr/share/man/man3/libpsx.3
+#usr/share/man/man3/psx_syscall.3
+#usr/share/man/man3/psx_syscall3.3
+#usr/share/man/man3/psx_syscall6.3
 #usr/share/man/man8/getcap.8
+#usr/share/man/man8/getpcaps.8
 #usr/share/man/man8/setcap.8
index e8776e56ef6e2c3027bc6f3e2781513f5b3bc9f3..a605c0db7f54c1046523e90aea785ce97e674e11 100644 (file)
@@ -19,10 +19,10 @@ usr/bin/location
 #usr/lib/libloc.so
 usr/lib/libloc.so.1
 usr/lib/libloc.so.1.0.0
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Location.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Location
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Location/.packlist
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Location/Location.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Location.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Location
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Location/.packlist
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Location/Location.so
 #usr/lib/pkgconfig/libloc.pc
 #usr/lib/python3.8/site-packages/_location.la
 usr/lib/python3.8/site-packages/_location.so
index 01412ee8ca9b10511d16915cab428f4988ae7e77..382f669a89ffd4aacc430e1de3b072e6cd74af7f 100644 (file)
@@ -3,5 +3,5 @@
 #usr/lib/libmpc.la
 #usr/lib/libmpc.so
 usr/lib/libmpc.so.3
-usr/lib/libmpc.so.3.1.0
+usr/lib/libmpc.so.3.2.1
 #usr/share/info/mpc.info
index 552413d1f6db16088c2a172096d72033246a80b6..9fb898d19dac0ebadcf8657f6341f66693404363 100644 (file)
@@ -5,11 +5,11 @@ usr/bin/oping
 usr/lib/liboping.so
 usr/lib/liboping.so.0
 usr/lib/liboping.so.0.2.3
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Net/Oping.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/Oping
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/Oping/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/Oping/Oping.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/Oping/Oping.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Net/Oping.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/Oping
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/Oping/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/Oping/Oping.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/Oping/Oping.so
 #usr/share/man/man3/Net::Oping.3
 #usr/share/man/man3/liboping.3
 #usr/share/man/man3/ping_construct.3
index 868f870fa0b6327f565e7b6c8a7f104882795e75..c97b9e8c0355e6b1ea04a22d53b37ca1c8e5208b 100644 (file)
@@ -21,7 +21,7 @@
 #usr/lib/libpcap.a
 usr/lib/libpcap.so
 usr/lib/libpcap.so.1
-usr/lib/libpcap.so.1.9.1
+usr/lib/libpcap.so.1.10.0
 #usr/lib/pkgconfig/libpcap.pc
 #usr/share/man/man1/pcap-config.1
 #usr/share/man/man3/pcap.3pcap
@@ -58,6 +58,7 @@ usr/lib/libpcap.so.1.9.1
 #usr/share/man/man3/pcap_get_tstamp_precision.3pcap
 #usr/share/man/man3/pcap_geterr.3pcap
 #usr/share/man/man3/pcap_getnonblock.3pcap
+#usr/share/man/man3/pcap_init.3pcap
 #usr/share/man/man3/pcap_inject.3pcap
 #usr/share/man/man3/pcap_is_swapped.3pcap
 #usr/share/man/man3/pcap_lib_version.3pcap
index 74d44ebd3ebe2804701cd094195f422dfaa0bd8e..a3f79e4d7b11b8df8817dc15ec03123708c39f59 100644 (file)
@@ -1,72 +1,72 @@
-#usr/lib/perl5/site_perl/5.30.0/Bundle
-usr/lib/perl5/site_perl/5.30.0/Bundle/LWP.pm
-#usr/lib/perl5/site_perl/5.30.0/File
-usr/lib/perl5/site_perl/5.30.0/File/Listing.pm
-usr/lib/perl5/site_perl/5.30.0/HTML/Form.pm
-#usr/lib/perl5/site_perl/5.30.0/HTTP
-#usr/lib/perl5/site_perl/5.30.0/HTTP/Cookies
-usr/lib/perl5/site_perl/5.30.0/HTTP/Cookies.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Cookies/Microsoft.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Cookies/Netscape.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Daemon.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Date.pm
-#usr/lib/perl5/site_perl/5.30.0/HTTP/Headers
-usr/lib/perl5/site_perl/5.30.0/HTTP/Headers.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Headers/Auth.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Headers/ETag.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Headers/Util.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Message.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Negotiate.pm
-#usr/lib/perl5/site_perl/5.30.0/HTTP/Request
-usr/lib/perl5/site_perl/5.30.0/HTTP/Request.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Request/Common.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Response.pm
-usr/lib/perl5/site_perl/5.30.0/HTTP/Status.pm
-#usr/lib/perl5/site_perl/5.30.0/LWP
-usr/lib/perl5/site_perl/5.30.0/LWP.pm
-#usr/lib/perl5/site_perl/5.30.0/LWP/Authen
-usr/lib/perl5/site_perl/5.30.0/LWP/Authen/Basic.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Authen/Digest.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Authen/Ntlm.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/ConnCache.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Debug.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/DebugFile.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/MediaTypes.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/MemberMixin.pm
-#usr/lib/perl5/site_perl/5.30.0/LWP/Protocol
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/GHTTP.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/cpan.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/data.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/file.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/ftp.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/gopher.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/http.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/http10.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/https.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/https10.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/loopback.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/mailto.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/nntp.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Protocol/nogo.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/RobotUA.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/Simple.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/UserAgent.pm
-usr/lib/perl5/site_perl/5.30.0/LWP/media.types
-#usr/lib/perl5/site_perl/5.30.0/Net
-#usr/lib/perl5/site_perl/5.30.0/Net/HTTP
-usr/lib/perl5/site_perl/5.30.0/Net/HTTP.pm
-usr/lib/perl5/site_perl/5.30.0/Net/HTTP/Methods.pm
-usr/lib/perl5/site_perl/5.30.0/Net/HTTP/NB.pm
-usr/lib/perl5/site_perl/5.30.0/Net/HTTPS.pm
-#usr/lib/perl5/site_perl/5.30.0/WWW
-#usr/lib/perl5/site_perl/5.30.0/WWW/RobotRules
-usr/lib/perl5/site_perl/5.30.0/WWW/RobotRules.pm
-usr/lib/perl5/site_perl/5.30.0/WWW/RobotRules/AnyDBM_File.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/libwww-perl
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/libwww-perl/.packlist
-#usr/lib/perl5/site_perl/5.30.0/lwpcook.pod
-#usr/lib/perl5/site_perl/5.30.0/lwptut.pod
+#usr/lib/perl5/site_perl/5.32.1/Bundle
+usr/lib/perl5/site_perl/5.32.1/Bundle/LWP.pm
+#usr/lib/perl5/site_perl/5.32.1/File
+usr/lib/perl5/site_perl/5.32.1/File/Listing.pm
+usr/lib/perl5/site_perl/5.32.1/HTML/Form.pm
+#usr/lib/perl5/site_perl/5.32.1/HTTP
+#usr/lib/perl5/site_perl/5.32.1/HTTP/Cookies
+usr/lib/perl5/site_perl/5.32.1/HTTP/Cookies.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Cookies/Microsoft.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Cookies/Netscape.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Daemon.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Date.pm
+#usr/lib/perl5/site_perl/5.32.1/HTTP/Headers
+usr/lib/perl5/site_perl/5.32.1/HTTP/Headers.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Headers/Auth.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Headers/ETag.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Headers/Util.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Message.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Negotiate.pm
+#usr/lib/perl5/site_perl/5.32.1/HTTP/Request
+usr/lib/perl5/site_perl/5.32.1/HTTP/Request.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Request/Common.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Response.pm
+usr/lib/perl5/site_perl/5.32.1/HTTP/Status.pm
+#usr/lib/perl5/site_perl/5.32.1/LWP
+usr/lib/perl5/site_perl/5.32.1/LWP.pm
+#usr/lib/perl5/site_perl/5.32.1/LWP/Authen
+usr/lib/perl5/site_perl/5.32.1/LWP/Authen/Basic.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Authen/Digest.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Authen/Ntlm.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/ConnCache.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Debug.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/DebugFile.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/MediaTypes.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/MemberMixin.pm
+#usr/lib/perl5/site_perl/5.32.1/LWP/Protocol
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/GHTTP.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/cpan.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/data.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/file.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/ftp.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/gopher.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/http.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/http10.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/https.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/https10.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/loopback.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/mailto.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/nntp.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Protocol/nogo.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/RobotUA.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/Simple.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/UserAgent.pm
+usr/lib/perl5/site_perl/5.32.1/LWP/media.types
+#usr/lib/perl5/site_perl/5.32.1/Net
+#usr/lib/perl5/site_perl/5.32.1/Net/HTTP
+usr/lib/perl5/site_perl/5.32.1/Net/HTTP.pm
+usr/lib/perl5/site_perl/5.32.1/Net/HTTP/Methods.pm
+usr/lib/perl5/site_perl/5.32.1/Net/HTTP/NB.pm
+usr/lib/perl5/site_perl/5.32.1/Net/HTTPS.pm
+#usr/lib/perl5/site_perl/5.32.1/WWW
+#usr/lib/perl5/site_perl/5.32.1/WWW/RobotRules
+usr/lib/perl5/site_perl/5.32.1/WWW/RobotRules.pm
+usr/lib/perl5/site_perl/5.32.1/WWW/RobotRules/AnyDBM_File.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/libwww-perl
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/libwww-perl/.packlist
+#usr/lib/perl5/site_perl/5.32.1/lwpcook.pod
+#usr/lib/perl5/site_perl/5.32.1/lwptut.pod
 #usr/share/man/man3/Bundle::LWP.3
 #usr/share/man/man3/File::Listing.3
 #usr/share/man/man3/HTML::Form.3
index bf43e8ad5429a1d47e7fda802483b8b5e7dbad81..591e860c2d9c99a54198fcdebea4e9132dda1811 100644 (file)
@@ -72,9 +72,9 @@
 #usr/include/nettle/yarrow.h
 usr/lib/libhogweed.so
 usr/lib/libhogweed.so.6
-usr/lib/libhogweed.so.6.2
+usr/lib/libhogweed.so.6.3
 #usr/lib/libnettle.so
 usr/lib/libnettle.so.8
-usr/lib/libnettle.so.8.2
+usr/lib/libnettle.so.8.3
 #usr/lib/pkgconfig/hogweed.pc
 #usr/lib/pkgconfig/nettle.pc
index 6e43eeb3a16ef1414cc6c75b50d03db6fbeb570a..0dab6ae3b11760cb987390894f425ac32a96d17f 100644 (file)
 #usr/lib/libparted-fs-resize.la
 #usr/lib/libparted-fs-resize.so
 usr/lib/libparted-fs-resize.so.0
-usr/lib/libparted-fs-resize.so.0.0.1
+usr/lib/libparted-fs-resize.so.0.0.3
 #usr/lib/libparted.a
 #usr/lib/libparted.la
 #usr/lib/libparted.so
 usr/lib/libparted.so.2
-usr/lib/libparted.so.2.0.1
+usr/lib/libparted.so.2.0.3
+#usr/lib/pkgconfig/libparted-fs-resize.pc
 #usr/lib/pkgconfig/libparted.pc
 usr/sbin/parted
 usr/sbin/partprobe
@@ -30,10 +31,13 @@ usr/sbin/partprobe
 #usr/share/locale/de/LC_MESSAGES/parted.mo
 #usr/share/locale/es/LC_MESSAGES/parted.mo
 #usr/share/locale/fr/LC_MESSAGES/parted.mo
+#usr/share/locale/fur/LC_MESSAGES/parted.mo
 #usr/share/locale/gl/LC_MESSAGES/parted.mo
+#usr/share/locale/hu/LC_MESSAGES/parted.mo
 #usr/share/locale/id/LC_MESSAGES/parted.mo
 #usr/share/locale/it/LC_MESSAGES/parted.mo
 #usr/share/locale/ja/LC_MESSAGES/parted.mo
+#usr/share/locale/ko/LC_MESSAGES/parted.mo
 #usr/share/locale/nl/LC_MESSAGES/parted.mo
 #usr/share/locale/nn/LC_MESSAGES/parted.mo
 #usr/share/locale/pl/LC_MESSAGES/parted.mo
index 6795e8b0d89fafdbdfe637cef512410ec8de6cd1..de9ed6f7a594d6f87fe205ac392e4b37e7aa36c1 100644 (file)
@@ -7,7 +7,8 @@
 #usr/bin/instmodsh
 #usr/bin/json_pp
 #usr/bin/libnetcfg
-usr/bin/perl5.30.0
+usr/bin/perl
+usr/bin/perl5.32.1
 #usr/bin/perlbug
 #usr/bin/perldoc
 #usr/bin/perlivp
@@ -19,1935 +20,1961 @@ usr/bin/perl5.30.0
 #usr/bin/pod2text
 #usr/bin/pod2usage
 #usr/bin/podchecker
-#usr/bin/podselect
 #usr/bin/prove
 #usr/bin/ptar
 #usr/bin/ptardiff
 #usr/bin/ptargrep
 #usr/bin/shasum
 #usr/bin/splain
+#usr/bin/streamzip
 #usr/bin/xsubpp
 #usr/bin/zipdetails
 #usr/lib/perl5
-#usr/lib/perl5/5.30.0
-usr/lib/perl5/5.30.0/AnyDBM_File.pm
-#usr/lib/perl5/5.30.0/App
-#usr/lib/perl5/5.30.0/App/Cpan.pm
-#usr/lib/perl5/5.30.0/App/Prove
-#usr/lib/perl5/5.30.0/App/Prove.pm
-#usr/lib/perl5/5.30.0/App/Prove/State
-#usr/lib/perl5/5.30.0/App/Prove/State.pm
-#usr/lib/perl5/5.30.0/App/Prove/State/Result
-#usr/lib/perl5/5.30.0/App/Prove/State/Result.pm
-#usr/lib/perl5/5.30.0/App/Prove/State/Result/Test.pm
-#usr/lib/perl5/5.30.0/Archive
-#usr/lib/perl5/5.30.0/Archive/Tar
-#usr/lib/perl5/5.30.0/Archive/Tar.pm
-#usr/lib/perl5/5.30.0/Archive/Tar/Constant.pm
-#usr/lib/perl5/5.30.0/Archive/Tar/File.pm
-#usr/lib/perl5/5.30.0/Attribute
-usr/lib/perl5/5.30.0/Attribute/Handlers.pm
-usr/lib/perl5/5.30.0/AutoLoader.pm
-usr/lib/perl5/5.30.0/AutoSplit.pm
-#usr/lib/perl5/5.30.0/B
-#usr/lib/perl5/5.30.0/B/Deparse.pm
-#usr/lib/perl5/5.30.0/B/Op_private.pm
-usr/lib/perl5/5.30.0/Benchmark.pm
-#usr/lib/perl5/5.30.0/CORE.pod
-#usr/lib/perl5/5.30.0/CPAN
-#usr/lib/perl5/5.30.0/CPAN.pm
-#usr/lib/perl5/5.30.0/CPAN/API
-#usr/lib/perl5/5.30.0/CPAN/API/HOWTO.pod
-#usr/lib/perl5/5.30.0/CPAN/Author.pm
-#usr/lib/perl5/5.30.0/CPAN/Bundle.pm
-#usr/lib/perl5/5.30.0/CPAN/CacheMgr.pm
-#usr/lib/perl5/5.30.0/CPAN/Complete.pm
-#usr/lib/perl5/5.30.0/CPAN/Debug.pm
-#usr/lib/perl5/5.30.0/CPAN/DeferredCode.pm
-#usr/lib/perl5/5.30.0/CPAN/Distribution.pm
-#usr/lib/perl5/5.30.0/CPAN/Distroprefs.pm
-#usr/lib/perl5/5.30.0/CPAN/Distrostatus.pm
-#usr/lib/perl5/5.30.0/CPAN/Exception
-#usr/lib/perl5/5.30.0/CPAN/Exception/RecursiveDependency.pm
-#usr/lib/perl5/5.30.0/CPAN/Exception/blocked_urllist.pm
-#usr/lib/perl5/5.30.0/CPAN/Exception/yaml_not_installed.pm
-#usr/lib/perl5/5.30.0/CPAN/Exception/yaml_process_error.pm
-#usr/lib/perl5/5.30.0/CPAN/FTP
-#usr/lib/perl5/5.30.0/CPAN/FTP.pm
-#usr/lib/perl5/5.30.0/CPAN/FTP/netrc.pm
-#usr/lib/perl5/5.30.0/CPAN/FirstTime.pm
-#usr/lib/perl5/5.30.0/CPAN/HTTP
-#usr/lib/perl5/5.30.0/CPAN/HTTP/Client.pm
-#usr/lib/perl5/5.30.0/CPAN/HTTP/Credentials.pm
-#usr/lib/perl5/5.30.0/CPAN/HandleConfig.pm
-#usr/lib/perl5/5.30.0/CPAN/Index.pm
-#usr/lib/perl5/5.30.0/CPAN/InfoObj.pm
-#usr/lib/perl5/5.30.0/CPAN/Kwalify
-#usr/lib/perl5/5.30.0/CPAN/Kwalify.pm
-#usr/lib/perl5/5.30.0/CPAN/Kwalify/distroprefs.dd
-#usr/lib/perl5/5.30.0/CPAN/Kwalify/distroprefs.yml
-#usr/lib/perl5/5.30.0/CPAN/LWP
-#usr/lib/perl5/5.30.0/CPAN/LWP/UserAgent.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta
-#usr/lib/perl5/5.30.0/CPAN/Meta.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta/Converter.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta/Feature.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta/History
-#usr/lib/perl5/5.30.0/CPAN/Meta/History.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta/History/Meta_1_0.pod
-#usr/lib/perl5/5.30.0/CPAN/Meta/History/Meta_1_1.pod
-#usr/lib/perl5/5.30.0/CPAN/Meta/History/Meta_1_2.pod
-#usr/lib/perl5/5.30.0/CPAN/Meta/History/Meta_1_3.pod
-#usr/lib/perl5/5.30.0/CPAN/Meta/History/Meta_1_4.pod
-#usr/lib/perl5/5.30.0/CPAN/Meta/Merge.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta/Prereqs.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta/Requirements.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta/Spec.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta/Validator.pm
-#usr/lib/perl5/5.30.0/CPAN/Meta/YAML.pm
-#usr/lib/perl5/5.30.0/CPAN/Mirrors.pm
-#usr/lib/perl5/5.30.0/CPAN/Module.pm
-#usr/lib/perl5/5.30.0/CPAN/Nox.pm
-#usr/lib/perl5/5.30.0/CPAN/Plugin
-#usr/lib/perl5/5.30.0/CPAN/Plugin.pm
-#usr/lib/perl5/5.30.0/CPAN/Plugin/Specfile.pm
-#usr/lib/perl5/5.30.0/CPAN/Prompt.pm
-#usr/lib/perl5/5.30.0/CPAN/Queue.pm
-#usr/lib/perl5/5.30.0/CPAN/Shell.pm
-#usr/lib/perl5/5.30.0/CPAN/Tarzip.pm
-#usr/lib/perl5/5.30.0/CPAN/URL.pm
-#usr/lib/perl5/5.30.0/CPAN/Version.pm
-#usr/lib/perl5/5.30.0/Carp
-usr/lib/perl5/5.30.0/Carp.pm
-usr/lib/perl5/5.30.0/Carp/Heavy.pm
-#usr/lib/perl5/5.30.0/Class
-usr/lib/perl5/5.30.0/Class/Struct.pm
-#usr/lib/perl5/5.30.0/Compress
-usr/lib/perl5/5.30.0/Compress/Zlib.pm
-#usr/lib/perl5/5.30.0/Config
-usr/lib/perl5/5.30.0/Config/Extensions.pm
-#usr/lib/perl5/5.30.0/Config/Perl
-usr/lib/perl5/5.30.0/Config/Perl/V.pm
-usr/lib/perl5/5.30.0/DB.pm
-#usr/lib/perl5/5.30.0/DBM_Filter
-usr/lib/perl5/5.30.0/DBM_Filter.pm
-usr/lib/perl5/5.30.0/DBM_Filter/compress.pm
-usr/lib/perl5/5.30.0/DBM_Filter/encode.pm
-usr/lib/perl5/5.30.0/DBM_Filter/int32.pm
-usr/lib/perl5/5.30.0/DBM_Filter/null.pm
-usr/lib/perl5/5.30.0/DBM_Filter/utf8.pm
-#usr/lib/perl5/5.30.0/Devel
-#usr/lib/perl5/5.30.0/Devel/SelfStubber.pm
-#usr/lib/perl5/5.30.0/Digest
-usr/lib/perl5/5.30.0/Digest.pm
-usr/lib/perl5/5.30.0/Digest/base.pm
-usr/lib/perl5/5.30.0/Digest/file.pm
-usr/lib/perl5/5.30.0/DirHandle.pm
-usr/lib/perl5/5.30.0/Dumpvalue.pm
-#usr/lib/perl5/5.30.0/Encode
-#usr/lib/perl5/5.30.0/Encode/Changes.e2x
-#usr/lib/perl5/5.30.0/Encode/ConfigLocal_PM.e2x
-#usr/lib/perl5/5.30.0/Encode/Makefile_PL.e2x
-#usr/lib/perl5/5.30.0/Encode/PerlIO.pod
-#usr/lib/perl5/5.30.0/Encode/README.e2x
-#usr/lib/perl5/5.30.0/Encode/Supported.pod
-#usr/lib/perl5/5.30.0/Encode/_PM.e2x
-#usr/lib/perl5/5.30.0/Encode/_T.e2x
-#usr/lib/perl5/5.30.0/Encode/encode.h
-usr/lib/perl5/5.30.0/English.pm
-usr/lib/perl5/5.30.0/Env.pm
-#usr/lib/perl5/5.30.0/Exporter
-usr/lib/perl5/5.30.0/Exporter.pm
-usr/lib/perl5/5.30.0/Exporter/Heavy.pm
-#usr/lib/perl5/5.30.0/ExtUtils
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Base.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/Unix.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/VMS.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/Windows
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/Windows.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/Windows/BCC.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/Windows/GCC.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/aix.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/android.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/cygwin.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/darwin.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/dec_osf.pm
-#usr/lib/perl5/5.30.0/ExtUtils/CBuilder/Platform/os2.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Command
-#usr/lib/perl5/5.30.0/ExtUtils/Command.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Command/MM.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Constant
-#usr/lib/perl5/5.30.0/ExtUtils/Constant.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Constant/Base.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Constant/ProxySubs.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Constant/Utils.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Constant/XS.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Embed.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Install.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Installed.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Liblist
-#usr/lib/perl5/5.30.0/ExtUtils/Liblist.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Liblist/Kid.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MANIFEST.SKIP
-#usr/lib/perl5/5.30.0/ExtUtils/MM.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_AIX.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_Any.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_BeOS.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_Cygwin.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_DOS.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_Darwin.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_MacOS.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_NW5.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_OS2.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_QNX.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_UWIN.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_Unix.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_VMS.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_VOS.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_Win32.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MM_Win95.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MY.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MakeMaker
-#usr/lib/perl5/5.30.0/ExtUtils/MakeMaker.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MakeMaker/Config.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MakeMaker/FAQ.pod
-#usr/lib/perl5/5.30.0/ExtUtils/MakeMaker/Locale.pm
-#usr/lib/perl5/5.30.0/ExtUtils/MakeMaker/Tutorial.pod
-#usr/lib/perl5/5.30.0/ExtUtils/MakeMaker/version.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Manifest.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Miniperl.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Mkbootstrap.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Mksymlists.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Packlist.pm
-#usr/lib/perl5/5.30.0/ExtUtils/ParseXS
-#usr/lib/perl5/5.30.0/ExtUtils/ParseXS.pm
-#usr/lib/perl5/5.30.0/ExtUtils/ParseXS.pod
-#usr/lib/perl5/5.30.0/ExtUtils/ParseXS/Constants.pm
-#usr/lib/perl5/5.30.0/ExtUtils/ParseXS/CountLines.pm
-#usr/lib/perl5/5.30.0/ExtUtils/ParseXS/Eval.pm
-#usr/lib/perl5/5.30.0/ExtUtils/ParseXS/Utilities.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Typemaps
-#usr/lib/perl5/5.30.0/ExtUtils/Typemaps.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Typemaps/Cmd.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Typemaps/InputMap.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Typemaps/OutputMap.pm
-#usr/lib/perl5/5.30.0/ExtUtils/Typemaps/Type.pm
-#usr/lib/perl5/5.30.0/ExtUtils/testlib.pm
-#usr/lib/perl5/5.30.0/ExtUtils/typemap
-#usr/lib/perl5/5.30.0/ExtUtils/xsubpp
-usr/lib/perl5/5.30.0/Fatal.pm
-#usr/lib/perl5/5.30.0/File
-usr/lib/perl5/5.30.0/File/Basename.pm
-usr/lib/perl5/5.30.0/File/Compare.pm
-usr/lib/perl5/5.30.0/File/Copy.pm
-usr/lib/perl5/5.30.0/File/Fetch.pm
-usr/lib/perl5/5.30.0/File/Find.pm
-usr/lib/perl5/5.30.0/File/GlobMapper.pm
-usr/lib/perl5/5.30.0/File/Path.pm
-usr/lib/perl5/5.30.0/File/Temp.pm
-usr/lib/perl5/5.30.0/File/stat.pm
-usr/lib/perl5/5.30.0/FileCache.pm
-usr/lib/perl5/5.30.0/FileHandle.pm
-#usr/lib/perl5/5.30.0/Filter
-usr/lib/perl5/5.30.0/Filter/Simple.pm
-usr/lib/perl5/5.30.0/FindBin.pm
-#usr/lib/perl5/5.30.0/Getopt
-usr/lib/perl5/5.30.0/Getopt/Long.pm
-usr/lib/perl5/5.30.0/Getopt/Std.pm
-#usr/lib/perl5/5.30.0/HTTP
-usr/lib/perl5/5.30.0/HTTP/Tiny.pm
-#usr/lib/perl5/5.30.0/I18N
-usr/lib/perl5/5.30.0/I18N/Collate.pm
-usr/lib/perl5/5.30.0/I18N/LangTags
-usr/lib/perl5/5.30.0/I18N/LangTags.pm
-usr/lib/perl5/5.30.0/I18N/LangTags/Detect.pm
-usr/lib/perl5/5.30.0/I18N/LangTags/List.pm
-#usr/lib/perl5/5.30.0/IO
-#usr/lib/perl5/5.30.0/IO/Compress
-#usr/lib/perl5/5.30.0/IO/Compress/Adapter
-usr/lib/perl5/5.30.0/IO/Compress/Adapter/Bzip2.pm
-usr/lib/perl5/5.30.0/IO/Compress/Adapter/Deflate.pm
-usr/lib/perl5/5.30.0/IO/Compress/Adapter/Identity.pm
-#usr/lib/perl5/5.30.0/IO/Compress/Base
-usr/lib/perl5/5.30.0/IO/Compress/Base.pm
-usr/lib/perl5/5.30.0/IO/Compress/Base/Common.pm
-usr/lib/perl5/5.30.0/IO/Compress/Bzip2.pm
-usr/lib/perl5/5.30.0/IO/Compress/Deflate.pm
-#usr/lib/perl5/5.30.0/IO/Compress/FAQ.pod
-#usr/lib/perl5/5.30.0/IO/Compress/Gzip
-usr/lib/perl5/5.30.0/IO/Compress/Gzip.pm
-usr/lib/perl5/5.30.0/IO/Compress/Gzip/Constants.pm
-usr/lib/perl5/5.30.0/IO/Compress/RawDeflate.pm
-#usr/lib/perl5/5.30.0/IO/Compress/Zip
-usr/lib/perl5/5.30.0/IO/Compress/Zip.pm
-usr/lib/perl5/5.30.0/IO/Compress/Zip/Constants.pm
-#usr/lib/perl5/5.30.0/IO/Compress/Zlib
-usr/lib/perl5/5.30.0/IO/Compress/Zlib/Constants.pm
-usr/lib/perl5/5.30.0/IO/Compress/Zlib/Extra.pm
-#usr/lib/perl5/5.30.0/IO/Socket
-usr/lib/perl5/5.30.0/IO/Socket/IP.pm
-#usr/lib/perl5/5.30.0/IO/Uncompress
-#usr/lib/perl5/5.30.0/IO/Uncompress/Adapter
-usr/lib/perl5/5.30.0/IO/Uncompress/Adapter/Bunzip2.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/Adapter/Identity.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/Adapter/Inflate.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/AnyInflate.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/AnyUncompress.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/Base.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/Bunzip2.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/Gunzip.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/Inflate.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/RawInflate.pm
-usr/lib/perl5/5.30.0/IO/Uncompress/Unzip.pm
-usr/lib/perl5/5.30.0/IO/Zlib.pm
-#usr/lib/perl5/5.30.0/IPC
-usr/lib/perl5/5.30.0/IPC/Cmd.pm
-usr/lib/perl5/5.30.0/IPC/Open2.pm
-usr/lib/perl5/5.30.0/IPC/Open3.pm
-#usr/lib/perl5/5.30.0/Internals.pod
-#usr/lib/perl5/5.30.0/JSON
-#usr/lib/perl5/5.30.0/JSON/PP
-#usr/lib/perl5/5.30.0/JSON/PP.pm
-#usr/lib/perl5/5.30.0/JSON/PP/Boolean.pm
-#usr/lib/perl5/5.30.0/Locale
-#usr/lib/perl5/5.30.0/Locale/Maketext
-#usr/lib/perl5/5.30.0/Locale/Maketext.pm
-#usr/lib/perl5/5.30.0/Locale/Maketext.pod
-#usr/lib/perl5/5.30.0/Locale/Maketext/Cookbook.pod
-#usr/lib/perl5/5.30.0/Locale/Maketext/Guts.pm
-#usr/lib/perl5/5.30.0/Locale/Maketext/GutsLoader.pm
-#usr/lib/perl5/5.30.0/Locale/Maketext/Simple.pm
-#usr/lib/perl5/5.30.0/Locale/Maketext/TPJ13.pod
-#usr/lib/perl5/5.30.0/Math
-#usr/lib/perl5/5.30.0/Math/BigFloat
-usr/lib/perl5/5.30.0/Math/BigFloat.pm
-usr/lib/perl5/5.30.0/Math/BigFloat/Trace.pm
-#usr/lib/perl5/5.30.0/Math/BigInt
-usr/lib/perl5/5.30.0/Math/BigInt.pm
-usr/lib/perl5/5.30.0/Math/BigInt/Calc.pm
-usr/lib/perl5/5.30.0/Math/BigInt/Lib.pm
-usr/lib/perl5/5.30.0/Math/BigInt/Trace.pm
-usr/lib/perl5/5.30.0/Math/BigRat.pm
-usr/lib/perl5/5.30.0/Math/Complex.pm
-usr/lib/perl5/5.30.0/Math/Trig.pm
-#usr/lib/perl5/5.30.0/Memoize
-usr/lib/perl5/5.30.0/Memoize.pm
-usr/lib/perl5/5.30.0/Memoize/AnyDBM_File.pm
-usr/lib/perl5/5.30.0/Memoize/Expire.pm
-usr/lib/perl5/5.30.0/Memoize/ExpireFile.pm
-usr/lib/perl5/5.30.0/Memoize/ExpireTest.pm
-usr/lib/perl5/5.30.0/Memoize/NDBM_File.pm
-usr/lib/perl5/5.30.0/Memoize/SDBM_File.pm
-usr/lib/perl5/5.30.0/Memoize/Storable.pm
-#usr/lib/perl5/5.30.0/Module
-#usr/lib/perl5/5.30.0/Module/CoreList
-usr/lib/perl5/5.30.0/Module/CoreList.pm
-#usr/lib/perl5/5.30.0/Module/CoreList.pod
-usr/lib/perl5/5.30.0/Module/CoreList/Utils.pm
-#usr/lib/perl5/5.30.0/Module/Load
-usr/lib/perl5/5.30.0/Module/Load.pm
-usr/lib/perl5/5.30.0/Module/Load/Conditional.pm
-usr/lib/perl5/5.30.0/Module/Loaded.pm
-usr/lib/perl5/5.30.0/Module/Metadata.pm
-usr/lib/perl5/5.30.0/NEXT.pm
-#usr/lib/perl5/5.30.0/Net
-usr/lib/perl5/5.30.0/Net/Cmd.pm
-usr/lib/perl5/5.30.0/Net/Config.pm
-usr/lib/perl5/5.30.0/Net/Domain.pm
-#usr/lib/perl5/5.30.0/Net/FTP
-usr/lib/perl5/5.30.0/Net/FTP.pm
-usr/lib/perl5/5.30.0/Net/FTP/A.pm
-usr/lib/perl5/5.30.0/Net/FTP/E.pm
-usr/lib/perl5/5.30.0/Net/FTP/I.pm
-usr/lib/perl5/5.30.0/Net/FTP/L.pm
-usr/lib/perl5/5.30.0/Net/FTP/dataconn.pm
-usr/lib/perl5/5.30.0/Net/NNTP.pm
-usr/lib/perl5/5.30.0/Net/Netrc.pm
-usr/lib/perl5/5.30.0/Net/POP3.pm
-usr/lib/perl5/5.30.0/Net/Ping.pm
-usr/lib/perl5/5.30.0/Net/SMTP.pm
-usr/lib/perl5/5.30.0/Net/Time.pm
-usr/lib/perl5/5.30.0/Net/hostent.pm
-usr/lib/perl5/5.30.0/Net/libnetFAQ.pod
-usr/lib/perl5/5.30.0/Net/netent.pm
-usr/lib/perl5/5.30.0/Net/protoent.pm
-usr/lib/perl5/5.30.0/Net/servent.pm
-#usr/lib/perl5/5.30.0/Params
-usr/lib/perl5/5.30.0/Params/Check.pm
-#usr/lib/perl5/5.30.0/Parse
-#usr/lib/perl5/5.30.0/Parse/CPAN
-#usr/lib/perl5/5.30.0/Parse/CPAN/Meta.pm
-#usr/lib/perl5/5.30.0/Perl
-usr/lib/perl5/5.30.0/Perl/OSType.pm
-#usr/lib/perl5/5.30.0/PerlIO
-usr/lib/perl5/5.30.0/PerlIO.pm
-#usr/lib/perl5/5.30.0/PerlIO/via
-usr/lib/perl5/5.30.0/PerlIO/via/QuotedPrint.pm
-usr/lib/perl5/5.30.0/Pod
-#usr/lib/perl5/5.30.0/Pod/Checker.pm
-#usr/lib/perl5/5.30.0/Pod/Escapes.pm
-#usr/lib/perl5/5.30.0/Pod/Find.pm
-#usr/lib/perl5/5.30.0/Pod/Functions.pm
-#usr/lib/perl5/5.30.0/Pod/Html.pm
-#usr/lib/perl5/5.30.0/Pod/InputObjects.pm
-#usr/lib/perl5/5.30.0/Pod/Man.pm
-#usr/lib/perl5/5.30.0/Pod/ParseLink.pm
-#usr/lib/perl5/5.30.0/Pod/ParseUtils.pm
-#usr/lib/perl5/5.30.0/Pod/Parser.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc
-#usr/lib/perl5/5.30.0/Pod/Perldoc.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/BaseTo.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/GetOptsOO.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToANSI.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToChecker.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToMan.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToNroff.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToPod.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToRtf.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToTerm.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToText.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToTk.pm
-#usr/lib/perl5/5.30.0/Pod/Perldoc/ToXml.pm
-#usr/lib/perl5/5.30.0/Pod/PlainText.pm
-#usr/lib/perl5/5.30.0/Pod/Select.pm
-#usr/lib/perl5/5.30.0/Pod/Simple
-#usr/lib/perl5/5.30.0/Pod/Simple.pm
-#usr/lib/perl5/5.30.0/Pod/Simple.pod
-#usr/lib/perl5/5.30.0/Pod/Simple/BlackBox.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/Checker.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/Debug.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/DumpAsText.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/DumpAsXML.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/HTML.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/HTMLBatch.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/HTMLLegacy.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/LinkSection.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/Methody.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/Progress.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/PullParser.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/PullParserEndToken.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/PullParserStartToken.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/PullParserTextToken.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/PullParserToken.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/RTF.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/Search.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/SimpleTree.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/Subclassing.pod
-#usr/lib/perl5/5.30.0/Pod/Simple/Text.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/TextContent.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/TiedOutFH.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/Transcode.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/TranscodeDumb.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/TranscodeSmart.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/XHTML.pm
-#usr/lib/perl5/5.30.0/Pod/Simple/XMLOutStream.pm
-#usr/lib/perl5/5.30.0/Pod/Text
-#usr/lib/perl5/5.30.0/Pod/Text.pm
-#usr/lib/perl5/5.30.0/Pod/Text/Color.pm
-#usr/lib/perl5/5.30.0/Pod/Text/Overstrike.pm
-#usr/lib/perl5/5.30.0/Pod/Text/Termcap.pm
-#usr/lib/perl5/5.30.0/Pod/Usage.pm
-usr/lib/perl5/5.30.0/Safe.pm
-#usr/lib/perl5/5.30.0/Search
-usr/lib/perl5/5.30.0/Search/Dict.pm
-usr/lib/perl5/5.30.0/SelectSaver.pm
-usr/lib/perl5/5.30.0/SelfLoader.pm
-usr/lib/perl5/5.30.0/Symbol.pm
-#usr/lib/perl5/5.30.0/TAP
-#usr/lib/perl5/5.30.0/TAP/Base.pm
-#usr/lib/perl5/5.30.0/TAP/Formatter
-#usr/lib/perl5/5.30.0/TAP/Formatter/Base.pm
-#usr/lib/perl5/5.30.0/TAP/Formatter/Color.pm
-#usr/lib/perl5/5.30.0/TAP/Formatter/Console
-#usr/lib/perl5/5.30.0/TAP/Formatter/Console.pm
-#usr/lib/perl5/5.30.0/TAP/Formatter/Console/ParallelSession.pm
-#usr/lib/perl5/5.30.0/TAP/Formatter/Console/Session.pm
-#usr/lib/perl5/5.30.0/TAP/Formatter/File
-#usr/lib/perl5/5.30.0/TAP/Formatter/File.pm
-#usr/lib/perl5/5.30.0/TAP/Formatter/File/Session.pm
-#usr/lib/perl5/5.30.0/TAP/Formatter/Session.pm
-#usr/lib/perl5/5.30.0/TAP/Harness
-#usr/lib/perl5/5.30.0/TAP/Harness.pm
-#usr/lib/perl5/5.30.0/TAP/Harness/Beyond.pod
-#usr/lib/perl5/5.30.0/TAP/Harness/Env.pm
-#usr/lib/perl5/5.30.0/TAP/Object.pm
-#usr/lib/perl5/5.30.0/TAP/Parser
-#usr/lib/perl5/5.30.0/TAP/Parser.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Aggregator.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Grammar.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Iterator
-#usr/lib/perl5/5.30.0/TAP/Parser/Iterator.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Iterator/Array.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Iterator/Process.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Iterator/Stream.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/IteratorFactory.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Multiplexer.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Result
-#usr/lib/perl5/5.30.0/TAP/Parser/Result.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Result/Bailout.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Result/Comment.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Result/Plan.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Result/Pragma.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Result/Test.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Result/Unknown.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Result/Version.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Result/YAML.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/ResultFactory.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Scheduler
-#usr/lib/perl5/5.30.0/TAP/Parser/Scheduler.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Scheduler/Job.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Scheduler/Spinner.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/Source.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/SourceHandler
-#usr/lib/perl5/5.30.0/TAP/Parser/SourceHandler.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/SourceHandler/Executable.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/SourceHandler/File.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/SourceHandler/Handle.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/SourceHandler/Perl.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/SourceHandler/RawTAP.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/YAMLish
-#usr/lib/perl5/5.30.0/TAP/Parser/YAMLish/Reader.pm
-#usr/lib/perl5/5.30.0/TAP/Parser/YAMLish/Writer.pm
-#usr/lib/perl5/5.30.0/Term
-usr/lib/perl5/5.30.0/Term/ANSIColor.pm
-usr/lib/perl5/5.30.0/Term/Cap.pm
-usr/lib/perl5/5.30.0/Term/Complete.pm
-usr/lib/perl5/5.30.0/Term/ReadLine.pm
-#usr/lib/perl5/5.30.0/Test
-#usr/lib/perl5/5.30.0/Test.pm
-#usr/lib/perl5/5.30.0/Test/Builder
-#usr/lib/perl5/5.30.0/Test/Builder.pm
-#usr/lib/perl5/5.30.0/Test/Builder/Formatter.pm
-#usr/lib/perl5/5.30.0/Test/Builder/IO
-#usr/lib/perl5/5.30.0/Test/Builder/IO/Scalar.pm
-#usr/lib/perl5/5.30.0/Test/Builder/Module.pm
-#usr/lib/perl5/5.30.0/Test/Builder/Tester
-#usr/lib/perl5/5.30.0/Test/Builder/Tester.pm
-#usr/lib/perl5/5.30.0/Test/Builder/Tester/Color.pm
-#usr/lib/perl5/5.30.0/Test/Builder/TodoDiag.pm
-#usr/lib/perl5/5.30.0/Test/Harness.pm
-#usr/lib/perl5/5.30.0/Test/More.pm
-#usr/lib/perl5/5.30.0/Test/Simple.pm
-#usr/lib/perl5/5.30.0/Test/Tester
-#usr/lib/perl5/5.30.0/Test/Tester.pm
-#usr/lib/perl5/5.30.0/Test/Tester/Capture.pm
-#usr/lib/perl5/5.30.0/Test/Tester/CaptureRunner.pm
-#usr/lib/perl5/5.30.0/Test/Tester/Delegate.pm
-#usr/lib/perl5/5.30.0/Test/Tutorial.pod
-#usr/lib/perl5/5.30.0/Test/use
-#usr/lib/perl5/5.30.0/Test/use/ok.pm
-#usr/lib/perl5/5.30.0/Test2
-#usr/lib/perl5/5.30.0/Test2.pm
-#usr/lib/perl5/5.30.0/Test2/API
-#usr/lib/perl5/5.30.0/Test2/API.pm
-#usr/lib/perl5/5.30.0/Test2/API/Breakage.pm
-#usr/lib/perl5/5.30.0/Test2/API/Context.pm
-#usr/lib/perl5/5.30.0/Test2/API/Instance.pm
-#usr/lib/perl5/5.30.0/Test2/API/Stack.pm
-#usr/lib/perl5/5.30.0/Test2/Event
-#usr/lib/perl5/5.30.0/Test2/Event.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Bail.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Diag.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Encoding.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Exception.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Fail.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Generic.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Note.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Ok.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Pass.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Plan.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Skip.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Subtest.pm
-#usr/lib/perl5/5.30.0/Test2/Event/TAP
-#usr/lib/perl5/5.30.0/Test2/Event/TAP/Version.pm
-#usr/lib/perl5/5.30.0/Test2/Event/V2.pm
-#usr/lib/perl5/5.30.0/Test2/Event/Waiting.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet
-#usr/lib/perl5/5.30.0/Test2/EventFacet.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/About.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Amnesty.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Assert.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Control.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Error.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Hub.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Info
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Info.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Info/Table.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Meta.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Parent.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Plan.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Render.pm
-#usr/lib/perl5/5.30.0/Test2/EventFacet/Trace.pm
-#usr/lib/perl5/5.30.0/Test2/Formatter
-#usr/lib/perl5/5.30.0/Test2/Formatter.pm
-#usr/lib/perl5/5.30.0/Test2/Formatter/TAP.pm
-#usr/lib/perl5/5.30.0/Test2/Hub
-#usr/lib/perl5/5.30.0/Test2/Hub.pm
-#usr/lib/perl5/5.30.0/Test2/Hub/Interceptor
-#usr/lib/perl5/5.30.0/Test2/Hub/Interceptor.pm
-#usr/lib/perl5/5.30.0/Test2/Hub/Interceptor/Terminator.pm
-#usr/lib/perl5/5.30.0/Test2/Hub/Subtest.pm
-#usr/lib/perl5/5.30.0/Test2/IPC
-#usr/lib/perl5/5.30.0/Test2/IPC.pm
-#usr/lib/perl5/5.30.0/Test2/IPC/Driver
-#usr/lib/perl5/5.30.0/Test2/IPC/Driver.pm
-#usr/lib/perl5/5.30.0/Test2/IPC/Driver/Files.pm
-#usr/lib/perl5/5.30.0/Test2/Tools
-#usr/lib/perl5/5.30.0/Test2/Tools/Tiny.pm
-#usr/lib/perl5/5.30.0/Test2/Transition.pod
-#usr/lib/perl5/5.30.0/Test2/Util
-#usr/lib/perl5/5.30.0/Test2/Util.pm
-#usr/lib/perl5/5.30.0/Test2/Util/ExternalMeta.pm
-#usr/lib/perl5/5.30.0/Test2/Util/Facets2Legacy.pm
-#usr/lib/perl5/5.30.0/Test2/Util/HashBase.pm
-#usr/lib/perl5/5.30.0/Test2/Util/Trace.pm
-#usr/lib/perl5/5.30.0/Text
-usr/lib/perl5/5.30.0/Text/Abbrev.pm
-usr/lib/perl5/5.30.0/Text/Balanced.pm
-usr/lib/perl5/5.30.0/Text/ParseWords.pm
-usr/lib/perl5/5.30.0/Text/Tabs.pm
-usr/lib/perl5/5.30.0/Text/Wrap.pm
-#usr/lib/perl5/5.30.0/Thread
-usr/lib/perl5/5.30.0/Thread.pm
-usr/lib/perl5/5.30.0/Thread/Queue.pm
-usr/lib/perl5/5.30.0/Thread/Semaphore.pm
-#usr/lib/perl5/5.30.0/Tie
-usr/lib/perl5/5.30.0/Tie/Array.pm
-usr/lib/perl5/5.30.0/Tie/File.pm
-usr/lib/perl5/5.30.0/Tie/Handle.pm
-usr/lib/perl5/5.30.0/Tie/Hash.pm
-usr/lib/perl5/5.30.0/Tie/Memoize.pm
-usr/lib/perl5/5.30.0/Tie/RefHash.pm
-usr/lib/perl5/5.30.0/Tie/Scalar.pm
-usr/lib/perl5/5.30.0/Tie/StdHandle.pm
-usr/lib/perl5/5.30.0/Tie/SubstrHash.pm
-#usr/lib/perl5/5.30.0/Time
-usr/lib/perl5/5.30.0/Time/Local.pm
-usr/lib/perl5/5.30.0/Time/gmtime.pm
-usr/lib/perl5/5.30.0/Time/localtime.pm
-usr/lib/perl5/5.30.0/Time/tm.pm
-usr/lib/perl5/5.30.0/UNIVERSAL.pm
-#usr/lib/perl5/5.30.0/Unicode
-#usr/lib/perl5/5.30.0/Unicode/Collate
-#usr/lib/perl5/5.30.0/Unicode/Collate/CJK
-usr/lib/perl5/5.30.0/Unicode/Collate/CJK/Big5.pm
-usr/lib/perl5/5.30.0/Unicode/Collate/CJK/GB2312.pm
-usr/lib/perl5/5.30.0/Unicode/Collate/CJK/JISX0208.pm
-usr/lib/perl5/5.30.0/Unicode/Collate/CJK/Korean.pm
-usr/lib/perl5/5.30.0/Unicode/Collate/CJK/Pinyin.pm
-usr/lib/perl5/5.30.0/Unicode/Collate/CJK/Stroke.pm
-usr/lib/perl5/5.30.0/Unicode/Collate/CJK/Zhuyin.pm
-#usr/lib/perl5/5.30.0/Unicode/Collate/Locale
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/af.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ar.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/as.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/az.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/be.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/bn.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ca.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/cs.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/cu.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/cy.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/da.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/de_at_ph.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/de_phone.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/dsb.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ee.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/eo.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/es.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/es_trad.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/et.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/fa.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/fi.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/fi_phone.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/fil.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/fo.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/fr_ca.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/gu.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ha.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/haw.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/he.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/hi.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/hr.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/hu.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/hy.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ig.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/is.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ja.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/kk.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/kl.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/kn.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ko.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/kok.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/lkt.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ln.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/lt.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/lv.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/mk.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ml.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/mr.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/mt.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/nb.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/nn.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/nso.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/om.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/or.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/pa.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/pl.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ro.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/sa.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/se.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/si.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/si_dict.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/sk.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/sl.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/sq.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/sr.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/sv.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/sv_refo.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ta.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/te.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/th.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/tn.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/to.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/tr.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ug_cyrl.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/uk.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/ur.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/vi.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/vo.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/wae.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/wo.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/yo.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/zh.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/zh_big5.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/zh_gb.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/zh_pin.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/zh_strk.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/Locale/zh_zhu.pl
-usr/lib/perl5/5.30.0/Unicode/Collate/allkeys.txt
-usr/lib/perl5/5.30.0/Unicode/Collate/keys.txt
-usr/lib/perl5/5.30.0/Unicode/UCD.pm
-#usr/lib/perl5/5.30.0/User
-usr/lib/perl5/5.30.0/User/grent.pm
-usr/lib/perl5/5.30.0/User/pwent.pm
-usr/lib/perl5/5.30.0/XSLoader.pm
-usr/lib/perl5/5.30.0/_charnames.pm
-#usr/lib/perl5/5.30.0/autodie
-usr/lib/perl5/5.30.0/autodie.pm
-#usr/lib/perl5/5.30.0/autodie/Scope
-usr/lib/perl5/5.30.0/autodie/Scope/Guard.pm
-usr/lib/perl5/5.30.0/autodie/Scope/GuardStack.pm
-usr/lib/perl5/5.30.0/autodie/Util.pm
-usr/lib/perl5/5.30.0/autodie/exception
-usr/lib/perl5/5.30.0/autodie/exception.pm
-usr/lib/perl5/5.30.0/autodie/exception/system.pm
-usr/lib/perl5/5.30.0/autodie/hints.pm
-usr/lib/perl5/5.30.0/autodie/skip.pm
-usr/lib/perl5/5.30.0/autouse.pm
-usr/lib/perl5/5.30.0/base.pm
-usr/lib/perl5/5.30.0/bigint.pm
-usr/lib/perl5/5.30.0/bignum.pm
-usr/lib/perl5/5.30.0/bigrat.pm
-usr/lib/perl5/5.30.0/blib.pm
-usr/lib/perl5/5.30.0/bytes.pm
-usr/lib/perl5/5.30.0/bytes_heavy.pl
-usr/lib/perl5/5.30.0/charnames.pm
-usr/lib/perl5/5.30.0/constant.pm
-usr/lib/perl5/5.30.0/deprecate.pm
-usr/lib/perl5/5.30.0/diagnostics.pm
-usr/lib/perl5/5.30.0/dumpvar.pl
-#usr/lib/perl5/5.30.0/encoding
-usr/lib/perl5/5.30.0/encoding/warnings.pm
-usr/lib/perl5/5.30.0/experimental.pm
-usr/lib/perl5/5.30.0/feature.pm
-usr/lib/perl5/5.30.0/fields.pm
-usr/lib/perl5/5.30.0/filetest.pm
-usr/lib/perl5/5.30.0/if.pm
-usr/lib/perl5/5.30.0/integer.pm
-usr/lib/perl5/5.30.0/less.pm
-usr/lib/perl5/5.30.0/locale.pm
-usr/lib/perl5/5.30.0/meta_notation.pm
-usr/lib/perl5/5.30.0/ok.pm
-usr/lib/perl5/5.30.0/open.pm
-#usr/lib/perl5/5.30.0/overload
-usr/lib/perl5/5.30.0/overload.pm
-usr/lib/perl5/5.30.0/overload/numbers.pm
-usr/lib/perl5/5.30.0/overloading.pm
-usr/lib/perl5/5.30.0/parent.pm
-usr/lib/perl5/5.30.0/perl5db.pl
-usr/lib/perl5/5.30.0/perlfaq.pm
-#usr/lib/perl5/5.30.0/pod
-#usr/lib/perl5/5.30.0/pod/perl.pod
-#usr/lib/perl5/5.30.0/pod/perl5004delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5005delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5100delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5101delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5120delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5121delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5122delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5123delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5124delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5125delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5140delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5141delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5142delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5143delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5144delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5160delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5161delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5162delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5163delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5180delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5181delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5182delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5184delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5200delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5201delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5202delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5203delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5220delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5221delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5222delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5223delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5224delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5240delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5241delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5242delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5243delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5244delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5260delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5261delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5262delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5263delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5280delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5281delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5282delta.pod
-#usr/lib/perl5/5.30.0/pod/perl5300delta.pod
-#usr/lib/perl5/5.30.0/pod/perl561delta.pod
-#usr/lib/perl5/5.30.0/pod/perl56delta.pod
-#usr/lib/perl5/5.30.0/pod/perl581delta.pod
-#usr/lib/perl5/5.30.0/pod/perl582delta.pod
-#usr/lib/perl5/5.30.0/pod/perl583delta.pod
-#usr/lib/perl5/5.30.0/pod/perl584delta.pod
-#usr/lib/perl5/5.30.0/pod/perl585delta.pod
-#usr/lib/perl5/5.30.0/pod/perl586delta.pod
-#usr/lib/perl5/5.30.0/pod/perl587delta.pod
-#usr/lib/perl5/5.30.0/pod/perl588delta.pod
-#usr/lib/perl5/5.30.0/pod/perl589delta.pod
-#usr/lib/perl5/5.30.0/pod/perl58delta.pod
-#usr/lib/perl5/5.30.0/pod/perlaix.pod
-#usr/lib/perl5/5.30.0/pod/perlamiga.pod
-#usr/lib/perl5/5.30.0/pod/perlandroid.pod
-#usr/lib/perl5/5.30.0/pod/perlapi.pod
-#usr/lib/perl5/5.30.0/pod/perlapio.pod
-#usr/lib/perl5/5.30.0/pod/perlartistic.pod
-#usr/lib/perl5/5.30.0/pod/perlbook.pod
-#usr/lib/perl5/5.30.0/pod/perlboot.pod
-#usr/lib/perl5/5.30.0/pod/perlbot.pod
-#usr/lib/perl5/5.30.0/pod/perlbs2000.pod
-#usr/lib/perl5/5.30.0/pod/perlcall.pod
-#usr/lib/perl5/5.30.0/pod/perlce.pod
-#usr/lib/perl5/5.30.0/pod/perlcheat.pod
-#usr/lib/perl5/5.30.0/pod/perlclib.pod
-#usr/lib/perl5/5.30.0/pod/perlcn.pod
-#usr/lib/perl5/5.30.0/pod/perlcommunity.pod
-#usr/lib/perl5/5.30.0/pod/perlcygwin.pod
-#usr/lib/perl5/5.30.0/pod/perldata.pod
-#usr/lib/perl5/5.30.0/pod/perldbmfilter.pod
-#usr/lib/perl5/5.30.0/pod/perldebguts.pod
-#usr/lib/perl5/5.30.0/pod/perldebtut.pod
-#usr/lib/perl5/5.30.0/pod/perldebug.pod
-#usr/lib/perl5/5.30.0/pod/perldelta.pod
-#usr/lib/perl5/5.30.0/pod/perldeprecation.pod
-#usr/lib/perl5/5.30.0/pod/perldiag.pod
-#usr/lib/perl5/5.30.0/pod/perldoc.pod
-#usr/lib/perl5/5.30.0/pod/perldos.pod
-#usr/lib/perl5/5.30.0/pod/perldsc.pod
-#usr/lib/perl5/5.30.0/pod/perldtrace.pod
-#usr/lib/perl5/5.30.0/pod/perlebcdic.pod
-#usr/lib/perl5/5.30.0/pod/perlembed.pod
-#usr/lib/perl5/5.30.0/pod/perlexperiment.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq1.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq2.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq3.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq4.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq5.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq6.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq7.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq8.pod
-#usr/lib/perl5/5.30.0/pod/perlfaq9.pod
-#usr/lib/perl5/5.30.0/pod/perlfilter.pod
-#usr/lib/perl5/5.30.0/pod/perlfork.pod
-#usr/lib/perl5/5.30.0/pod/perlform.pod
-#usr/lib/perl5/5.30.0/pod/perlfreebsd.pod
-#usr/lib/perl5/5.30.0/pod/perlfunc.pod
-#usr/lib/perl5/5.30.0/pod/perlgit.pod
-#usr/lib/perl5/5.30.0/pod/perlglossary.pod
-#usr/lib/perl5/5.30.0/pod/perlgpl.pod
-#usr/lib/perl5/5.30.0/pod/perlguts.pod
-#usr/lib/perl5/5.30.0/pod/perlhack.pod
-#usr/lib/perl5/5.30.0/pod/perlhacktips.pod
-#usr/lib/perl5/5.30.0/pod/perlhacktut.pod
-#usr/lib/perl5/5.30.0/pod/perlhaiku.pod
-#usr/lib/perl5/5.30.0/pod/perlhist.pod
-#usr/lib/perl5/5.30.0/pod/perlhpux.pod
-#usr/lib/perl5/5.30.0/pod/perlhurd.pod
-#usr/lib/perl5/5.30.0/pod/perlintern.pod
-#usr/lib/perl5/5.30.0/pod/perlinterp.pod
-#usr/lib/perl5/5.30.0/pod/perlintro.pod
-#usr/lib/perl5/5.30.0/pod/perliol.pod
-#usr/lib/perl5/5.30.0/pod/perlipc.pod
-#usr/lib/perl5/5.30.0/pod/perlirix.pod
-#usr/lib/perl5/5.30.0/pod/perljp.pod
-#usr/lib/perl5/5.30.0/pod/perlko.pod
-#usr/lib/perl5/5.30.0/pod/perllexwarn.pod
-#usr/lib/perl5/5.30.0/pod/perllinux.pod
-#usr/lib/perl5/5.30.0/pod/perllocale.pod
-#usr/lib/perl5/5.30.0/pod/perllol.pod
-#usr/lib/perl5/5.30.0/pod/perlmacos.pod
-#usr/lib/perl5/5.30.0/pod/perlmacosx.pod
-#usr/lib/perl5/5.30.0/pod/perlmod.pod
-#usr/lib/perl5/5.30.0/pod/perlmodinstall.pod
-#usr/lib/perl5/5.30.0/pod/perlmodlib.pod
-#usr/lib/perl5/5.30.0/pod/perlmodstyle.pod
-#usr/lib/perl5/5.30.0/pod/perlmroapi.pod
-#usr/lib/perl5/5.30.0/pod/perlnetware.pod
-#usr/lib/perl5/5.30.0/pod/perlnewmod.pod
-#usr/lib/perl5/5.30.0/pod/perlnumber.pod
-#usr/lib/perl5/5.30.0/pod/perlobj.pod
-#usr/lib/perl5/5.30.0/pod/perlootut.pod
-#usr/lib/perl5/5.30.0/pod/perlop.pod
-#usr/lib/perl5/5.30.0/pod/perlopenbsd.pod
-#usr/lib/perl5/5.30.0/pod/perlopentut.pod
-#usr/lib/perl5/5.30.0/pod/perlos2.pod
-#usr/lib/perl5/5.30.0/pod/perlos390.pod
-#usr/lib/perl5/5.30.0/pod/perlos400.pod
-#usr/lib/perl5/5.30.0/pod/perlpacktut.pod
-#usr/lib/perl5/5.30.0/pod/perlperf.pod
-#usr/lib/perl5/5.30.0/pod/perlplan9.pod
-#usr/lib/perl5/5.30.0/pod/perlpod.pod
-#usr/lib/perl5/5.30.0/pod/perlpodspec.pod
-#usr/lib/perl5/5.30.0/pod/perlpodstyle.pod
-#usr/lib/perl5/5.30.0/pod/perlpolicy.pod
-#usr/lib/perl5/5.30.0/pod/perlport.pod
-#usr/lib/perl5/5.30.0/pod/perlpragma.pod
-#usr/lib/perl5/5.30.0/pod/perlqnx.pod
-#usr/lib/perl5/5.30.0/pod/perlre.pod
-#usr/lib/perl5/5.30.0/pod/perlreapi.pod
-#usr/lib/perl5/5.30.0/pod/perlrebackslash.pod
-#usr/lib/perl5/5.30.0/pod/perlrecharclass.pod
-#usr/lib/perl5/5.30.0/pod/perlref.pod
-#usr/lib/perl5/5.30.0/pod/perlreftut.pod
-#usr/lib/perl5/5.30.0/pod/perlreguts.pod
-#usr/lib/perl5/5.30.0/pod/perlrepository.pod
-#usr/lib/perl5/5.30.0/pod/perlrequick.pod
-#usr/lib/perl5/5.30.0/pod/perlreref.pod
-#usr/lib/perl5/5.30.0/pod/perlretut.pod
-#usr/lib/perl5/5.30.0/pod/perlriscos.pod
-#usr/lib/perl5/5.30.0/pod/perlrun.pod
-#usr/lib/perl5/5.30.0/pod/perlsec.pod
-#usr/lib/perl5/5.30.0/pod/perlsolaris.pod
-#usr/lib/perl5/5.30.0/pod/perlsource.pod
-#usr/lib/perl5/5.30.0/pod/perlstyle.pod
-#usr/lib/perl5/5.30.0/pod/perlsub.pod
-#usr/lib/perl5/5.30.0/pod/perlsymbian.pod
-#usr/lib/perl5/5.30.0/pod/perlsyn.pod
-#usr/lib/perl5/5.30.0/pod/perlsynology.pod
-#usr/lib/perl5/5.30.0/pod/perlthrtut.pod
-#usr/lib/perl5/5.30.0/pod/perltie.pod
-#usr/lib/perl5/5.30.0/pod/perltoc.pod
-#usr/lib/perl5/5.30.0/pod/perltodo.pod
-#usr/lib/perl5/5.30.0/pod/perltooc.pod
-#usr/lib/perl5/5.30.0/pod/perltoot.pod
-#usr/lib/perl5/5.30.0/pod/perltrap.pod
-#usr/lib/perl5/5.30.0/pod/perltru64.pod
-#usr/lib/perl5/5.30.0/pod/perltw.pod
-#usr/lib/perl5/5.30.0/pod/perlunicode.pod
-#usr/lib/perl5/5.30.0/pod/perlunicook.pod
-#usr/lib/perl5/5.30.0/pod/perlunifaq.pod
-#usr/lib/perl5/5.30.0/pod/perluniintro.pod
-#usr/lib/perl5/5.30.0/pod/perluniprops.pod
-#usr/lib/perl5/5.30.0/pod/perlunitut.pod
-#usr/lib/perl5/5.30.0/pod/perlutil.pod
-#usr/lib/perl5/5.30.0/pod/perlvar.pod
-#usr/lib/perl5/5.30.0/pod/perlvms.pod
-#usr/lib/perl5/5.30.0/pod/perlvos.pod
-#usr/lib/perl5/5.30.0/pod/perlwin32.pod
-#usr/lib/perl5/5.30.0/pod/perlxs.pod
-#usr/lib/perl5/5.30.0/pod/perlxstut.pod
-#usr/lib/perl5/5.30.0/pod/perlxstypemap.pod
-usr/lib/perl5/5.30.0/sigtrap.pm
-usr/lib/perl5/5.30.0/sort.pm
-usr/lib/perl5/5.30.0/strict.pm
-usr/lib/perl5/5.30.0/subs.pm
-#usr/lib/perl5/5.30.0/unicore
-usr/lib/perl5/5.30.0/unicore/Blocks.txt
-usr/lib/perl5/5.30.0/unicore/CombiningClass.pl
-usr/lib/perl5/5.30.0/unicore/Decomposition.pl
-usr/lib/perl5/5.30.0/unicore/Heavy.pl
-usr/lib/perl5/5.30.0/unicore/Name.pl
-usr/lib/perl5/5.30.0/unicore/Name.pm
-usr/lib/perl5/5.30.0/unicore/NamedSequences.txt
-usr/lib/perl5/5.30.0/unicore/SpecialCasing.txt
-#usr/lib/perl5/5.30.0/unicore/To
-usr/lib/perl5/5.30.0/unicore/To/Age.pl
-usr/lib/perl5/5.30.0/unicore/To/Bc.pl
-usr/lib/perl5/5.30.0/unicore/To/Bmg.pl
-usr/lib/perl5/5.30.0/unicore/To/Bpb.pl
-usr/lib/perl5/5.30.0/unicore/To/Bpt.pl
-usr/lib/perl5/5.30.0/unicore/To/Cf.pl
-usr/lib/perl5/5.30.0/unicore/To/Digit.pl
-usr/lib/perl5/5.30.0/unicore/To/Ea.pl
-usr/lib/perl5/5.30.0/unicore/To/EqUIdeo.pl
-usr/lib/perl5/5.30.0/unicore/To/Fold.pl
-usr/lib/perl5/5.30.0/unicore/To/GCB.pl
-usr/lib/perl5/5.30.0/unicore/To/Gc.pl
-usr/lib/perl5/5.30.0/unicore/To/Hst.pl
-usr/lib/perl5/5.30.0/unicore/To/InPC.pl
-usr/lib/perl5/5.30.0/unicore/To/InSC.pl
-usr/lib/perl5/5.30.0/unicore/To/Isc.pl
-usr/lib/perl5/5.30.0/unicore/To/Jg.pl
-usr/lib/perl5/5.30.0/unicore/To/Jt.pl
-usr/lib/perl5/5.30.0/unicore/To/Lb.pl
-usr/lib/perl5/5.30.0/unicore/To/Lc.pl
-usr/lib/perl5/5.30.0/unicore/To/Lower.pl
-usr/lib/perl5/5.30.0/unicore/To/NFCQC.pl
-usr/lib/perl5/5.30.0/unicore/To/NFDQC.pl
-usr/lib/perl5/5.30.0/unicore/To/NFKCCF.pl
-usr/lib/perl5/5.30.0/unicore/To/NFKCQC.pl
-usr/lib/perl5/5.30.0/unicore/To/NFKDQC.pl
-usr/lib/perl5/5.30.0/unicore/To/Na1.pl
-usr/lib/perl5/5.30.0/unicore/To/NameAlia.pl
-usr/lib/perl5/5.30.0/unicore/To/Nt.pl
-usr/lib/perl5/5.30.0/unicore/To/Nv.pl
-usr/lib/perl5/5.30.0/unicore/To/PerlDeci.pl
-usr/lib/perl5/5.30.0/unicore/To/SB.pl
-usr/lib/perl5/5.30.0/unicore/To/Sc.pl
-usr/lib/perl5/5.30.0/unicore/To/Scx.pl
-usr/lib/perl5/5.30.0/unicore/To/Tc.pl
-usr/lib/perl5/5.30.0/unicore/To/Title.pl
-usr/lib/perl5/5.30.0/unicore/To/Uc.pl
-usr/lib/perl5/5.30.0/unicore/To/Upper.pl
-usr/lib/perl5/5.30.0/unicore/To/Vo.pl
-usr/lib/perl5/5.30.0/unicore/To/WB.pl
-usr/lib/perl5/5.30.0/unicore/To/_PerlLB.pl
-usr/lib/perl5/5.30.0/unicore/To/_PerlSCX.pl
-usr/lib/perl5/5.30.0/unicore/UCD.pl
-#usr/lib/perl5/5.30.0/unicore/lib
-#usr/lib/perl5/5.30.0/unicore/lib/Age
-usr/lib/perl5/5.30.0/unicore/lib/Age/NA.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V100.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V11.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V110.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V120.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V20.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V30.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V31.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V32.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V40.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V41.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V50.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V51.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V52.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V60.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V61.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V70.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V80.pl
-usr/lib/perl5/5.30.0/unicore/lib/Age/V90.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Alpha
-usr/lib/perl5/5.30.0/unicore/lib/Alpha/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Bc
-usr/lib/perl5/5.30.0/unicore/lib/Bc/AL.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/AN.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/B.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/BN.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/CS.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/EN.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/ES.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/ET.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/L.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/NSM.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/ON.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/R.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bc/WS.pl
-#usr/lib/perl5/5.30.0/unicore/lib/BidiC
-usr/lib/perl5/5.30.0/unicore/lib/BidiC/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/BidiM
-usr/lib/perl5/5.30.0/unicore/lib/BidiM/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Blk
-usr/lib/perl5/5.30.0/unicore/lib/Blk/NB.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Bpt
-usr/lib/perl5/5.30.0/unicore/lib/Bpt/C.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bpt/N.pl
-usr/lib/perl5/5.30.0/unicore/lib/Bpt/O.pl
-#usr/lib/perl5/5.30.0/unicore/lib/CE
-usr/lib/perl5/5.30.0/unicore/lib/CE/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/CI
-usr/lib/perl5/5.30.0/unicore/lib/CI/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/CWCF
-usr/lib/perl5/5.30.0/unicore/lib/CWCF/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/CWCM
-usr/lib/perl5/5.30.0/unicore/lib/CWCM/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/CWKCF
-usr/lib/perl5/5.30.0/unicore/lib/CWKCF/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/CWL
-usr/lib/perl5/5.30.0/unicore/lib/CWL/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/CWT
-usr/lib/perl5/5.30.0/unicore/lib/CWT/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/CWU
-usr/lib/perl5/5.30.0/unicore/lib/CWU/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Cased
-usr/lib/perl5/5.30.0/unicore/lib/Cased/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Ccc
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/A.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/AL.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/AR.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/ATAR.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/B.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/BR.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/DB.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/NK.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/NR.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/OV.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ccc/VR.pl
-#usr/lib/perl5/5.30.0/unicore/lib/CompEx
-usr/lib/perl5/5.30.0/unicore/lib/CompEx/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/DI
-usr/lib/perl5/5.30.0/unicore/lib/DI/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Dash
-usr/lib/perl5/5.30.0/unicore/lib/Dash/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Dep
-usr/lib/perl5/5.30.0/unicore/lib/Dep/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Dia
-usr/lib/perl5/5.30.0/unicore/lib/Dia/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Dt
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Com.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Enc.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Fin.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Font.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Init.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Iso.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Med.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Nar.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Nb.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/NonCanon.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Sqr.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Sub.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Sup.pl
-usr/lib/perl5/5.30.0/unicore/lib/Dt/Vert.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Ea
-usr/lib/perl5/5.30.0/unicore/lib/Ea/A.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ea/H.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ea/N.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ea/Na.pl
-usr/lib/perl5/5.30.0/unicore/lib/Ea/W.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Ext
-usr/lib/perl5/5.30.0/unicore/lib/Ext/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/GCB
-usr/lib/perl5/5.30.0/unicore/lib/GCB/CN.pl
-usr/lib/perl5/5.30.0/unicore/lib/GCB/EX.pl
-usr/lib/perl5/5.30.0/unicore/lib/GCB/LV.pl
-usr/lib/perl5/5.30.0/unicore/lib/GCB/LVT.pl
-usr/lib/perl5/5.30.0/unicore/lib/GCB/PP.pl
-usr/lib/perl5/5.30.0/unicore/lib/GCB/SM.pl
-usr/lib/perl5/5.30.0/unicore/lib/GCB/XX.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Gc
-usr/lib/perl5/5.30.0/unicore/lib/Gc/C.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Cf.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Cn.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/L.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/LC.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Ll.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Lm.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Lo.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Lu.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/M.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Mc.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Me.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Mn.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/N.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Nd.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Nl.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/No.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/P.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Pc.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Pd.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Pe.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Pf.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Pi.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Po.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Ps.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/S.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Sc.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Sk.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Sm.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/So.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Z.pl
-usr/lib/perl5/5.30.0/unicore/lib/Gc/Zs.pl
-#usr/lib/perl5/5.30.0/unicore/lib/GrBase
-usr/lib/perl5/5.30.0/unicore/lib/GrBase/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/GrExt
-usr/lib/perl5/5.30.0/unicore/lib/GrExt/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Hex
-usr/lib/perl5/5.30.0/unicore/lib/Hex/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Hst
-usr/lib/perl5/5.30.0/unicore/lib/Hst/NA.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Hyphen
-usr/lib/perl5/5.30.0/unicore/lib/Hyphen/T.pl
-#usr/lib/perl5/5.30.0/unicore/lib/IDC
-usr/lib/perl5/5.30.0/unicore/lib/IDC/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/IDS
-usr/lib/perl5/5.30.0/unicore/lib/IDS/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Ideo
-usr/lib/perl5/5.30.0/unicore/lib/Ideo/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/In
-usr/lib/perl5/5.30.0/unicore/lib/In/10_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/11_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/12_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/12_1.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/2_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/2_1.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/3_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/3_1.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/3_2.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/4_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/4_1.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/5_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/5_1.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/5_2.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/6_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/6_1.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/6_2.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/6_3.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/7_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/8_0.pl
-usr/lib/perl5/5.30.0/unicore/lib/In/9_0.pl
-#usr/lib/perl5/5.30.0/unicore/lib/InPC
-usr/lib/perl5/5.30.0/unicore/lib/InPC/Bottom.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/Left.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/LeftAndR.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/NA.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/Overstru.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/Right.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/Top.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/TopAndBo.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/TopAndL2.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/TopAndLe.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/TopAndRi.pl
-usr/lib/perl5/5.30.0/unicore/lib/InPC/VisualOr.pl
-#usr/lib/perl5/5.30.0/unicore/lib/InSC
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Avagraha.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Bindu.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Cantilla.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Consona2.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Consona3.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Consona4.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Consona5.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Consona6.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Consona7.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Consonan.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Invisibl.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Nukta.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Number.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Other.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/PureKill.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Syllable.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/ToneMark.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Virama.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Visarga.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/Vowel.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/VowelDep.pl
-usr/lib/perl5/5.30.0/unicore/lib/InSC/VowelInd.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Jg
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Ain.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Alef.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Beh.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Dal.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/FarsiYeh.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Feh.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Gaf.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Hah.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/HanifiRo.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Kaf.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Lam.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/NoJoinin.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Qaf.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Reh.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Sad.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Seen.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Waw.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jg/Yeh.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Jt
-usr/lib/perl5/5.30.0/unicore/lib/Jt/C.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jt/D.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jt/L.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jt/R.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jt/T.pl
-usr/lib/perl5/5.30.0/unicore/lib/Jt/U.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Lb
-usr/lib/perl5/5.30.0/unicore/lib/Lb/AI.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/AL.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/BA.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/BB.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/CJ.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/CL.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/CM.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/EB.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/EX.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/GL.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/ID.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/IN.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/IS.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/NS.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/NU.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/OP.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/PO.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/PR.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/QU.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/SA.pl
-usr/lib/perl5/5.30.0/unicore/lib/Lb/XX.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Lower
-usr/lib/perl5/5.30.0/unicore/lib/Lower/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Math
-usr/lib/perl5/5.30.0/unicore/lib/Math/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/NFCQC
-usr/lib/perl5/5.30.0/unicore/lib/NFCQC/M.pl
-usr/lib/perl5/5.30.0/unicore/lib/NFCQC/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/NFDQC
-usr/lib/perl5/5.30.0/unicore/lib/NFDQC/N.pl
-usr/lib/perl5/5.30.0/unicore/lib/NFDQC/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/NFKCQC
-usr/lib/perl5/5.30.0/unicore/lib/NFKCQC/N.pl
-usr/lib/perl5/5.30.0/unicore/lib/NFKCQC/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/NFKDQC
-usr/lib/perl5/5.30.0/unicore/lib/NFKDQC/N.pl
-usr/lib/perl5/5.30.0/unicore/lib/NFKDQC/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Nt
-usr/lib/perl5/5.30.0/unicore/lib/Nt/Di.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nt/None.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nt/Nu.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Nv
-usr/lib/perl5/5.30.0/unicore/lib/Nv/0.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/1.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/10.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/100.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/1000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/10000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/100000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/11.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/12.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/13.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/14.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/15.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/16.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/17.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/18.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/19.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/1_16.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/1_2.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/1_3.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/1_4.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/1_6.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/1_8.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/2.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/20.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/200.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/2000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/20000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/2_3.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/3.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/30.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/300.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/3000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/30000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/3_16.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/3_4.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/4.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/40.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/400.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/4000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/40000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/5.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/50.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/500.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/5000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/50000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/6.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/60.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/600.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/6000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/60000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/7.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/70.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/700.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/7000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/70000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/8.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/80.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/800.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/8000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/80000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/9.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/90.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/900.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/9000.pl
-usr/lib/perl5/5.30.0/unicore/lib/Nv/90000.pl
-#usr/lib/perl5/5.30.0/unicore/lib/PCM
-usr/lib/perl5/5.30.0/unicore/lib/PCM/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/PatSyn
-usr/lib/perl5/5.30.0/unicore/lib/PatSyn/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Perl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/Alnum.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/Assigned.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/Blank.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/Graph.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/PerlWord.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/PosixPun.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/Print.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/SpacePer.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/Title.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/Word.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/XPosixPu.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlAny.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlCh2.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlCha.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlFol.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlIDC.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlIDS.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlIsI.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlNch.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlNon.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlPat.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlPr2.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlPro.pl
-usr/lib/perl5/5.30.0/unicore/lib/Perl/_PerlQuo.pl
-#usr/lib/perl5/5.30.0/unicore/lib/QMark
-usr/lib/perl5/5.30.0/unicore/lib/QMark/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/SB
-usr/lib/perl5/5.30.0/unicore/lib/SB/AT.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/CL.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/EX.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/FO.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/LE.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/LO.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/NU.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/SC.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/ST.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/Sp.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/UP.pl
-usr/lib/perl5/5.30.0/unicore/lib/SB/XX.pl
-#usr/lib/perl5/5.30.0/unicore/lib/SD
-usr/lib/perl5/5.30.0/unicore/lib/SD/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/STerm
-usr/lib/perl5/5.30.0/unicore/lib/STerm/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Sc
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Arab.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Armn.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Beng.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Cprt.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Cyrl.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Deva.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Dupl.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Geor.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Glag.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Gong.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Gonm.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Gran.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Grek.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Gujr.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Guru.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Han.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Hang.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Hira.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Kana.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Knda.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Latn.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Limb.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Linb.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Mlym.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Mong.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Mult.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Orya.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Sinh.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Syrc.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Taml.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Telu.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Zinh.pl
-usr/lib/perl5/5.30.0/unicore/lib/Sc/Zyyy.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Scx
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Adlm.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Arab.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Armn.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Beng.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Bhks.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Bopo.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Cakm.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Cham.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Copt.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Cprt.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Cyrl.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Deva.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Dupl.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Ethi.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Geor.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Glag.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Gong.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Gonm.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Gran.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Grek.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Gujr.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Guru.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Han.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Hang.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Hebr.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Hira.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Hmng.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Hmnp.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Kana.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Khar.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Khmr.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Khoj.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Knda.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Kthi.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Lana.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Lao.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Latn.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Limb.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Lina.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Linb.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Mlym.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Mong.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Mult.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Mymr.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Nand.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Orya.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Phlp.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Rohg.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Shrd.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Sind.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Sinh.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Syrc.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Tagb.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Takr.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Talu.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Taml.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Telu.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Thaa.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Tibt.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Tirh.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Xsux.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Yi.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Zinh.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Zyyy.pl
-usr/lib/perl5/5.30.0/unicore/lib/Scx/Zzzz.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Term
-usr/lib/perl5/5.30.0/unicore/lib/Term/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/UIdeo
-usr/lib/perl5/5.30.0/unicore/lib/UIdeo/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Upper
-usr/lib/perl5/5.30.0/unicore/lib/Upper/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/Vo
-usr/lib/perl5/5.30.0/unicore/lib/Vo/R.pl
-usr/lib/perl5/5.30.0/unicore/lib/Vo/Tr.pl
-usr/lib/perl5/5.30.0/unicore/lib/Vo/Tu.pl
-usr/lib/perl5/5.30.0/unicore/lib/Vo/U.pl
-#usr/lib/perl5/5.30.0/unicore/lib/WB
-usr/lib/perl5/5.30.0/unicore/lib/WB/EX.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/Extend.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/FO.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/HL.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/KA.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/LE.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/MB.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/ML.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/MN.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/NU.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/WSegSpac.pl
-usr/lib/perl5/5.30.0/unicore/lib/WB/XX.pl
-#usr/lib/perl5/5.30.0/unicore/lib/XIDC
-usr/lib/perl5/5.30.0/unicore/lib/XIDC/Y.pl
-#usr/lib/perl5/5.30.0/unicore/lib/XIDS
-usr/lib/perl5/5.30.0/unicore/lib/XIDS/Y.pl
-usr/lib/perl5/5.30.0/unicore/uni_keywords.pl
-usr/lib/perl5/5.30.0/unicore/version
-usr/lib/perl5/5.30.0/utf8.pm
-usr/lib/perl5/5.30.0/utf8_heavy.pl
-usr/lib/perl5/5.30.0/vars.pm
-#usr/lib/perl5/5.30.0/version
-usr/lib/perl5/5.30.0/version.pm
-usr/lib/perl5/5.30.0/version.pod
-usr/lib/perl5/5.30.0/version/Internals.pod
-usr/lib/perl5/5.30.0/version/regex.pm
-usr/lib/perl5/5.30.0/vmsish.pm
-#usr/lib/perl5/5.30.0/warnings
-usr/lib/perl5/5.30.0/warnings.pm
-usr/lib/perl5/5.30.0/warnings/register.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/.packlist
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/B
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/B.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/B/Concise.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/B/Showlex.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/B/Terse.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/B/Xref.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/EXTERN.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/INTERN.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/XSUB.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/av.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/bitcount.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/charclass_invlists.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/config.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/cop.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/cv.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/dosish.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/dquote_inline.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/ebcdic_tables.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/embed.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/embedvar.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/fakesdio.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/feature.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/form.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/git_version.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/gv.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/handy.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/hv.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/hv_func.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/hv_macro.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/inline.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/intrpvar.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/invlist_inline.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/iperlsys.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/keywords.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/l1_char_class_tab.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/libperl.a
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/malloc_ctl.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/metaconfig.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/mg.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/mg_data.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/mg_raw.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/mg_vtable.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/mydtrace.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/nostdio.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/op.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/op_reg_common.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/opcode.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/opnames.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/overload.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/pad.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/parser.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/patchlevel.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/perl.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/perl_inc_macro.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/perl_langinfo.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/perlapi.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/perlio.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/perliol.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/perlsdio.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/perlvars.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/perly.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/pp.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/pp_proto.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/proto.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/reentr.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/regcharclass.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/regcomp.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/regexp.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/regnodes.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/sbox32_hash.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/scope.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/stadtx_hash.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/sv.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/thread.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/time64.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/time64_config.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/uconfig.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/uni_keywords.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/unicode_constants.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/unixish.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/utf8.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/utfebcdic.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/util.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/uudmap.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/vutil.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/warnings.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/CORE/zaphod32_hash.h
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Compress
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Compress/Raw
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Compress/Raw/Bzip2.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Compress/Raw/Zlib.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Config.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Config.pod
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Config_git.pl
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Config_heavy.pl
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Cwd.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/DB_File.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Data
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Data/Dumper.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Devel
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Devel/PPPort.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Devel/Peek.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Digest
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Digest/MD5.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Digest/SHA.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/DynaLoader.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Alias.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Byte.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/CJKConstants.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/CN
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/CN.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/CN/HZ.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Config.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/EBCDIC.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Encoder.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Encoding.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/GSM0338.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Guess.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/JP
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/JP.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/JP/H2Z.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/JP/JIS7.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/KR
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/KR.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/KR/2022_KR.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/MIME
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/MIME/Header
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/MIME/Header.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/MIME/Header/ISO_2022_JP.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/MIME/Name.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Symbol.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/TW.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Unicode
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Unicode.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Encode/Unicode/UTF7.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Errno.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Fcntl.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/DosGlob.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Glob.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec/AmigaOS.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec/Cygwin.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec/Epoc.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec/Functions.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec/Mac.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec/OS2.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec/Unix.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec/VMS.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/File/Spec/Win32.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Filter
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Filter/Util
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Filter/Util/Call.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Hash
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Hash/Util
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Hash/Util.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Hash/Util/FieldHash.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/I18N
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/I18N/Langinfo.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Dir.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/File.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Handle.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Pipe.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Poll.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Seekable.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Select.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Socket
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Socket.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Socket/INET.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IO/Socket/UNIX.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IPC
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IPC/Msg.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IPC/Semaphore.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IPC/SharedMem.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/IPC/SysV.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/List
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/List/Util
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/List/Util.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/List/Util/XS.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/MIME
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/MIME/Base64.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/MIME/QuotedPrint.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Math
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Math/BigInt
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Math/BigInt/FastCalc.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/O.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Opcode.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/POSIX.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/POSIX.pod
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/PerlIO
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/PerlIO/encoding.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/PerlIO/mmap.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/PerlIO/scalar.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/PerlIO/via.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/SDBM_File.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Scalar
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Scalar/Util.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Socket.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Storable.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Sub
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Sub/Util.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Sys
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Sys/Hostname.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Sys/Syslog.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Tie
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Tie/Hash
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Tie/Hash/NamedCapture.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Time
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Time/HiRes.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Time/Piece.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Time/Seconds.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Unicode
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Unicode/Collate
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Unicode/Collate.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Unicode/Collate/Locale.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/Unicode/Normalize.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/attributes.pm
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/B
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/B/B.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw/Bzip2
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw/Bzip2/Bzip2.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw/Zlib
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw/Zlib/Zlib.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Cwd
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Cwd/Cwd.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DB_File
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DB_File/DB_File.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Data
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Data/Dumper
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Data/Dumper/Dumper.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Devel
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Devel/Peek
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Devel/Peek/Peek.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/MD5
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/MD5/MD5.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA/SHA.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/Byte
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/Byte/Byte.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/CN
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/CN/CN.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/EBCDIC
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/EBCDIC/EBCDIC.so
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/Encode.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/JP
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/JP/JP.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/KR
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/KR/KR.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/Symbol
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/Symbol/Symbol.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/TW
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/TW/TW.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/Unicode
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Encode/Unicode/Unicode.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Fcntl
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Fcntl/Fcntl.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File/DosGlob
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File/DosGlob/DosGlob.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File/Glob
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File/Glob/Glob.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Filter
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Filter/Util
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Filter/Util/Call
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Filter/Util/Call/Call.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Hash
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Hash/Util
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Hash/Util/FieldHash
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Hash/Util/FieldHash/FieldHash.so
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Hash/Util/Util.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/I18N
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/I18N/Langinfo
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/I18N/Langinfo/Langinfo.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO/IO.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IPC
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IPC/SysV
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IPC/SysV/SysV.so
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/List
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/List/Util
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/List/Util/Util.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64/Base64.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Math
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Math/BigInt
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Math/BigInt/FastCalc
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Math/BigInt/FastCalc/FastCalc.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Opcode
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Opcode/Opcode.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/POSIX
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/POSIX/POSIX.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PerlIO
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/encoding
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/encoding/encoding.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/mmap
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/mmap/mmap.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/scalar
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/scalar/scalar.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/via
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/via/via.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/SDBM_File
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/SDBM_File/SDBM_File.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Socket
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Socket/Socket.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Storable
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Storable/Storable.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Sys
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Sys/Hostname
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Sys/Hostname/Hostname.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Sys/Syslog
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Sys/Syslog/Syslog.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Tie
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Tie/Hash
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Tie/Hash/NamedCapture
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Tie/Hash/NamedCapture/NamedCapture.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Time
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Time/HiRes
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Time/HiRes/HiRes.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Time/Piece
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Time/Piece/Piece.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unicode
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unicode/Collate
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unicode/Collate/Collate.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unicode/Normalize
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Unicode/Normalize/Normalize.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/attributes
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/attributes/attributes.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/mro
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/mro/mro.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/re
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/re/re.so
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/threads
-#usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/threads/shared
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/threads/shared/shared.so
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/threads/threads.so
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/encoding.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/lib.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/mro.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/ops.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/re.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads.pm
-usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
+#usr/lib/perl5/5.32.1
+usr/lib/perl5/5.32.1/AnyDBM_File.pm
+#usr/lib/perl5/5.32.1/App
+#usr/lib/perl5/5.32.1/App/Cpan.pm
+#usr/lib/perl5/5.32.1/App/Prove
+#usr/lib/perl5/5.32.1/App/Prove.pm
+#usr/lib/perl5/5.32.1/App/Prove/State
+#usr/lib/perl5/5.32.1/App/Prove/State.pm
+#usr/lib/perl5/5.32.1/App/Prove/State/Result
+#usr/lib/perl5/5.32.1/App/Prove/State/Result.pm
+#usr/lib/perl5/5.32.1/App/Prove/State/Result/Test.pm
+#usr/lib/perl5/5.32.1/Archive
+#usr/lib/perl5/5.32.1/Archive/Tar
+#usr/lib/perl5/5.32.1/Archive/Tar.pm
+#usr/lib/perl5/5.32.1/Archive/Tar/Constant.pm
+#usr/lib/perl5/5.32.1/Archive/Tar/File.pm
+#usr/lib/perl5/5.32.1/Attribute
+usr/lib/perl5/5.32.1/Attribute/Handlers.pm
+usr/lib/perl5/5.32.1/AutoLoader.pm
+usr/lib/perl5/5.32.1/AutoSplit.pm
+#usr/lib/perl5/5.32.1/B
+#usr/lib/perl5/5.32.1/B/Deparse.pm
+#usr/lib/perl5/5.32.1/B/Op_private.pm
+usr/lib/perl5/5.32.1/Benchmark.pm
+#usr/lib/perl5/5.32.1/CORE.pod
+#usr/lib/perl5/5.32.1/CPAN
+#usr/lib/perl5/5.32.1/CPAN.pm
+#usr/lib/perl5/5.32.1/CPAN/API
+#usr/lib/perl5/5.32.1/CPAN/API/HOWTO.pod
+#usr/lib/perl5/5.32.1/CPAN/Author.pm
+#usr/lib/perl5/5.32.1/CPAN/Bundle.pm
+#usr/lib/perl5/5.32.1/CPAN/CacheMgr.pm
+#usr/lib/perl5/5.32.1/CPAN/Complete.pm
+#usr/lib/perl5/5.32.1/CPAN/Debug.pm
+#usr/lib/perl5/5.32.1/CPAN/DeferredCode.pm
+#usr/lib/perl5/5.32.1/CPAN/Distribution.pm
+#usr/lib/perl5/5.32.1/CPAN/Distroprefs.pm
+#usr/lib/perl5/5.32.1/CPAN/Distrostatus.pm
+#usr/lib/perl5/5.32.1/CPAN/Exception
+#usr/lib/perl5/5.32.1/CPAN/Exception/RecursiveDependency.pm
+#usr/lib/perl5/5.32.1/CPAN/Exception/blocked_urllist.pm
+#usr/lib/perl5/5.32.1/CPAN/Exception/yaml_not_installed.pm
+#usr/lib/perl5/5.32.1/CPAN/Exception/yaml_process_error.pm
+#usr/lib/perl5/5.32.1/CPAN/FTP
+#usr/lib/perl5/5.32.1/CPAN/FTP.pm
+#usr/lib/perl5/5.32.1/CPAN/FTP/netrc.pm
+#usr/lib/perl5/5.32.1/CPAN/FirstTime.pm
+#usr/lib/perl5/5.32.1/CPAN/HTTP
+#usr/lib/perl5/5.32.1/CPAN/HTTP/Client.pm
+#usr/lib/perl5/5.32.1/CPAN/HTTP/Credentials.pm
+#usr/lib/perl5/5.32.1/CPAN/HandleConfig.pm
+#usr/lib/perl5/5.32.1/CPAN/Index.pm
+#usr/lib/perl5/5.32.1/CPAN/InfoObj.pm
+#usr/lib/perl5/5.32.1/CPAN/Kwalify
+#usr/lib/perl5/5.32.1/CPAN/Kwalify.pm
+#usr/lib/perl5/5.32.1/CPAN/Kwalify/distroprefs.dd
+#usr/lib/perl5/5.32.1/CPAN/Kwalify/distroprefs.yml
+#usr/lib/perl5/5.32.1/CPAN/LWP
+#usr/lib/perl5/5.32.1/CPAN/LWP/UserAgent.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta
+#usr/lib/perl5/5.32.1/CPAN/Meta.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta/Converter.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta/Feature.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta/History
+#usr/lib/perl5/5.32.1/CPAN/Meta/History.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta/History/Meta_1_0.pod
+#usr/lib/perl5/5.32.1/CPAN/Meta/History/Meta_1_1.pod
+#usr/lib/perl5/5.32.1/CPAN/Meta/History/Meta_1_2.pod
+#usr/lib/perl5/5.32.1/CPAN/Meta/History/Meta_1_3.pod
+#usr/lib/perl5/5.32.1/CPAN/Meta/History/Meta_1_4.pod
+#usr/lib/perl5/5.32.1/CPAN/Meta/Merge.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta/Prereqs.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta/Requirements.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta/Spec.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta/Validator.pm
+#usr/lib/perl5/5.32.1/CPAN/Meta/YAML.pm
+#usr/lib/perl5/5.32.1/CPAN/Mirrors.pm
+#usr/lib/perl5/5.32.1/CPAN/Module.pm
+#usr/lib/perl5/5.32.1/CPAN/Nox.pm
+#usr/lib/perl5/5.32.1/CPAN/Plugin
+#usr/lib/perl5/5.32.1/CPAN/Plugin.pm
+#usr/lib/perl5/5.32.1/CPAN/Plugin/Specfile.pm
+#usr/lib/perl5/5.32.1/CPAN/Prompt.pm
+#usr/lib/perl5/5.32.1/CPAN/Queue.pm
+#usr/lib/perl5/5.32.1/CPAN/Shell.pm
+#usr/lib/perl5/5.32.1/CPAN/Tarzip.pm
+#usr/lib/perl5/5.32.1/CPAN/URL.pm
+#usr/lib/perl5/5.32.1/CPAN/Version.pm
+#usr/lib/perl5/5.32.1/Carp
+usr/lib/perl5/5.32.1/Carp.pm
+usr/lib/perl5/5.32.1/Carp/Heavy.pm
+#usr/lib/perl5/5.32.1/Class
+usr/lib/perl5/5.32.1/Class/Struct.pm
+#usr/lib/perl5/5.32.1/Compress
+usr/lib/perl5/5.32.1/Compress/Zlib.pm
+#usr/lib/perl5/5.32.1/Config
+usr/lib/perl5/5.32.1/Config/Extensions.pm
+#usr/lib/perl5/5.32.1/Config/Perl
+usr/lib/perl5/5.32.1/Config/Perl/V.pm
+usr/lib/perl5/5.32.1/DB.pm
+#usr/lib/perl5/5.32.1/DBM_Filter
+usr/lib/perl5/5.32.1/DBM_Filter.pm
+usr/lib/perl5/5.32.1/DBM_Filter/compress.pm
+usr/lib/perl5/5.32.1/DBM_Filter/encode.pm
+usr/lib/perl5/5.32.1/DBM_Filter/int32.pm
+usr/lib/perl5/5.32.1/DBM_Filter/null.pm
+usr/lib/perl5/5.32.1/DBM_Filter/utf8.pm
+#usr/lib/perl5/5.32.1/Devel
+#usr/lib/perl5/5.32.1/Devel/SelfStubber.pm
+#usr/lib/perl5/5.32.1/Digest
+usr/lib/perl5/5.32.1/Digest.pm
+usr/lib/perl5/5.32.1/Digest/base.pm
+usr/lib/perl5/5.32.1/Digest/file.pm
+usr/lib/perl5/5.32.1/DirHandle.pm
+usr/lib/perl5/5.32.1/Dumpvalue.pm
+#usr/lib/perl5/5.32.1/Encode
+#usr/lib/perl5/5.32.1/Encode/Changes.e2x
+#usr/lib/perl5/5.32.1/Encode/ConfigLocal_PM.e2x
+#usr/lib/perl5/5.32.1/Encode/Makefile_PL.e2x
+#usr/lib/perl5/5.32.1/Encode/PerlIO.pod
+#usr/lib/perl5/5.32.1/Encode/README.e2x
+#usr/lib/perl5/5.32.1/Encode/Supported.pod
+#usr/lib/perl5/5.32.1/Encode/_PM.e2x
+#usr/lib/perl5/5.32.1/Encode/_T.e2x
+#usr/lib/perl5/5.32.1/Encode/encode.h
+usr/lib/perl5/5.32.1/English.pm
+usr/lib/perl5/5.32.1/Env.pm
+#usr/lib/perl5/5.32.1/Exporter
+usr/lib/perl5/5.32.1/Exporter.pm
+usr/lib/perl5/5.32.1/Exporter/Heavy.pm
+#usr/lib/perl5/5.32.1/ExtUtils
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Base.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/Unix.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/VMS.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/Windows
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/Windows.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/Windows/BCC.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/Windows/GCC.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/aix.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/android.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/cygwin.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/darwin.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/dec_osf.pm
+#usr/lib/perl5/5.32.1/ExtUtils/CBuilder/Platform/os2.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Command
+#usr/lib/perl5/5.32.1/ExtUtils/Command.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Command/MM.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Constant
+#usr/lib/perl5/5.32.1/ExtUtils/Constant.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Constant/Base.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Constant/ProxySubs.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Constant/Utils.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Constant/XS.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Embed.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Install.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Installed.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Liblist
+#usr/lib/perl5/5.32.1/ExtUtils/Liblist.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Liblist/Kid.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MANIFEST.SKIP
+#usr/lib/perl5/5.32.1/ExtUtils/MM.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_AIX.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_Any.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_BeOS.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_Cygwin.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_DOS.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_Darwin.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_MacOS.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_NW5.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_OS2.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_QNX.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_UWIN.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_Unix.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_VMS.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_VOS.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_Win32.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MM_Win95.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MY.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MakeMaker
+#usr/lib/perl5/5.32.1/ExtUtils/MakeMaker.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MakeMaker/Config.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MakeMaker/FAQ.pod
+#usr/lib/perl5/5.32.1/ExtUtils/MakeMaker/Locale.pm
+#usr/lib/perl5/5.32.1/ExtUtils/MakeMaker/Tutorial.pod
+#usr/lib/perl5/5.32.1/ExtUtils/MakeMaker/version.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Manifest.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Miniperl.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Mkbootstrap.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Mksymlists.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Packlist.pm
+#usr/lib/perl5/5.32.1/ExtUtils/ParseXS
+#usr/lib/perl5/5.32.1/ExtUtils/ParseXS.pm
+#usr/lib/perl5/5.32.1/ExtUtils/ParseXS.pod
+#usr/lib/perl5/5.32.1/ExtUtils/ParseXS/Constants.pm
+#usr/lib/perl5/5.32.1/ExtUtils/ParseXS/CountLines.pm
+#usr/lib/perl5/5.32.1/ExtUtils/ParseXS/Eval.pm
+#usr/lib/perl5/5.32.1/ExtUtils/ParseXS/Utilities.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Typemaps
+#usr/lib/perl5/5.32.1/ExtUtils/Typemaps.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Typemaps/Cmd.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Typemaps/InputMap.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Typemaps/OutputMap.pm
+#usr/lib/perl5/5.32.1/ExtUtils/Typemaps/Type.pm
+#usr/lib/perl5/5.32.1/ExtUtils/testlib.pm
+#usr/lib/perl5/5.32.1/ExtUtils/typemap
+#usr/lib/perl5/5.32.1/ExtUtils/xsubpp
+usr/lib/perl5/5.32.1/Fatal.pm
+#usr/lib/perl5/5.32.1/File
+usr/lib/perl5/5.32.1/File/Basename.pm
+usr/lib/perl5/5.32.1/File/Compare.pm
+usr/lib/perl5/5.32.1/File/Copy.pm
+usr/lib/perl5/5.32.1/File/Fetch.pm
+usr/lib/perl5/5.32.1/File/Find.pm
+usr/lib/perl5/5.32.1/File/GlobMapper.pm
+usr/lib/perl5/5.32.1/File/Path.pm
+usr/lib/perl5/5.32.1/File/Temp.pm
+usr/lib/perl5/5.32.1/File/stat.pm
+usr/lib/perl5/5.32.1/FileCache.pm
+usr/lib/perl5/5.32.1/FileHandle.pm
+#usr/lib/perl5/5.32.1/Filter
+usr/lib/perl5/5.32.1/Filter/Simple.pm
+usr/lib/perl5/5.32.1/FindBin.pm
+#usr/lib/perl5/5.32.1/Getopt
+usr/lib/perl5/5.32.1/Getopt/Long.pm
+usr/lib/perl5/5.32.1/Getopt/Std.pm
+#usr/lib/perl5/5.32.1/HTTP
+usr/lib/perl5/5.32.1/HTTP/Tiny.pm
+#usr/lib/perl5/5.32.1/I18N
+usr/lib/perl5/5.32.1/I18N/Collate.pm
+usr/lib/perl5/5.32.1/I18N/LangTags
+usr/lib/perl5/5.32.1/I18N/LangTags.pm
+usr/lib/perl5/5.32.1/I18N/LangTags/Detect.pm
+usr/lib/perl5/5.32.1/I18N/LangTags/List.pm
+#usr/lib/perl5/5.32.1/IO
+#usr/lib/perl5/5.32.1/IO/Compress
+#usr/lib/perl5/5.32.1/IO/Compress/Adapter
+usr/lib/perl5/5.32.1/IO/Compress/Adapter/Bzip2.pm
+usr/lib/perl5/5.32.1/IO/Compress/Adapter/Deflate.pm
+usr/lib/perl5/5.32.1/IO/Compress/Adapter/Identity.pm
+#usr/lib/perl5/5.32.1/IO/Compress/Base
+usr/lib/perl5/5.32.1/IO/Compress/Base.pm
+usr/lib/perl5/5.32.1/IO/Compress/Base/Common.pm
+usr/lib/perl5/5.32.1/IO/Compress/Bzip2.pm
+usr/lib/perl5/5.32.1/IO/Compress/Deflate.pm
+#usr/lib/perl5/5.32.1/IO/Compress/FAQ.pod
+#usr/lib/perl5/5.32.1/IO/Compress/Gzip
+usr/lib/perl5/5.32.1/IO/Compress/Gzip.pm
+usr/lib/perl5/5.32.1/IO/Compress/Gzip/Constants.pm
+usr/lib/perl5/5.32.1/IO/Compress/RawDeflate.pm
+#usr/lib/perl5/5.32.1/IO/Compress/Zip
+usr/lib/perl5/5.32.1/IO/Compress/Zip.pm
+usr/lib/perl5/5.32.1/IO/Compress/Zip/Constants.pm
+#usr/lib/perl5/5.32.1/IO/Compress/Zlib
+usr/lib/perl5/5.32.1/IO/Compress/Zlib/Constants.pm
+usr/lib/perl5/5.32.1/IO/Compress/Zlib/Extra.pm
+#usr/lib/perl5/5.32.1/IO/Socket
+usr/lib/perl5/5.32.1/IO/Socket/IP.pm
+#usr/lib/perl5/5.32.1/IO/Uncompress
+#usr/lib/perl5/5.32.1/IO/Uncompress/Adapter
+usr/lib/perl5/5.32.1/IO/Uncompress/Adapter/Bunzip2.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/Adapter/Identity.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/Adapter/Inflate.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/AnyInflate.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/AnyUncompress.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/Base.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/Bunzip2.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/Gunzip.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/Inflate.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/RawInflate.pm
+usr/lib/perl5/5.32.1/IO/Uncompress/Unzip.pm
+usr/lib/perl5/5.32.1/IO/Zlib.pm
+#usr/lib/perl5/5.32.1/IPC
+usr/lib/perl5/5.32.1/IPC/Cmd.pm
+usr/lib/perl5/5.32.1/IPC/Open2.pm
+usr/lib/perl5/5.32.1/IPC/Open3.pm
+#usr/lib/perl5/5.32.1/Internals.pod
+#usr/lib/perl5/5.32.1/JSON
+#usr/lib/perl5/5.32.1/JSON/PP
+#usr/lib/perl5/5.32.1/JSON/PP.pm
+#usr/lib/perl5/5.32.1/JSON/PP/Boolean.pm
+#usr/lib/perl5/5.32.1/Locale
+#usr/lib/perl5/5.32.1/Locale/Maketext
+#usr/lib/perl5/5.32.1/Locale/Maketext.pm
+#usr/lib/perl5/5.32.1/Locale/Maketext.pod
+#usr/lib/perl5/5.32.1/Locale/Maketext/Cookbook.pod
+#usr/lib/perl5/5.32.1/Locale/Maketext/Guts.pm
+#usr/lib/perl5/5.32.1/Locale/Maketext/GutsLoader.pm
+#usr/lib/perl5/5.32.1/Locale/Maketext/Simple.pm
+#usr/lib/perl5/5.32.1/Locale/Maketext/TPJ13.pod
+#usr/lib/perl5/5.32.1/Math
+#usr/lib/perl5/5.32.1/Math/BigFloat
+usr/lib/perl5/5.32.1/Math/BigFloat.pm
+usr/lib/perl5/5.32.1/Math/BigFloat/Trace.pm
+#usr/lib/perl5/5.32.1/Math/BigInt
+usr/lib/perl5/5.32.1/Math/BigInt.pm
+usr/lib/perl5/5.32.1/Math/BigInt/Calc.pm
+usr/lib/perl5/5.32.1/Math/BigInt/Lib.pm
+usr/lib/perl5/5.32.1/Math/BigInt/Trace.pm
+usr/lib/perl5/5.32.1/Math/BigRat.pm
+usr/lib/perl5/5.32.1/Math/Complex.pm
+usr/lib/perl5/5.32.1/Math/Trig.pm
+#usr/lib/perl5/5.32.1/Memoize
+usr/lib/perl5/5.32.1/Memoize.pm
+usr/lib/perl5/5.32.1/Memoize/AnyDBM_File.pm
+usr/lib/perl5/5.32.1/Memoize/Expire.pm
+usr/lib/perl5/5.32.1/Memoize/ExpireFile.pm
+usr/lib/perl5/5.32.1/Memoize/ExpireTest.pm
+usr/lib/perl5/5.32.1/Memoize/NDBM_File.pm
+usr/lib/perl5/5.32.1/Memoize/SDBM_File.pm
+usr/lib/perl5/5.32.1/Memoize/Storable.pm
+#usr/lib/perl5/5.32.1/Module
+#usr/lib/perl5/5.32.1/Module/CoreList
+usr/lib/perl5/5.32.1/Module/CoreList.pm
+#usr/lib/perl5/5.32.1/Module/CoreList.pod
+usr/lib/perl5/5.32.1/Module/CoreList/Utils.pm
+#usr/lib/perl5/5.32.1/Module/Load
+usr/lib/perl5/5.32.1/Module/Load.pm
+usr/lib/perl5/5.32.1/Module/Load/Conditional.pm
+usr/lib/perl5/5.32.1/Module/Loaded.pm
+usr/lib/perl5/5.32.1/Module/Metadata.pm
+usr/lib/perl5/5.32.1/NEXT.pm
+#usr/lib/perl5/5.32.1/Net
+usr/lib/perl5/5.32.1/Net/Cmd.pm
+usr/lib/perl5/5.32.1/Net/Config.pm
+usr/lib/perl5/5.32.1/Net/Domain.pm
+#usr/lib/perl5/5.32.1/Net/FTP
+usr/lib/perl5/5.32.1/Net/FTP.pm
+usr/lib/perl5/5.32.1/Net/FTP/A.pm
+usr/lib/perl5/5.32.1/Net/FTP/E.pm
+usr/lib/perl5/5.32.1/Net/FTP/I.pm
+usr/lib/perl5/5.32.1/Net/FTP/L.pm
+usr/lib/perl5/5.32.1/Net/FTP/dataconn.pm
+usr/lib/perl5/5.32.1/Net/NNTP.pm
+usr/lib/perl5/5.32.1/Net/Netrc.pm
+usr/lib/perl5/5.32.1/Net/POP3.pm
+usr/lib/perl5/5.32.1/Net/Ping.pm
+usr/lib/perl5/5.32.1/Net/SMTP.pm
+usr/lib/perl5/5.32.1/Net/Time.pm
+usr/lib/perl5/5.32.1/Net/hostent.pm
+usr/lib/perl5/5.32.1/Net/libnetFAQ.pod
+usr/lib/perl5/5.32.1/Net/netent.pm
+usr/lib/perl5/5.32.1/Net/protoent.pm
+usr/lib/perl5/5.32.1/Net/servent.pm
+#usr/lib/perl5/5.32.1/Params
+usr/lib/perl5/5.32.1/Params/Check.pm
+#usr/lib/perl5/5.32.1/Parse
+#usr/lib/perl5/5.32.1/Parse/CPAN
+#usr/lib/perl5/5.32.1/Parse/CPAN/Meta.pm
+#usr/lib/perl5/5.32.1/Perl
+usr/lib/perl5/5.32.1/Perl/OSType.pm
+#usr/lib/perl5/5.32.1/PerlIO
+usr/lib/perl5/5.32.1/PerlIO.pm
+#usr/lib/perl5/5.32.1/PerlIO/via
+usr/lib/perl5/5.32.1/PerlIO/via/QuotedPrint.pm
+usr/lib/perl5/5.32.1/Pod
+#usr/lib/perl5/5.32.1/Pod/Checker.pm
+#usr/lib/perl5/5.32.1/Pod/Escapes.pm
+#usr/lib/perl5/5.32.1/Pod/Functions.pm
+#usr/lib/perl5/5.32.1/Pod/Html.pm
+#usr/lib/perl5/5.32.1/Pod/Man.pm
+#usr/lib/perl5/5.32.1/Pod/ParseLink.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc
+#usr/lib/perl5/5.32.1/Pod/Perldoc.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/BaseTo.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/GetOptsOO.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToANSI.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToChecker.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToMan.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToNroff.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToPod.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToRtf.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToTerm.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToText.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToTk.pm
+#usr/lib/perl5/5.32.1/Pod/Perldoc/ToXml.pm
+#usr/lib/perl5/5.32.1/Pod/Simple
+#usr/lib/perl5/5.32.1/Pod/Simple.pm
+#usr/lib/perl5/5.32.1/Pod/Simple.pod
+#usr/lib/perl5/5.32.1/Pod/Simple/BlackBox.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/Checker.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/Debug.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/DumpAsText.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/DumpAsXML.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/HTML.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/HTMLBatch.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/HTMLLegacy.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/JustPod.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/LinkSection.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/Methody.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/Progress.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/PullParser.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/PullParserEndToken.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/PullParserStartToken.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/PullParserTextToken.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/PullParserToken.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/RTF.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/Search.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/SimpleTree.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/Subclassing.pod
+#usr/lib/perl5/5.32.1/Pod/Simple/Text.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/TextContent.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/TiedOutFH.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/Transcode.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/TranscodeDumb.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/TranscodeSmart.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/XHTML.pm
+#usr/lib/perl5/5.32.1/Pod/Simple/XMLOutStream.pm
+#usr/lib/perl5/5.32.1/Pod/Text
+#usr/lib/perl5/5.32.1/Pod/Text.pm
+#usr/lib/perl5/5.32.1/Pod/Text/Color.pm
+#usr/lib/perl5/5.32.1/Pod/Text/Overstrike.pm
+#usr/lib/perl5/5.32.1/Pod/Text/Termcap.pm
+#usr/lib/perl5/5.32.1/Pod/Usage.pm
+usr/lib/perl5/5.32.1/Safe.pm
+#usr/lib/perl5/5.32.1/Search
+usr/lib/perl5/5.32.1/Search/Dict.pm
+usr/lib/perl5/5.32.1/SelectSaver.pm
+usr/lib/perl5/5.32.1/SelfLoader.pm
+usr/lib/perl5/5.32.1/Symbol.pm
+#usr/lib/perl5/5.32.1/TAP
+#usr/lib/perl5/5.32.1/TAP/Base.pm
+#usr/lib/perl5/5.32.1/TAP/Formatter
+#usr/lib/perl5/5.32.1/TAP/Formatter/Base.pm
+#usr/lib/perl5/5.32.1/TAP/Formatter/Color.pm
+#usr/lib/perl5/5.32.1/TAP/Formatter/Console
+#usr/lib/perl5/5.32.1/TAP/Formatter/Console.pm
+#usr/lib/perl5/5.32.1/TAP/Formatter/Console/ParallelSession.pm
+#usr/lib/perl5/5.32.1/TAP/Formatter/Console/Session.pm
+#usr/lib/perl5/5.32.1/TAP/Formatter/File
+#usr/lib/perl5/5.32.1/TAP/Formatter/File.pm
+#usr/lib/perl5/5.32.1/TAP/Formatter/File/Session.pm
+#usr/lib/perl5/5.32.1/TAP/Formatter/Session.pm
+#usr/lib/perl5/5.32.1/TAP/Harness
+#usr/lib/perl5/5.32.1/TAP/Harness.pm
+#usr/lib/perl5/5.32.1/TAP/Harness/Beyond.pod
+#usr/lib/perl5/5.32.1/TAP/Harness/Env.pm
+#usr/lib/perl5/5.32.1/TAP/Object.pm
+#usr/lib/perl5/5.32.1/TAP/Parser
+#usr/lib/perl5/5.32.1/TAP/Parser.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Aggregator.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Grammar.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Iterator
+#usr/lib/perl5/5.32.1/TAP/Parser/Iterator.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Iterator/Array.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Iterator/Process.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Iterator/Stream.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/IteratorFactory.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Multiplexer.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Result
+#usr/lib/perl5/5.32.1/TAP/Parser/Result.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Result/Bailout.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Result/Comment.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Result/Plan.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Result/Pragma.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Result/Test.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Result/Unknown.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Result/Version.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Result/YAML.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/ResultFactory.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Scheduler
+#usr/lib/perl5/5.32.1/TAP/Parser/Scheduler.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Scheduler/Job.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Scheduler/Spinner.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/Source.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/SourceHandler
+#usr/lib/perl5/5.32.1/TAP/Parser/SourceHandler.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/SourceHandler/Executable.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/SourceHandler/File.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/SourceHandler/Handle.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/SourceHandler/Perl.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/SourceHandler/RawTAP.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/YAMLish
+#usr/lib/perl5/5.32.1/TAP/Parser/YAMLish/Reader.pm
+#usr/lib/perl5/5.32.1/TAP/Parser/YAMLish/Writer.pm
+#usr/lib/perl5/5.32.1/Term
+usr/lib/perl5/5.32.1/Term/ANSIColor.pm
+usr/lib/perl5/5.32.1/Term/Cap.pm
+usr/lib/perl5/5.32.1/Term/Complete.pm
+usr/lib/perl5/5.32.1/Term/ReadLine.pm
+#usr/lib/perl5/5.32.1/Test
+#usr/lib/perl5/5.32.1/Test.pm
+#usr/lib/perl5/5.32.1/Test/Builder
+#usr/lib/perl5/5.32.1/Test/Builder.pm
+#usr/lib/perl5/5.32.1/Test/Builder/Formatter.pm
+#usr/lib/perl5/5.32.1/Test/Builder/IO
+#usr/lib/perl5/5.32.1/Test/Builder/IO/Scalar.pm
+#usr/lib/perl5/5.32.1/Test/Builder/Module.pm
+#usr/lib/perl5/5.32.1/Test/Builder/Tester
+#usr/lib/perl5/5.32.1/Test/Builder/Tester.pm
+#usr/lib/perl5/5.32.1/Test/Builder/Tester/Color.pm
+#usr/lib/perl5/5.32.1/Test/Builder/TodoDiag.pm
+#usr/lib/perl5/5.32.1/Test/Harness.pm
+#usr/lib/perl5/5.32.1/Test/More.pm
+#usr/lib/perl5/5.32.1/Test/Simple.pm
+#usr/lib/perl5/5.32.1/Test/Tester
+#usr/lib/perl5/5.32.1/Test/Tester.pm
+#usr/lib/perl5/5.32.1/Test/Tester/Capture.pm
+#usr/lib/perl5/5.32.1/Test/Tester/CaptureRunner.pm
+#usr/lib/perl5/5.32.1/Test/Tester/Delegate.pm
+#usr/lib/perl5/5.32.1/Test/Tutorial.pod
+#usr/lib/perl5/5.32.1/Test/use
+#usr/lib/perl5/5.32.1/Test/use/ok.pm
+#usr/lib/perl5/5.32.1/Test2
+#usr/lib/perl5/5.32.1/Test2.pm
+#usr/lib/perl5/5.32.1/Test2/API
+#usr/lib/perl5/5.32.1/Test2/API.pm
+#usr/lib/perl5/5.32.1/Test2/API/Breakage.pm
+#usr/lib/perl5/5.32.1/Test2/API/Context.pm
+#usr/lib/perl5/5.32.1/Test2/API/Instance.pm
+#usr/lib/perl5/5.32.1/Test2/API/Stack.pm
+#usr/lib/perl5/5.32.1/Test2/Event
+#usr/lib/perl5/5.32.1/Test2/Event.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Bail.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Diag.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Encoding.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Exception.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Fail.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Generic.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Note.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Ok.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Pass.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Plan.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Skip.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Subtest.pm
+#usr/lib/perl5/5.32.1/Test2/Event/TAP
+#usr/lib/perl5/5.32.1/Test2/Event/TAP/Version.pm
+#usr/lib/perl5/5.32.1/Test2/Event/V2.pm
+#usr/lib/perl5/5.32.1/Test2/Event/Waiting.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet
+#usr/lib/perl5/5.32.1/Test2/EventFacet.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/About.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Amnesty.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Assert.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Control.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Error.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Hub.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Info
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Info.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Info/Table.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Meta.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Parent.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Plan.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Render.pm
+#usr/lib/perl5/5.32.1/Test2/EventFacet/Trace.pm
+#usr/lib/perl5/5.32.1/Test2/Formatter
+#usr/lib/perl5/5.32.1/Test2/Formatter.pm
+#usr/lib/perl5/5.32.1/Test2/Formatter/TAP.pm
+#usr/lib/perl5/5.32.1/Test2/Hub
+#usr/lib/perl5/5.32.1/Test2/Hub.pm
+#usr/lib/perl5/5.32.1/Test2/Hub/Interceptor
+#usr/lib/perl5/5.32.1/Test2/Hub/Interceptor.pm
+#usr/lib/perl5/5.32.1/Test2/Hub/Interceptor/Terminator.pm
+#usr/lib/perl5/5.32.1/Test2/Hub/Subtest.pm
+#usr/lib/perl5/5.32.1/Test2/IPC
+#usr/lib/perl5/5.32.1/Test2/IPC.pm
+#usr/lib/perl5/5.32.1/Test2/IPC/Driver
+#usr/lib/perl5/5.32.1/Test2/IPC/Driver.pm
+#usr/lib/perl5/5.32.1/Test2/IPC/Driver/Files.pm
+#usr/lib/perl5/5.32.1/Test2/Tools
+#usr/lib/perl5/5.32.1/Test2/Tools/Tiny.pm
+#usr/lib/perl5/5.32.1/Test2/Transition.pod
+#usr/lib/perl5/5.32.1/Test2/Util
+#usr/lib/perl5/5.32.1/Test2/Util.pm
+#usr/lib/perl5/5.32.1/Test2/Util/ExternalMeta.pm
+#usr/lib/perl5/5.32.1/Test2/Util/Facets2Legacy.pm
+#usr/lib/perl5/5.32.1/Test2/Util/HashBase.pm
+#usr/lib/perl5/5.32.1/Test2/Util/Trace.pm
+#usr/lib/perl5/5.32.1/Text
+usr/lib/perl5/5.32.1/Text/Abbrev.pm
+usr/lib/perl5/5.32.1/Text/Balanced.pm
+usr/lib/perl5/5.32.1/Text/ParseWords.pm
+usr/lib/perl5/5.32.1/Text/Tabs.pm
+usr/lib/perl5/5.32.1/Text/Wrap.pm
+#usr/lib/perl5/5.32.1/Thread
+usr/lib/perl5/5.32.1/Thread.pm
+usr/lib/perl5/5.32.1/Thread/Queue.pm
+usr/lib/perl5/5.32.1/Thread/Semaphore.pm
+#usr/lib/perl5/5.32.1/Tie
+usr/lib/perl5/5.32.1/Tie/Array.pm
+usr/lib/perl5/5.32.1/Tie/File.pm
+usr/lib/perl5/5.32.1/Tie/Handle.pm
+usr/lib/perl5/5.32.1/Tie/Hash
+usr/lib/perl5/5.32.1/Tie/Hash.pm
+usr/lib/perl5/5.32.1/Tie/Hash/NamedCapture.pm
+usr/lib/perl5/5.32.1/Tie/Memoize.pm
+usr/lib/perl5/5.32.1/Tie/RefHash.pm
+usr/lib/perl5/5.32.1/Tie/Scalar.pm
+usr/lib/perl5/5.32.1/Tie/StdHandle.pm
+usr/lib/perl5/5.32.1/Tie/SubstrHash.pm
+#usr/lib/perl5/5.32.1/Time
+usr/lib/perl5/5.32.1/Time/Local.pm
+usr/lib/perl5/5.32.1/Time/gmtime.pm
+usr/lib/perl5/5.32.1/Time/localtime.pm
+usr/lib/perl5/5.32.1/Time/tm.pm
+usr/lib/perl5/5.32.1/UNIVERSAL.pm
+#usr/lib/perl5/5.32.1/Unicode
+#usr/lib/perl5/5.32.1/Unicode/Collate
+#usr/lib/perl5/5.32.1/Unicode/Collate/CJK
+usr/lib/perl5/5.32.1/Unicode/Collate/CJK/Big5.pm
+usr/lib/perl5/5.32.1/Unicode/Collate/CJK/GB2312.pm
+usr/lib/perl5/5.32.1/Unicode/Collate/CJK/JISX0208.pm
+usr/lib/perl5/5.32.1/Unicode/Collate/CJK/Korean.pm
+usr/lib/perl5/5.32.1/Unicode/Collate/CJK/Pinyin.pm
+usr/lib/perl5/5.32.1/Unicode/Collate/CJK/Stroke.pm
+usr/lib/perl5/5.32.1/Unicode/Collate/CJK/Zhuyin.pm
+#usr/lib/perl5/5.32.1/Unicode/Collate/Locale
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/af.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ar.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/as.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/az.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/be.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/bn.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ca.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/cs.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/cu.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/cy.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/da.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/de_at_ph.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/de_phone.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/dsb.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ee.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/eo.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/es.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/es_trad.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/et.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/fa.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/fi.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/fi_phone.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/fil.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/fo.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/fr_ca.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/gu.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ha.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/haw.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/he.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/hi.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/hr.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/hu.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/hy.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ig.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/is.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ja.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/kk.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/kl.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/kn.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ko.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/kok.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/lkt.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ln.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/lt.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/lv.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/mk.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ml.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/mr.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/mt.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/nb.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/nn.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/nso.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/om.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/or.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/pa.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/pl.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ro.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/sa.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/se.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/si.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/si_dict.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/sk.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/sl.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/sq.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/sr.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/sv.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/sv_refo.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ta.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/te.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/th.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/tn.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/to.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/tr.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ug_cyrl.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/uk.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/ur.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/vi.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/vo.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/wae.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/wo.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/yo.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/zh.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/zh_big5.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/zh_gb.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/zh_pin.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/zh_strk.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/Locale/zh_zhu.pl
+usr/lib/perl5/5.32.1/Unicode/Collate/allkeys.txt
+usr/lib/perl5/5.32.1/Unicode/Collate/keys.txt
+usr/lib/perl5/5.32.1/Unicode/UCD.pm
+#usr/lib/perl5/5.32.1/User
+usr/lib/perl5/5.32.1/User/grent.pm
+usr/lib/perl5/5.32.1/User/pwent.pm
+usr/lib/perl5/5.32.1/XSLoader.pm
+usr/lib/perl5/5.32.1/_charnames.pm
+#usr/lib/perl5/5.32.1/autodie
+usr/lib/perl5/5.32.1/autodie.pm
+#usr/lib/perl5/5.32.1/autodie/Scope
+usr/lib/perl5/5.32.1/autodie/Scope/Guard.pm
+usr/lib/perl5/5.32.1/autodie/Scope/GuardStack.pm
+usr/lib/perl5/5.32.1/autodie/Util.pm
+usr/lib/perl5/5.32.1/autodie/exception
+usr/lib/perl5/5.32.1/autodie/exception.pm
+usr/lib/perl5/5.32.1/autodie/exception/system.pm
+usr/lib/perl5/5.32.1/autodie/hints.pm
+usr/lib/perl5/5.32.1/autodie/skip.pm
+usr/lib/perl5/5.32.1/autouse.pm
+usr/lib/perl5/5.32.1/base.pm
+usr/lib/perl5/5.32.1/bigint.pm
+usr/lib/perl5/5.32.1/bignum.pm
+usr/lib/perl5/5.32.1/bigrat.pm
+usr/lib/perl5/5.32.1/blib.pm
+usr/lib/perl5/5.32.1/bytes.pm
+usr/lib/perl5/5.32.1/bytes_heavy.pl
+usr/lib/perl5/5.32.1/charnames.pm
+usr/lib/perl5/5.32.1/constant.pm
+usr/lib/perl5/5.32.1/deprecate.pm
+usr/lib/perl5/5.32.1/diagnostics.pm
+usr/lib/perl5/5.32.1/dumpvar.pl
+#usr/lib/perl5/5.32.1/encoding
+usr/lib/perl5/5.32.1/encoding/warnings.pm
+usr/lib/perl5/5.32.1/experimental.pm
+usr/lib/perl5/5.32.1/feature.pm
+usr/lib/perl5/5.32.1/fields.pm
+usr/lib/perl5/5.32.1/filetest.pm
+usr/lib/perl5/5.32.1/if.pm
+usr/lib/perl5/5.32.1/integer.pm
+usr/lib/perl5/5.32.1/less.pm
+usr/lib/perl5/5.32.1/locale.pm
+usr/lib/perl5/5.32.1/meta_notation.pm
+usr/lib/perl5/5.32.1/ok.pm
+usr/lib/perl5/5.32.1/open.pm
+#usr/lib/perl5/5.32.1/overload
+usr/lib/perl5/5.32.1/overload.pm
+usr/lib/perl5/5.32.1/overload/numbers.pm
+usr/lib/perl5/5.32.1/overloading.pm
+usr/lib/perl5/5.32.1/parent.pm
+usr/lib/perl5/5.32.1/perl5db.pl
+usr/lib/perl5/5.32.1/perlfaq.pm
+#usr/lib/perl5/5.32.1/pod
+#usr/lib/perl5/5.32.1/pod/perl.pod
+#usr/lib/perl5/5.32.1/pod/perl5004delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5005delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5100delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5101delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5120delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5121delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5122delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5123delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5124delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5125delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5140delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5141delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5142delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5143delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5144delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5160delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5161delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5162delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5163delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5180delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5181delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5182delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5184delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5200delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5201delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5202delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5203delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5220delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5221delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5222delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5223delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5224delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5240delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5241delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5242delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5243delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5244delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5260delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5261delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5262delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5263delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5280delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5281delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5282delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5283delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5300delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5301delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5302delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5303delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5320delta.pod
+#usr/lib/perl5/5.32.1/pod/perl5321delta.pod
+#usr/lib/perl5/5.32.1/pod/perl561delta.pod
+#usr/lib/perl5/5.32.1/pod/perl56delta.pod
+#usr/lib/perl5/5.32.1/pod/perl581delta.pod
+#usr/lib/perl5/5.32.1/pod/perl582delta.pod
+#usr/lib/perl5/5.32.1/pod/perl583delta.pod
+#usr/lib/perl5/5.32.1/pod/perl584delta.pod
+#usr/lib/perl5/5.32.1/pod/perl585delta.pod
+#usr/lib/perl5/5.32.1/pod/perl586delta.pod
+#usr/lib/perl5/5.32.1/pod/perl587delta.pod
+#usr/lib/perl5/5.32.1/pod/perl588delta.pod
+#usr/lib/perl5/5.32.1/pod/perl589delta.pod
+#usr/lib/perl5/5.32.1/pod/perl58delta.pod
+#usr/lib/perl5/5.32.1/pod/perlaix.pod
+#usr/lib/perl5/5.32.1/pod/perlamiga.pod
+#usr/lib/perl5/5.32.1/pod/perlandroid.pod
+#usr/lib/perl5/5.32.1/pod/perlapi.pod
+#usr/lib/perl5/5.32.1/pod/perlapio.pod
+#usr/lib/perl5/5.32.1/pod/perlartistic.pod
+#usr/lib/perl5/5.32.1/pod/perlbook.pod
+#usr/lib/perl5/5.32.1/pod/perlboot.pod
+#usr/lib/perl5/5.32.1/pod/perlbot.pod
+#usr/lib/perl5/5.32.1/pod/perlbs2000.pod
+#usr/lib/perl5/5.32.1/pod/perlcall.pod
+#usr/lib/perl5/5.32.1/pod/perlcheat.pod
+#usr/lib/perl5/5.32.1/pod/perlclib.pod
+#usr/lib/perl5/5.32.1/pod/perlcn.pod
+#usr/lib/perl5/5.32.1/pod/perlcommunity.pod
+#usr/lib/perl5/5.32.1/pod/perlcygwin.pod
+#usr/lib/perl5/5.32.1/pod/perldata.pod
+#usr/lib/perl5/5.32.1/pod/perldbmfilter.pod
+#usr/lib/perl5/5.32.1/pod/perldebguts.pod
+#usr/lib/perl5/5.32.1/pod/perldebtut.pod
+#usr/lib/perl5/5.32.1/pod/perldebug.pod
+#usr/lib/perl5/5.32.1/pod/perldelta.pod
+#usr/lib/perl5/5.32.1/pod/perldeprecation.pod
+#usr/lib/perl5/5.32.1/pod/perldiag.pod
+#usr/lib/perl5/5.32.1/pod/perldoc.pod
+#usr/lib/perl5/5.32.1/pod/perldos.pod
+#usr/lib/perl5/5.32.1/pod/perldsc.pod
+#usr/lib/perl5/5.32.1/pod/perldtrace.pod
+#usr/lib/perl5/5.32.1/pod/perlebcdic.pod
+#usr/lib/perl5/5.32.1/pod/perlembed.pod
+#usr/lib/perl5/5.32.1/pod/perlexperiment.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq1.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq2.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq3.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq4.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq5.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq6.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq7.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq8.pod
+#usr/lib/perl5/5.32.1/pod/perlfaq9.pod
+#usr/lib/perl5/5.32.1/pod/perlfilter.pod
+#usr/lib/perl5/5.32.1/pod/perlfork.pod
+#usr/lib/perl5/5.32.1/pod/perlform.pod
+#usr/lib/perl5/5.32.1/pod/perlfreebsd.pod
+#usr/lib/perl5/5.32.1/pod/perlfunc.pod
+#usr/lib/perl5/5.32.1/pod/perlgit.pod
+#usr/lib/perl5/5.32.1/pod/perlglossary.pod
+#usr/lib/perl5/5.32.1/pod/perlgov.pod
+#usr/lib/perl5/5.32.1/pod/perlgpl.pod
+#usr/lib/perl5/5.32.1/pod/perlguts.pod
+#usr/lib/perl5/5.32.1/pod/perlhack.pod
+#usr/lib/perl5/5.32.1/pod/perlhacktips.pod
+#usr/lib/perl5/5.32.1/pod/perlhacktut.pod
+#usr/lib/perl5/5.32.1/pod/perlhaiku.pod
+#usr/lib/perl5/5.32.1/pod/perlhist.pod
+#usr/lib/perl5/5.32.1/pod/perlhpux.pod
+#usr/lib/perl5/5.32.1/pod/perlhurd.pod
+#usr/lib/perl5/5.32.1/pod/perlintern.pod
+#usr/lib/perl5/5.32.1/pod/perlinterp.pod
+#usr/lib/perl5/5.32.1/pod/perlintro.pod
+#usr/lib/perl5/5.32.1/pod/perliol.pod
+#usr/lib/perl5/5.32.1/pod/perlipc.pod
+#usr/lib/perl5/5.32.1/pod/perlirix.pod
+#usr/lib/perl5/5.32.1/pod/perljp.pod
+#usr/lib/perl5/5.32.1/pod/perlko.pod
+#usr/lib/perl5/5.32.1/pod/perllexwarn.pod
+#usr/lib/perl5/5.32.1/pod/perllinux.pod
+#usr/lib/perl5/5.32.1/pod/perllocale.pod
+#usr/lib/perl5/5.32.1/pod/perllol.pod
+#usr/lib/perl5/5.32.1/pod/perlmacos.pod
+#usr/lib/perl5/5.32.1/pod/perlmacosx.pod
+#usr/lib/perl5/5.32.1/pod/perlmod.pod
+#usr/lib/perl5/5.32.1/pod/perlmodinstall.pod
+#usr/lib/perl5/5.32.1/pod/perlmodlib.pod
+#usr/lib/perl5/5.32.1/pod/perlmodstyle.pod
+#usr/lib/perl5/5.32.1/pod/perlmroapi.pod
+#usr/lib/perl5/5.32.1/pod/perlnetware.pod
+#usr/lib/perl5/5.32.1/pod/perlnewmod.pod
+#usr/lib/perl5/5.32.1/pod/perlnumber.pod
+#usr/lib/perl5/5.32.1/pod/perlobj.pod
+#usr/lib/perl5/5.32.1/pod/perlootut.pod
+#usr/lib/perl5/5.32.1/pod/perlop.pod
+#usr/lib/perl5/5.32.1/pod/perlopenbsd.pod
+#usr/lib/perl5/5.32.1/pod/perlopentut.pod
+#usr/lib/perl5/5.32.1/pod/perlos2.pod
+#usr/lib/perl5/5.32.1/pod/perlos390.pod
+#usr/lib/perl5/5.32.1/pod/perlos400.pod
+#usr/lib/perl5/5.32.1/pod/perlpacktut.pod
+#usr/lib/perl5/5.32.1/pod/perlperf.pod
+#usr/lib/perl5/5.32.1/pod/perlplan9.pod
+#usr/lib/perl5/5.32.1/pod/perlpod.pod
+#usr/lib/perl5/5.32.1/pod/perlpodspec.pod
+#usr/lib/perl5/5.32.1/pod/perlpodstyle.pod
+#usr/lib/perl5/5.32.1/pod/perlpolicy.pod
+#usr/lib/perl5/5.32.1/pod/perlport.pod
+#usr/lib/perl5/5.32.1/pod/perlpragma.pod
+#usr/lib/perl5/5.32.1/pod/perlqnx.pod
+#usr/lib/perl5/5.32.1/pod/perlre.pod
+#usr/lib/perl5/5.32.1/pod/perlreapi.pod
+#usr/lib/perl5/5.32.1/pod/perlrebackslash.pod
+#usr/lib/perl5/5.32.1/pod/perlrecharclass.pod
+#usr/lib/perl5/5.32.1/pod/perlref.pod
+#usr/lib/perl5/5.32.1/pod/perlreftut.pod
+#usr/lib/perl5/5.32.1/pod/perlreguts.pod
+#usr/lib/perl5/5.32.1/pod/perlrepository.pod
+#usr/lib/perl5/5.32.1/pod/perlrequick.pod
+#usr/lib/perl5/5.32.1/pod/perlreref.pod
+#usr/lib/perl5/5.32.1/pod/perlretut.pod
+#usr/lib/perl5/5.32.1/pod/perlriscos.pod
+#usr/lib/perl5/5.32.1/pod/perlrun.pod
+#usr/lib/perl5/5.32.1/pod/perlsec.pod
+#usr/lib/perl5/5.32.1/pod/perlsecpolicy.pod
+#usr/lib/perl5/5.32.1/pod/perlsolaris.pod
+#usr/lib/perl5/5.32.1/pod/perlsource.pod
+#usr/lib/perl5/5.32.1/pod/perlstyle.pod
+#usr/lib/perl5/5.32.1/pod/perlsub.pod
+#usr/lib/perl5/5.32.1/pod/perlsymbian.pod
+#usr/lib/perl5/5.32.1/pod/perlsyn.pod
+#usr/lib/perl5/5.32.1/pod/perlsynology.pod
+#usr/lib/perl5/5.32.1/pod/perlthrtut.pod
+#usr/lib/perl5/5.32.1/pod/perltie.pod
+#usr/lib/perl5/5.32.1/pod/perltoc.pod
+#usr/lib/perl5/5.32.1/pod/perltodo.pod
+#usr/lib/perl5/5.32.1/pod/perltooc.pod
+#usr/lib/perl5/5.32.1/pod/perltoot.pod
+#usr/lib/perl5/5.32.1/pod/perltrap.pod
+#usr/lib/perl5/5.32.1/pod/perltru64.pod
+#usr/lib/perl5/5.32.1/pod/perltw.pod
+#usr/lib/perl5/5.32.1/pod/perlunicode.pod
+#usr/lib/perl5/5.32.1/pod/perlunicook.pod
+#usr/lib/perl5/5.32.1/pod/perlunifaq.pod
+#usr/lib/perl5/5.32.1/pod/perluniintro.pod
+#usr/lib/perl5/5.32.1/pod/perluniprops.pod
+#usr/lib/perl5/5.32.1/pod/perlunitut.pod
+#usr/lib/perl5/5.32.1/pod/perlutil.pod
+#usr/lib/perl5/5.32.1/pod/perlvar.pod
+#usr/lib/perl5/5.32.1/pod/perlvms.pod
+#usr/lib/perl5/5.32.1/pod/perlvos.pod
+#usr/lib/perl5/5.32.1/pod/perlwin32.pod
+#usr/lib/perl5/5.32.1/pod/perlxs.pod
+#usr/lib/perl5/5.32.1/pod/perlxstut.pod
+#usr/lib/perl5/5.32.1/pod/perlxstypemap.pod
+usr/lib/perl5/5.32.1/sigtrap.pm
+usr/lib/perl5/5.32.1/sort.pm
+usr/lib/perl5/5.32.1/strict.pm
+usr/lib/perl5/5.32.1/subs.pm
+#usr/lib/perl5/5.32.1/unicore
+usr/lib/perl5/5.32.1/unicore/Blocks.txt
+usr/lib/perl5/5.32.1/unicore/CombiningClass.pl
+usr/lib/perl5/5.32.1/unicore/Decomposition.pl
+usr/lib/perl5/5.32.1/unicore/Name.pl
+usr/lib/perl5/5.32.1/unicore/Name.pm
+usr/lib/perl5/5.32.1/unicore/NamedSequences.txt
+usr/lib/perl5/5.32.1/unicore/SpecialCasing.txt
+#usr/lib/perl5/5.32.1/unicore/To
+usr/lib/perl5/5.32.1/unicore/To/Age.pl
+usr/lib/perl5/5.32.1/unicore/To/Bc.pl
+usr/lib/perl5/5.32.1/unicore/To/Bmg.pl
+usr/lib/perl5/5.32.1/unicore/To/Bpb.pl
+usr/lib/perl5/5.32.1/unicore/To/Bpt.pl
+usr/lib/perl5/5.32.1/unicore/To/Cf.pl
+usr/lib/perl5/5.32.1/unicore/To/Digit.pl
+usr/lib/perl5/5.32.1/unicore/To/Ea.pl
+usr/lib/perl5/5.32.1/unicore/To/EqUIdeo.pl
+usr/lib/perl5/5.32.1/unicore/To/Fold.pl
+usr/lib/perl5/5.32.1/unicore/To/GCB.pl
+usr/lib/perl5/5.32.1/unicore/To/Gc.pl
+usr/lib/perl5/5.32.1/unicore/To/Hst.pl
+usr/lib/perl5/5.32.1/unicore/To/Identif2.pl
+usr/lib/perl5/5.32.1/unicore/To/Identifi.pl
+usr/lib/perl5/5.32.1/unicore/To/InPC.pl
+usr/lib/perl5/5.32.1/unicore/To/InSC.pl
+usr/lib/perl5/5.32.1/unicore/To/Isc.pl
+usr/lib/perl5/5.32.1/unicore/To/Jg.pl
+usr/lib/perl5/5.32.1/unicore/To/Jt.pl
+usr/lib/perl5/5.32.1/unicore/To/Lb.pl
+usr/lib/perl5/5.32.1/unicore/To/Lc.pl
+usr/lib/perl5/5.32.1/unicore/To/Lower.pl
+usr/lib/perl5/5.32.1/unicore/To/NFCQC.pl
+usr/lib/perl5/5.32.1/unicore/To/NFDQC.pl
+usr/lib/perl5/5.32.1/unicore/To/NFKCCF.pl
+usr/lib/perl5/5.32.1/unicore/To/NFKCQC.pl
+usr/lib/perl5/5.32.1/unicore/To/NFKDQC.pl
+usr/lib/perl5/5.32.1/unicore/To/Na1.pl
+usr/lib/perl5/5.32.1/unicore/To/NameAlia.pl
+usr/lib/perl5/5.32.1/unicore/To/Nt.pl
+usr/lib/perl5/5.32.1/unicore/To/Nv.pl
+usr/lib/perl5/5.32.1/unicore/To/PerlDeci.pl
+usr/lib/perl5/5.32.1/unicore/To/SB.pl
+usr/lib/perl5/5.32.1/unicore/To/Sc.pl
+usr/lib/perl5/5.32.1/unicore/To/Scx.pl
+usr/lib/perl5/5.32.1/unicore/To/Tc.pl
+usr/lib/perl5/5.32.1/unicore/To/Title.pl
+usr/lib/perl5/5.32.1/unicore/To/Uc.pl
+usr/lib/perl5/5.32.1/unicore/To/Upper.pl
+usr/lib/perl5/5.32.1/unicore/To/Vo.pl
+usr/lib/perl5/5.32.1/unicore/To/WB.pl
+usr/lib/perl5/5.32.1/unicore/To/_PerlLB.pl
+usr/lib/perl5/5.32.1/unicore/To/_PerlSCX.pl
+usr/lib/perl5/5.32.1/unicore/UCD.pl
+#usr/lib/perl5/5.32.1/unicore/lib
+#usr/lib/perl5/5.32.1/unicore/lib/Age
+usr/lib/perl5/5.32.1/unicore/lib/Age/NA.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V100.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V11.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V110.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V120.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V130.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V20.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V30.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V31.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V32.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V40.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V41.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V50.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V51.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V52.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V60.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V61.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V70.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V80.pl
+usr/lib/perl5/5.32.1/unicore/lib/Age/V90.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Alpha
+usr/lib/perl5/5.32.1/unicore/lib/Alpha/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Bc
+usr/lib/perl5/5.32.1/unicore/lib/Bc/AL.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/AN.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/B.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/BN.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/CS.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/EN.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/ES.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/ET.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/L.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/NSM.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/ON.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/R.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bc/WS.pl
+#usr/lib/perl5/5.32.1/unicore/lib/BidiC
+usr/lib/perl5/5.32.1/unicore/lib/BidiC/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/BidiM
+usr/lib/perl5/5.32.1/unicore/lib/BidiM/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Blk
+usr/lib/perl5/5.32.1/unicore/lib/Blk/NB.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Bpt
+usr/lib/perl5/5.32.1/unicore/lib/Bpt/C.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bpt/N.pl
+usr/lib/perl5/5.32.1/unicore/lib/Bpt/O.pl
+#usr/lib/perl5/5.32.1/unicore/lib/CE
+usr/lib/perl5/5.32.1/unicore/lib/CE/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/CI
+usr/lib/perl5/5.32.1/unicore/lib/CI/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/CWCF
+usr/lib/perl5/5.32.1/unicore/lib/CWCF/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/CWCM
+usr/lib/perl5/5.32.1/unicore/lib/CWCM/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/CWKCF
+usr/lib/perl5/5.32.1/unicore/lib/CWKCF/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/CWL
+usr/lib/perl5/5.32.1/unicore/lib/CWL/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/CWT
+usr/lib/perl5/5.32.1/unicore/lib/CWT/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/CWU
+usr/lib/perl5/5.32.1/unicore/lib/CWU/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Cased
+usr/lib/perl5/5.32.1/unicore/lib/Cased/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Ccc
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/A.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/AL.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/AR.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/ATAR.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/B.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/BR.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/DB.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/NK.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/NR.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/OV.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ccc/VR.pl
+#usr/lib/perl5/5.32.1/unicore/lib/CompEx
+usr/lib/perl5/5.32.1/unicore/lib/CompEx/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/DI
+usr/lib/perl5/5.32.1/unicore/lib/DI/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Dash
+usr/lib/perl5/5.32.1/unicore/lib/Dash/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Dep
+usr/lib/perl5/5.32.1/unicore/lib/Dep/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Dia
+usr/lib/perl5/5.32.1/unicore/lib/Dia/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Dt
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Com.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Enc.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Fin.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Font.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Init.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Iso.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Med.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Nar.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Nb.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/NonCanon.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Sqr.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Sub.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Sup.pl
+usr/lib/perl5/5.32.1/unicore/lib/Dt/Vert.pl
+#usr/lib/perl5/5.32.1/unicore/lib/EBase
+usr/lib/perl5/5.32.1/unicore/lib/EBase/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/EComp
+usr/lib/perl5/5.32.1/unicore/lib/EComp/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/EPres
+usr/lib/perl5/5.32.1/unicore/lib/EPres/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Ea
+usr/lib/perl5/5.32.1/unicore/lib/Ea/A.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ea/H.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ea/N.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ea/Na.pl
+usr/lib/perl5/5.32.1/unicore/lib/Ea/W.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Emoji
+usr/lib/perl5/5.32.1/unicore/lib/Emoji/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Ext
+usr/lib/perl5/5.32.1/unicore/lib/Ext/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/ExtPict
+usr/lib/perl5/5.32.1/unicore/lib/ExtPict/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/GCB
+usr/lib/perl5/5.32.1/unicore/lib/GCB/CN.pl
+usr/lib/perl5/5.32.1/unicore/lib/GCB/EX.pl
+usr/lib/perl5/5.32.1/unicore/lib/GCB/LV.pl
+usr/lib/perl5/5.32.1/unicore/lib/GCB/LVT.pl
+usr/lib/perl5/5.32.1/unicore/lib/GCB/PP.pl
+usr/lib/perl5/5.32.1/unicore/lib/GCB/SM.pl
+usr/lib/perl5/5.32.1/unicore/lib/GCB/XX.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Gc
+usr/lib/perl5/5.32.1/unicore/lib/Gc/C.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Cf.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Cn.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/L.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/LC.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Ll.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Lm.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Lo.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Lu.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/M.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Mc.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Me.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Mn.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/N.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Nd.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Nl.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/No.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/P.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Pc.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Pd.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Pe.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Pf.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Pi.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Po.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Ps.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/S.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Sc.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Sk.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Sm.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/So.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Z.pl
+usr/lib/perl5/5.32.1/unicore/lib/Gc/Zs.pl
+#usr/lib/perl5/5.32.1/unicore/lib/GrBase
+usr/lib/perl5/5.32.1/unicore/lib/GrBase/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/GrExt
+usr/lib/perl5/5.32.1/unicore/lib/GrExt/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Hex
+usr/lib/perl5/5.32.1/unicore/lib/Hex/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Hst
+usr/lib/perl5/5.32.1/unicore/lib/Hst/NA.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Hyphen
+usr/lib/perl5/5.32.1/unicore/lib/Hyphen/T.pl
+#usr/lib/perl5/5.32.1/unicore/lib/IDC
+usr/lib/perl5/5.32.1/unicore/lib/IDC/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/IDS
+usr/lib/perl5/5.32.1/unicore/lib/IDS/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/IdStatus
+usr/lib/perl5/5.32.1/unicore/lib/IdStatus/Allowed.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdStatus/Restrict.pl
+#usr/lib/perl5/5.32.1/unicore/lib/IdType
+usr/lib/perl5/5.32.1/unicore/lib/IdType/DefaultI.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/Exclusio.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/Inclusio.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/LimitedU.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/NotChara.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/NotNFKC.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/NotXID.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/Obsolete.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/Recommen.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/Technica.pl
+usr/lib/perl5/5.32.1/unicore/lib/IdType/Uncommon.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Ideo
+usr/lib/perl5/5.32.1/unicore/lib/Ideo/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/In
+usr/lib/perl5/5.32.1/unicore/lib/In/10_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/11_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/12_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/12_1.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/13_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/2_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/2_1.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/3_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/3_1.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/3_2.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/4_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/4_1.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/5_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/5_1.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/5_2.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/6_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/6_1.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/6_2.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/6_3.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/7_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/8_0.pl
+usr/lib/perl5/5.32.1/unicore/lib/In/9_0.pl
+#usr/lib/perl5/5.32.1/unicore/lib/InPC
+usr/lib/perl5/5.32.1/unicore/lib/InPC/Bottom.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/BottomAn.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/Left.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/LeftAndR.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/NA.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/Overstru.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/Right.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/Top.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/TopAndBo.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/TopAndL2.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/TopAndLe.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/TopAndRi.pl
+usr/lib/perl5/5.32.1/unicore/lib/InPC/VisualOr.pl
+#usr/lib/perl5/5.32.1/unicore/lib/InSC
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Avagraha.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Bindu.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Cantilla.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Consona2.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Consona3.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Consona4.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Consona5.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Consona6.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Consona7.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Consona8.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Consona9.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Consonan.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Invisibl.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Nukta.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Number.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Other.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/PureKill.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Syllable.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/ToneMark.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Virama.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Visarga.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/Vowel.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/VowelDep.pl
+usr/lib/perl5/5.32.1/unicore/lib/InSC/VowelInd.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Jg
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Ain.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Alef.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Beh.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Dal.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/FarsiYeh.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Feh.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Gaf.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Hah.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/HanifiRo.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Kaf.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Lam.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/NoJoinin.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Qaf.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Reh.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Sad.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Seen.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Waw.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jg/Yeh.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Jt
+usr/lib/perl5/5.32.1/unicore/lib/Jt/C.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jt/D.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jt/L.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jt/R.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jt/T.pl
+usr/lib/perl5/5.32.1/unicore/lib/Jt/U.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Lb
+usr/lib/perl5/5.32.1/unicore/lib/Lb/AI.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/AL.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/BA.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/BB.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/CJ.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/CL.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/CM.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/EX.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/GL.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/ID.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/IN.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/IS.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/NS.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/NU.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/OP.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/PO.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/PR.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/QU.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/SA.pl
+usr/lib/perl5/5.32.1/unicore/lib/Lb/XX.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Lower
+usr/lib/perl5/5.32.1/unicore/lib/Lower/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Math
+usr/lib/perl5/5.32.1/unicore/lib/Math/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/NFCQC
+usr/lib/perl5/5.32.1/unicore/lib/NFCQC/M.pl
+usr/lib/perl5/5.32.1/unicore/lib/NFCQC/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/NFDQC
+usr/lib/perl5/5.32.1/unicore/lib/NFDQC/N.pl
+usr/lib/perl5/5.32.1/unicore/lib/NFDQC/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/NFKCQC
+usr/lib/perl5/5.32.1/unicore/lib/NFKCQC/N.pl
+usr/lib/perl5/5.32.1/unicore/lib/NFKCQC/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/NFKDQC
+usr/lib/perl5/5.32.1/unicore/lib/NFKDQC/N.pl
+usr/lib/perl5/5.32.1/unicore/lib/NFKDQC/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Nt
+usr/lib/perl5/5.32.1/unicore/lib/Nt/Di.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nt/None.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nt/Nu.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Nv
+usr/lib/perl5/5.32.1/unicore/lib/Nv/0.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/1.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/10.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/100.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/1000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/10000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/100000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/11.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/12.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/13.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/14.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/15.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/16.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/17.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/18.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/19.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/1_16.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/1_2.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/1_3.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/1_4.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/1_6.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/1_8.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/2.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/20.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/200.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/2000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/20000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/2_3.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/3.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/30.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/300.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/3000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/30000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/3_16.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/3_4.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/4.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/40.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/400.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/4000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/40000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/5.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/50.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/500.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/5000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/50000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/6.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/60.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/600.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/6000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/60000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/7.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/70.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/700.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/7000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/70000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/8.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/80.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/800.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/8000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/80000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/9.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/90.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/900.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/9000.pl
+usr/lib/perl5/5.32.1/unicore/lib/Nv/90000.pl
+#usr/lib/perl5/5.32.1/unicore/lib/PCM
+usr/lib/perl5/5.32.1/unicore/lib/PCM/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/PatSyn
+usr/lib/perl5/5.32.1/unicore/lib/PatSyn/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Perl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/Alnum.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/Assigned.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/Blank.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/Graph.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/PerlWord.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/PosixPun.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/Print.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/SpacePer.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/Title.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/Word.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/XPosixPu.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlAny.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlCh2.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlCha.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlFol.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlIDC.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlIDS.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlIsI.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlNch.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlPat.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlPr2.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlPro.pl
+usr/lib/perl5/5.32.1/unicore/lib/Perl/_PerlQuo.pl
+#usr/lib/perl5/5.32.1/unicore/lib/QMark
+usr/lib/perl5/5.32.1/unicore/lib/QMark/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/SB
+usr/lib/perl5/5.32.1/unicore/lib/SB/AT.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/CL.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/EX.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/FO.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/LE.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/LO.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/NU.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/SC.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/ST.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/Sp.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/UP.pl
+usr/lib/perl5/5.32.1/unicore/lib/SB/XX.pl
+#usr/lib/perl5/5.32.1/unicore/lib/SD
+usr/lib/perl5/5.32.1/unicore/lib/SD/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/STerm
+usr/lib/perl5/5.32.1/unicore/lib/STerm/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Sc
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Arab.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Beng.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Cprt.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Cyrl.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Deva.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Dupl.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Geor.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Glag.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Gong.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Gonm.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Gran.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Grek.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Gujr.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Guru.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Han.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Hang.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Hira.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Kana.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Knda.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Latn.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Limb.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Linb.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Mlym.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Mong.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Mult.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Orya.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Sinh.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Syrc.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Taml.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Telu.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Zinh.pl
+usr/lib/perl5/5.32.1/unicore/lib/Sc/Zyyy.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Scx
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Adlm.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Arab.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Armn.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Beng.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Bhks.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Bopo.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Cakm.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Cham.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Copt.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Cprt.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Cyrl.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Deva.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Diak.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Dupl.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Ethi.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Geor.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Glag.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Gong.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Gonm.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Gran.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Grek.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Gujr.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Guru.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Han.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Hang.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Hebr.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Hira.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Hmng.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Hmnp.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Kana.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Khar.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Khmr.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Khoj.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Knda.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Kthi.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Lana.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Lao.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Latn.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Limb.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Lina.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Linb.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Mlym.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Mong.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Mult.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Mymr.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Nand.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Orya.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Phlp.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Rohg.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Shrd.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Sind.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Sinh.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Syrc.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Tagb.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Takr.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Talu.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Taml.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Tang.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Telu.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Thaa.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Tibt.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Tirh.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Xsux.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Yezi.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Yi.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Zinh.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Zyyy.pl
+usr/lib/perl5/5.32.1/unicore/lib/Scx/Zzzz.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Term
+usr/lib/perl5/5.32.1/unicore/lib/Term/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/UIdeo
+usr/lib/perl5/5.32.1/unicore/lib/UIdeo/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Upper
+usr/lib/perl5/5.32.1/unicore/lib/Upper/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/Vo
+usr/lib/perl5/5.32.1/unicore/lib/Vo/R.pl
+usr/lib/perl5/5.32.1/unicore/lib/Vo/Tr.pl
+usr/lib/perl5/5.32.1/unicore/lib/Vo/Tu.pl
+usr/lib/perl5/5.32.1/unicore/lib/Vo/U.pl
+#usr/lib/perl5/5.32.1/unicore/lib/WB
+usr/lib/perl5/5.32.1/unicore/lib/WB/EX.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/Extend.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/FO.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/HL.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/KA.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/LE.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/MB.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/ML.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/MN.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/NU.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/WSegSpac.pl
+usr/lib/perl5/5.32.1/unicore/lib/WB/XX.pl
+#usr/lib/perl5/5.32.1/unicore/lib/XIDC
+usr/lib/perl5/5.32.1/unicore/lib/XIDC/Y.pl
+#usr/lib/perl5/5.32.1/unicore/lib/XIDS
+usr/lib/perl5/5.32.1/unicore/lib/XIDS/Y.pl
+usr/lib/perl5/5.32.1/unicore/uni_keywords.pl
+usr/lib/perl5/5.32.1/unicore/version
+usr/lib/perl5/5.32.1/utf8.pm
+usr/lib/perl5/5.32.1/vars.pm
+#usr/lib/perl5/5.32.1/version
+usr/lib/perl5/5.32.1/version.pm
+usr/lib/perl5/5.32.1/version.pod
+usr/lib/perl5/5.32.1/version/Internals.pod
+usr/lib/perl5/5.32.1/version/regex.pm
+usr/lib/perl5/5.32.1/vmsish.pm
+#usr/lib/perl5/5.32.1/warnings
+usr/lib/perl5/5.32.1/warnings.pm
+usr/lib/perl5/5.32.1/warnings/register.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/.packlist
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/B
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/B.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/B/Concise.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/B/Showlex.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/B/Terse.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/B/Xref.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/EXTERN.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/INTERN.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/XSUB.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/av.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/bitcount.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/charclass_invlists.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/config.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/cop.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/cv.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/dosish.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/ebcdic_tables.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/embed.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/embedvar.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/fakesdio.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/feature.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/form.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/git_version.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/gv.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/handy.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/hv.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/hv_func.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/hv_macro.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/inline.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/intrpvar.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/invlist_inline.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/iperlsys.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/keywords.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/l1_char_class_tab.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/libperl.a
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/malloc_ctl.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/metaconfig.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/mg.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/mg_data.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/mg_raw.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/mg_vtable.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/mydtrace.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/nostdio.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/op.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/op_reg_common.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/opcode.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/opnames.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/overload.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/pad.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/parser.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/patchlevel.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/perl.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/perl_inc_macro.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/perl_langinfo.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/perlapi.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/perlio.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/perliol.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/perlsdio.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/perlvars.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/perly.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/pp.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/pp_proto.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/proto.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/reentr.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/regcharclass.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/regcomp.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/regexp.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/regnodes.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/sbox32_hash.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/scope.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/stadtx_hash.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/sv.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/thread.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/time64.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/time64_config.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/uconfig.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/uni_keywords.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/unicode_constants.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/unixish.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/utf8.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/utfebcdic.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/util.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/uudmap.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/vutil.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/warnings.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/CORE/zaphod32_hash.h
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Compress
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Compress/Raw
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Compress/Raw/Bzip2.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Compress/Raw/Zlib.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Config.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Config.pod
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Config_git.pl
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Config_heavy.pl
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Cwd.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/DB_File.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Data
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Data/Dumper.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Devel
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Devel/PPPort.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Devel/Peek.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Digest
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Digest/MD5.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Digest/SHA.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/DynaLoader.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Alias.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Byte.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/CJKConstants.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/CN
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/CN.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/CN/HZ.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Config.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/EBCDIC.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Encoder.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Encoding.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/GSM0338.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Guess.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/JP
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/JP.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/JP/H2Z.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/JP/JIS7.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/KR
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/KR.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/KR/2022_KR.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/MIME
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/MIME/Header
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/MIME/Header.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/MIME/Header/ISO_2022_JP.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/MIME/Name.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Symbol.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/TW.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Unicode
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Unicode.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Encode/Unicode/UTF7.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Errno.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Fcntl.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/DosGlob.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Glob.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec/AmigaOS.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec/Cygwin.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec/Epoc.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec/Functions.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec/Mac.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec/OS2.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec/Unix.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec/VMS.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/File/Spec/Win32.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Filter
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Filter/Util
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Filter/Util/Call.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Hash
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Hash/Util
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Hash/Util.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Hash/Util/FieldHash.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/I18N
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/I18N/Langinfo.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Dir.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/File.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Handle.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Pipe.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Poll.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Seekable.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Select.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Socket
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Socket.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Socket/INET.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IO/Socket/UNIX.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IPC
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IPC/Msg.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IPC/Semaphore.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IPC/SharedMem.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/IPC/SysV.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/List
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/List/Util
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/List/Util.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/List/Util/XS.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/MIME
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/MIME/Base64.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/MIME/QuotedPrint.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Math
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Math/BigInt
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Math/BigInt/FastCalc.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/O.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Opcode.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/POSIX.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/POSIX.pod
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/PerlIO
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/PerlIO/encoding.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/PerlIO/mmap.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/PerlIO/scalar.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/PerlIO/via.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/SDBM_File.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Scalar
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Scalar/Util.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Socket.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Storable.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Sub
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Sub/Util.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Sys
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Sys/Hostname.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Sys/Syslog.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Time
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Time/HiRes.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Time/Piece.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Time/Seconds.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Unicode
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Unicode/Collate
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Unicode/Collate.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Unicode/Collate/Locale.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/Unicode/Normalize.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/attributes.pm
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/B
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/B/B.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw/Bzip2
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw/Bzip2/Bzip2.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw/Zlib
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Compress/Raw/Zlib/Zlib.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Cwd
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Cwd/Cwd.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DB_File
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DB_File/DB_File.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Data
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Data/Dumper
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Data/Dumper/Dumper.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Devel
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Devel/Peek
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Devel/Peek/Peek.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/MD5
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/MD5/MD5.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Digest/SHA/SHA.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/Byte
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/Byte/Byte.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/CN
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/CN/CN.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/EBCDIC
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/EBCDIC/EBCDIC.so
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/Encode.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/JP
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/JP/JP.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/KR
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/KR/KR.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/Symbol
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/Symbol/Symbol.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/TW
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/TW/TW.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/Unicode
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Encode/Unicode/Unicode.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Fcntl
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Fcntl/Fcntl.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File/DosGlob
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File/DosGlob/DosGlob.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File/Glob
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File/Glob/Glob.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Filter
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Filter/Util
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Filter/Util/Call
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Filter/Util/Call/Call.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Hash
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Hash/Util
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Hash/Util/FieldHash
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Hash/Util/FieldHash/FieldHash.so
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Hash/Util/Util.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/I18N
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/I18N/Langinfo
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/I18N/Langinfo/Langinfo.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO/IO.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IPC
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IPC/SysV
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IPC/SysV/SysV.so
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/List
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/List/Util
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/List/Util/Util.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64/Base64.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Math
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Math/BigInt
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Math/BigInt/FastCalc
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Math/BigInt/FastCalc/FastCalc.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Opcode
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Opcode/Opcode.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/POSIX
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/POSIX/POSIX.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PerlIO
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/encoding
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/encoding/encoding.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/mmap
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/mmap/mmap.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/scalar
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/scalar/scalar.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/via
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PerlIO/via/via.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/SDBM_File
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/SDBM_File/SDBM_File.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Socket
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Socket/Socket.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Storable
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Storable/Storable.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Sys
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Sys/Hostname
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Sys/Hostname/Hostname.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Sys/Syslog
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Sys/Syslog/Syslog.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Time
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Time/HiRes
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Time/HiRes/HiRes.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Time/Piece
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Time/Piece/Piece.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unicode
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unicode/Collate
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unicode/Collate/Collate.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unicode/Normalize
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Unicode/Normalize/Normalize.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/attributes
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/attributes/attributes.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/mro
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/mro/mro.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/re
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/re/re.so
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/threads
+#usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/threads/shared
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/threads/shared/shared.so
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/threads/threads.so
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/encoding.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/lib.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/mro.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/ops.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/re.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/threads
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/threads.pm
+usr/lib/perl5/5.32.1/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/lib/perl5/site_perl
-#usr/lib/perl5/site_perl/5.30.0
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi
+#usr/lib/perl5/site_perl/5.32.1
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi
 #usr/share/man/man1/corelist.1
 #usr/share/man/man1/cpan.1
 #usr/share/man/man1/enc2xs.1
@@ -2002,7 +2029,13 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man1/perl5280delta.1
 #usr/share/man/man1/perl5281delta.1
 #usr/share/man/man1/perl5282delta.1
+#usr/share/man/man1/perl5283delta.1
 #usr/share/man/man1/perl5300delta.1
+#usr/share/man/man1/perl5301delta.1
+#usr/share/man/man1/perl5302delta.1
+#usr/share/man/man1/perl5303delta.1
+#usr/share/man/man1/perl5320delta.1
+#usr/share/man/man1/perl5321delta.1
 #usr/share/man/man1/perl561delta.1
 #usr/share/man/man1/perl56delta.1
 #usr/share/man/man1/perl581delta.1
@@ -2027,7 +2060,6 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man1/perlbs2000.1
 #usr/share/man/man1/perlbug.1
 #usr/share/man/man1/perlcall.1
-#usr/share/man/man1/perlce.1
 #usr/share/man/man1/perlcheat.1
 #usr/share/man/man1/perlclib.1
 #usr/share/man/man1/perlcn.1
@@ -2065,6 +2097,7 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man1/perlfunc.1
 #usr/share/man/man1/perlgit.1
 #usr/share/man/man1/perlglossary.1
+#usr/share/man/man1/perlgov.1
 #usr/share/man/man1/perlgpl.1
 #usr/share/man/man1/perlguts.1
 #usr/share/man/man1/perlhack.1
@@ -2129,6 +2162,7 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man1/perlriscos.1
 #usr/share/man/man1/perlrun.1
 #usr/share/man/man1/perlsec.1
+#usr/share/man/man1/perlsecpolicy.1
 #usr/share/man/man1/perlsolaris.1
 #usr/share/man/man1/perlsource.1
 #usr/share/man/man1/perlstyle.1
@@ -2167,13 +2201,13 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man1/pod2text.1
 #usr/share/man/man1/pod2usage.1
 #usr/share/man/man1/podchecker.1
-#usr/share/man/man1/podselect.1
 #usr/share/man/man1/prove.1
 #usr/share/man/man1/ptar.1
 #usr/share/man/man1/ptardiff.1
 #usr/share/man/man1/ptargrep.1
 #usr/share/man/man1/shasum.1
 #usr/share/man/man1/splain.1
+#usr/share/man/man1/streamzip.1
 #usr/share/man/man1/xsubpp.1
 #usr/share/man/man1/zipdetails.1
 #usr/share/man/man3/AnyDBM_File.3
@@ -2333,7 +2367,6 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man3/ExtUtils::Typemaps::InputMap.3
 #usr/share/man/man3/ExtUtils::Typemaps::OutputMap.3
 #usr/share/man/man3/ExtUtils::Typemaps::Type.3
-#usr/share/man/man3/ExtUtils::XSSymSet.3
 #usr/share/man/man3/ExtUtils::testlib.3
 #usr/share/man/man3/Fatal.3
 #usr/share/man/man3/Fcntl.3
@@ -2473,13 +2506,9 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man3/PerlIO::via::QuotedPrint.3
 #usr/share/man/man3/Pod::Checker.3
 #usr/share/man/man3/Pod::Escapes.3
-#usr/share/man/man3/Pod::Find.3
 #usr/share/man/man3/Pod::Html.3
-#usr/share/man/man3/Pod::InputObjects.3
 #usr/share/man/man3/Pod::Man.3
 #usr/share/man/man3/Pod::ParseLink.3
-#usr/share/man/man3/Pod::ParseUtils.3
-#usr/share/man/man3/Pod::Parser.3
 #usr/share/man/man3/Pod::Perldoc.3
 #usr/share/man/man3/Pod::Perldoc::BaseTo.3
 #usr/share/man/man3/Pod::Perldoc::GetOptsOO.3
@@ -2493,8 +2522,6 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man3/Pod::Perldoc::ToText.3
 #usr/share/man/man3/Pod::Perldoc::ToTk.3
 #usr/share/man/man3/Pod::Perldoc::ToXml.3
-#usr/share/man/man3/Pod::PlainText.3
-#usr/share/man/man3/Pod::Select.3
 #usr/share/man/man3/Pod::Simple.3
 #usr/share/man/man3/Pod::Simple::Checker.3
 #usr/share/man/man3/Pod::Simple::Debug.3
@@ -2502,6 +2529,7 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man3/Pod::Simple::DumpAsXML.3
 #usr/share/man/man3/Pod::Simple::HTML.3
 #usr/share/man/man3/Pod::Simple::HTMLBatch.3
+usr/share/man/man3/Pod::Simple::JustPod.3
 #usr/share/man/man3/Pod::Simple::LinkSection.3
 #usr/share/man/man3/Pod::Simple::Methody.3
 #usr/share/man/man3/Pod::Simple::PullParser.3
@@ -2742,4 +2770,3 @@ usr/lib/perl5/5.30.0/xxxMACHINExxx-linux-thread-multi/threads/shared.pm
 #usr/share/man/man3/vmsish.3
 #usr/share/man/man3/warnings.3
 #usr/share/man/man3/warnings::register.3
-usr/bin/perl
index a785d68880c330ac80c26b92dc2be73216d33c8e..1882c1ab69bb2fd1498bfb6955cbd8865dad7278 100644 (file)
@@ -1,6 +1,6 @@
-#usr/lib/perl5/site_perl/5.30.0/Apache
-usr/lib/perl5/site_perl/5.30.0/Apache/Htpasswd.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Apache
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Apache/Htpasswd
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Apache/Htpasswd/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Apache
+usr/lib/perl5/site_perl/5.32.1/Apache/Htpasswd.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Apache
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Apache/Htpasswd
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Apache/Htpasswd/.packlist
 #usr/share/man/man3/Apache::Htpasswd.3
index 446d45845b53c063874278eec9445bf6899b397a..5e9dc4de5066937321006dff40145887060f4174 100644 (file)
@@ -1,19 +1,19 @@
-#usr/lib/perl5/site_perl/5.30.0/CGI
-usr/lib/perl5/site_perl/5.30.0/CGI.pm
-#usr/lib/perl5/site_perl/5.30.0/CGI.pod
-usr/lib/perl5/site_perl/5.30.0/CGI/Carp.pm
-usr/lib/perl5/site_perl/5.30.0/CGI/Cookie.pm
-#usr/lib/perl5/site_perl/5.30.0/CGI/File
-usr/lib/perl5/site_perl/5.30.0/CGI/File/Temp.pm
-#usr/lib/perl5/site_perl/5.30.0/CGI/HTML
-usr/lib/perl5/site_perl/5.30.0/CGI/HTML/Functions.pm
-#usr/lib/perl5/site_perl/5.30.0/CGI/HTML/Functions.pod
-usr/lib/perl5/site_perl/5.30.0/CGI/Pretty.pm
-usr/lib/perl5/site_perl/5.30.0/CGI/Push.pm
-usr/lib/perl5/site_perl/5.30.0/CGI/Util.pm
-usr/lib/perl5/site_perl/5.30.0/Fh.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/CGI
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/CGI/.packlist
+#usr/lib/perl5/site_perl/5.32.1/CGI
+usr/lib/perl5/site_perl/5.32.1/CGI.pm
+#usr/lib/perl5/site_perl/5.32.1/CGI.pod
+usr/lib/perl5/site_perl/5.32.1/CGI/Carp.pm
+usr/lib/perl5/site_perl/5.32.1/CGI/Cookie.pm
+#usr/lib/perl5/site_perl/5.32.1/CGI/File
+usr/lib/perl5/site_perl/5.32.1/CGI/File/Temp.pm
+#usr/lib/perl5/site_perl/5.32.1/CGI/HTML
+usr/lib/perl5/site_perl/5.32.1/CGI/HTML/Functions.pm
+#usr/lib/perl5/site_perl/5.32.1/CGI/HTML/Functions.pod
+usr/lib/perl5/site_perl/5.32.1/CGI/Pretty.pm
+usr/lib/perl5/site_perl/5.32.1/CGI/Push.pm
+usr/lib/perl5/site_perl/5.32.1/CGI/Util.pm
+usr/lib/perl5/site_perl/5.32.1/Fh.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/CGI
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/CGI/.packlist
 #usr/share/man/man3/CGI.3
 #usr/share/man/man3/CGI::Carp.3
 #usr/share/man/man3/CGI::Cookie.3
index 7364a76d011806617f6b690d361e186d71ba0089..629eca8af32ee38cbdfdf88cac474659ff4f2fe5 100644 (file)
@@ -1,16 +1,16 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/SQLite
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/SQLite.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/SQLite/Cookbook.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBD
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBD/SQLite
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBD/SQLite/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBD/SQLite/SQLite.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBD/SQLite/SQLite.so
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/share
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/share/dist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/share/dist/DBD-SQLite
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/share/dist/DBD-SQLite/sqlite3.c
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/share/dist/DBD-SQLite/sqlite3.h
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/share/dist/DBD-SQLite/sqlite3ext.h
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/SQLite
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/SQLite.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/SQLite/Cookbook.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBD
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBD/SQLite
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBD/SQLite/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBD/SQLite/SQLite.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBD/SQLite/SQLite.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/share
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/share/dist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/share/dist/DBD-SQLite
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/share/dist/DBD-SQLite/sqlite3.c
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/share/dist/DBD-SQLite/sqlite3.h
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/share/dist/DBD-SQLite/sqlite3ext.h
 #usr/share/man/man3/DBD::SQLite.3
 #usr/share/man/man3/DBD::SQLite::Cookbook.3
index f5540ad423763868ea6ed2f48502331c7f2cc56a..c924d8489e1a4fc5083b190ad5498fdfce70b550 100644 (file)
@@ -1,89 +1,89 @@
 usr/bin/dbilogstrip
 usr/bin/dbiprof
 usr/bin/dbiproxy
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Bundle/DBI.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/DBM.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/ExampleP.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/File
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/File.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/File/Developers.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/File/HowTo.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/File/Roadmap.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy/Base.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy/classic.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy/pedantic.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy/rush.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/Base.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/corostream.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/null.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/pipeone.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/stream.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/NullP.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Proxy.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBD/Sponge.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Changes.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Const
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfo
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfo/ANSI.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfo/ODBC.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfoReturn.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfoType.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/DBD
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/DBD.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/DBD/Metadata.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/DBD/SqlEngine
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/DBD/SqlEngine.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/DBD/SqlEngine/Developers.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/DBD/SqlEngine/HowTo.pod
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/FAQ.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Execute.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Request.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Response.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Serializer
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Serializer/Base.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Serializer/DataDumper.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Serializer/Storable.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Transport
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Transport/Base.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Transport/pipeone.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Transport/stream.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Profile.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/ProfileData.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/ProfileDumper
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/ProfileDumper.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/ProfileDumper/Apache.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/ProfileSubs.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/ProxyServer.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/PurePerl.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/SQL
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/SQL/Nano.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Util
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Util/CacheMemory.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/Util/_accessor.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/DBI/W32ODBC.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Win32
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Win32/DBIODBC.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/DBI.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/DBI.so
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/DBIXS.h
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/Driver.xst
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/Driver_xst.h
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbd_xsh.h
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbi_sql.h
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbipport.h
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbivport.h
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbixs_rev.h
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/dbixs_rev.pl
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Bundle/DBI.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/DBM.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/ExampleP.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/File
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/File.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/File/Developers.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/File/HowTo.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/File/Roadmap.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy/Base.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy/classic.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy/pedantic.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Policy/rush.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/Base.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/corostream.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/null.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/pipeone.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Gofer/Transport/stream.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/NullP.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Proxy.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBD/Sponge.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Changes.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Const
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfo
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfo/ANSI.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfo/ODBC.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfoReturn.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Const/GetInfoType.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/DBD
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/DBD.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/DBD/Metadata.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/DBD/SqlEngine
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/DBD/SqlEngine.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/DBD/SqlEngine/Developers.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/DBD/SqlEngine/HowTo.pod
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/FAQ.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Execute.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Request.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Response.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Serializer
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Serializer/Base.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Serializer/DataDumper.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Serializer/Storable.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Transport
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Transport/Base.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Transport/pipeone.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Gofer/Transport/stream.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Profile.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/ProfileData.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/ProfileDumper
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/ProfileDumper.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/ProfileDumper/Apache.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/ProfileSubs.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/ProxyServer.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/PurePerl.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/SQL
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/SQL/Nano.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Util
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Util/CacheMemory.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/Util/_accessor.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/DBI/W32ODBC.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Win32
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Win32/DBIODBC.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/DBI.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/DBI.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/DBIXS.h
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/Driver.xst
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/Driver_xst.h
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbd_xsh.h
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbi_sql.h
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbipport.h
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbivport.h
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/DBI/dbixs_rev.h
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/dbixs_rev.pl
 #usr/share/man/man1/dbilogstrip.1
 #usr/share/man/man1/dbiprof.1
 #usr/share/man/man1/dbiproxy.1
index b038e9b42a8d62276e1bb9ab1c3b4dc02d6e61bf..14ebab37134872145e9b2c5db1172e622b9320b3 100644 (file)
@@ -1,15 +1,15 @@
-#usr/lib/perl5/site_perl/5.30.0/Device
-#usr/lib/perl5/site_perl/5.30.0/Device/Modem
-usr/lib/perl5/site_perl/5.30.0/Device/Modem.pm
-#usr/lib/perl5/site_perl/5.30.0/Device/Modem/FAQ.pod
-#usr/lib/perl5/site_perl/5.30.0/Device/Modem/Log
-usr/lib/perl5/site_perl/5.30.0/Device/Modem/Log/File.pm
-usr/lib/perl5/site_perl/5.30.0/Device/Modem/Log/Syslog.pm
-#usr/lib/perl5/site_perl/5.30.0/Device/Modem/Protocol
-usr/lib/perl5/site_perl/5.30.0/Device/Modem/Protocol/Xmodem.pm
-usr/lib/perl5/site_perl/5.30.0/Device/Modem/UsRobotics.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Device/Modem
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Device/Modem/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Device
+#usr/lib/perl5/site_perl/5.32.1/Device/Modem
+usr/lib/perl5/site_perl/5.32.1/Device/Modem.pm
+#usr/lib/perl5/site_perl/5.32.1/Device/Modem/FAQ.pod
+#usr/lib/perl5/site_perl/5.32.1/Device/Modem/Log
+usr/lib/perl5/site_perl/5.32.1/Device/Modem/Log/File.pm
+usr/lib/perl5/site_perl/5.32.1/Device/Modem/Log/Syslog.pm
+#usr/lib/perl5/site_perl/5.32.1/Device/Modem/Protocol
+usr/lib/perl5/site_perl/5.32.1/Device/Modem/Protocol/Xmodem.pm
+usr/lib/perl5/site_perl/5.32.1/Device/Modem/UsRobotics.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Device/Modem
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Device/Modem/.packlist
 #usr/share/man/man3/Device::Modem.3
 #usr/share/man/man3/Device::Modem::FAQ.3
 #usr/share/man/man3/Device::Modem::Log::File.3
index d70be6e3d5419d69195e285e3d2735589ad11333..102ea21ae566be4445ad4af7cb53bf67a0f644b2 100644 (file)
@@ -1,10 +1,10 @@
 #usr/bin/modemtest
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Device
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Device/SerialPort.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Device
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Device/SerialPort
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Device/SerialPort/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Device/SerialPort/SerialPort.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Device/SerialPort/SerialPort.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Device
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Device/SerialPort.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Device
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Device/SerialPort
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Device/SerialPort/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Device/SerialPort/SerialPort.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Device/SerialPort/SerialPort.so
 #usr/share/man/man1/modemtest.1
 #usr/share/man/man3/Device::SerialPort.3
index 25fd4ad4591a789fa78f2557c40d4598cac74e53..00a756b9d25a54d2618b51ebd487aaf3ec3b6c04 100644 (file)
@@ -1,8 +1,8 @@
-#usr/lib/perl5/site_perl/5.30.0/Email
-#usr/lib/perl5/site_perl/5.30.0/Email/Date
-usr/lib/perl5/site_perl/5.30.0/Email/Date/Format.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Email
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Email/Date
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Email/Date/Format
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Email/Date/Format/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Email
+#usr/lib/perl5/site_perl/5.32.1/Email/Date
+usr/lib/perl5/site_perl/5.32.1/Email/Date/Format.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Email
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Email/Date
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Email/Date/Format
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Email/Date/Format/.packlist
 #usr/share/man/man3/Email::Date::Format.3
index 2660d436d44db03d38f7040990beb432140f109a..47b0f9aa0fc4e78bce452666bea1d1c31ff9478b 100644 (file)
@@ -1,90 +1,90 @@
-#usr/lib/perl5/site_perl/5.30.0/Font
-#usr/lib/perl5/site_perl/5.30.0/Font/TTF
-usr/lib/perl5/site_perl/5.30.0/Font/TTF.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/AATKern.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/AATutils.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Anchor.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Bsln.pm
-#usr/lib/perl5/site_perl/5.30.0/Font/TTF/Changes_old.txt
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Cmap.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Coverage.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Cvt_.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/DSIG.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Delta.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Dumper.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/EBDT.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/EBLC.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Fdsc.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Feat.pm
-#usr/lib/perl5/site_perl/5.30.0/Font/TTF/Features
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Features/Cvar.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Features/Size.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Features/Sset.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Fmtx.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Font.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Fpgm.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/GDEF.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/GPOS.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/GSUB.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Glat.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Gloc.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Glyf.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Glyph.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/GrFeat.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Hdmx.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Head.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Hhea.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Hmtx.pm
-#usr/lib/perl5/site_perl/5.30.0/Font/TTF/Kern
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Kern.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Kern/ClassArray.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Kern/CompactClassArray.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Kern/OrderedList.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Kern/StateTable.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Kern/Subtable.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/LTSH.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Loca.pm
-#usr/lib/perl5/site_perl/5.30.0/Font/TTF/Manual.pod
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Maxp.pm
-#usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort/Chain.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort/Contextual.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort/Insertion.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort/Ligature.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort/Noncontextual.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort/Rearrangement.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort/Subtable.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Name.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/OS_2.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/OTTags.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/OldCmap.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/OldMort.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/PCLT.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/PSNames.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Post.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Prep.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Prop.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Segarr.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Silf.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Sill.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Table.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Ttc.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Ttopen.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Useall.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Utils.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Vhea.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Vmtx.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Win32.pm
-#usr/lib/perl5/site_perl/5.30.0/Font/TTF/Woff
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Woff.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Woff/MetaData.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/Woff/PrivateData.pm
-usr/lib/perl5/site_perl/5.30.0/Font/TTF/XMLparse.pm
-#usr/lib/perl5/site_perl/5.30.0/ttfmod.pl
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Font
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Font/TTF
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Font/TTF/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Font
+#usr/lib/perl5/site_perl/5.32.1/Font/TTF
+usr/lib/perl5/site_perl/5.32.1/Font/TTF.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/AATKern.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/AATutils.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Anchor.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Bsln.pm
+#usr/lib/perl5/site_perl/5.32.1/Font/TTF/Changes_old.txt
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Cmap.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Coverage.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Cvt_.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/DSIG.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Delta.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Dumper.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/EBDT.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/EBLC.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Fdsc.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Feat.pm
+#usr/lib/perl5/site_perl/5.32.1/Font/TTF/Features
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Features/Cvar.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Features/Size.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Features/Sset.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Fmtx.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Font.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Fpgm.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/GDEF.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/GPOS.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/GSUB.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Glat.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Gloc.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Glyf.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Glyph.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/GrFeat.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Hdmx.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Head.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Hhea.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Hmtx.pm
+#usr/lib/perl5/site_perl/5.32.1/Font/TTF/Kern
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Kern.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Kern/ClassArray.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Kern/CompactClassArray.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Kern/OrderedList.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Kern/StateTable.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Kern/Subtable.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/LTSH.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Loca.pm
+#usr/lib/perl5/site_perl/5.32.1/Font/TTF/Manual.pod
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Maxp.pm
+#usr/lib/perl5/site_perl/5.32.1/Font/TTF/Mort
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Mort.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Mort/Chain.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Mort/Contextual.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Mort/Insertion.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Mort/Ligature.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Mort/Noncontextual.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Mort/Rearrangement.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Mort/Subtable.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Name.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/OS_2.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/OTTags.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/OldCmap.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/OldMort.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/PCLT.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/PSNames.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Post.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Prep.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Prop.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Segarr.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Silf.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Sill.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Table.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Ttc.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Ttopen.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Useall.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Utils.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Vhea.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Vmtx.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Win32.pm
+#usr/lib/perl5/site_perl/5.32.1/Font/TTF/Woff
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Woff.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Woff/MetaData.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/Woff/PrivateData.pm
+usr/lib/perl5/site_perl/5.32.1/Font/TTF/XMLparse.pm
+#usr/lib/perl5/site_perl/5.32.1/ttfmod.pl
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Font
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Font/TTF
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Font/TTF/.packlist
 #usr/share/man/man3/Font::TTF.3
 #usr/share/man/man3/Font::TTF::AATKern.3
 #usr/share/man/man3/Font::TTF::AATutils.3
index ad90bcabdda0216d94181fcddc7c8d155b7595ec..465d84ce5b6010bee06268ffe69834724cdf87f8 100644 (file)
@@ -1,16 +1,16 @@
 #usr/bin/bdf2gdfont.pl
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/GD
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/GD.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/GD/Image.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/GD/Polygon.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/GD/Polyline.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/GD/Simple.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/GD
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/GD/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/GD/GD.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/GD/GD.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/GD/autosplit.ix
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/qd.pl
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/GD
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/GD.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/GD/Image.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/GD/Polygon.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/GD/Polyline.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/GD/Simple.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/GD
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/GD/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/GD/GD.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/GD/GD.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/GD/autosplit.ix
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/qd.pl
 #usr/share/man/man1/bdf2gdfont.pl.1
 #usr/share/man/man3/GD.3
 #usr/share/man/man3/GD::Image.3
index d464ae66e31de0d73a3ae50f4fd86579b9619039..17b07e7afb7af9c4a7636d8cb0304f5f14a54723 100644 (file)
@@ -1,4 +1,4 @@
-usr/lib/perl5/site_perl/5.30.0/IO/String.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO/String
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/IO/String/.packlist
+usr/lib/perl5/site_perl/5.32.1/IO/String.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO/String
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/IO/String/.packlist
 #usr/share/man/man3/IO::String.3
index babab0525c1489dac7eac8fd96fa39d08f32d2cd..0164a50a0fe98ded06a4e5fbe0122232793295f5 100644 (file)
@@ -1,6 +1,6 @@
-usr/lib/perl5/site_perl/5.30.0/MIME/Lite.pm
-#usr/lib/perl5/site_perl/5.30.0/MIME/changes.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/Lite
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/Lite/.packlist
+usr/lib/perl5/site_perl/5.32.1/MIME/Lite.pm
+#usr/lib/perl5/site_perl/5.32.1/MIME/changes.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/Lite
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/Lite/.packlist
 #usr/share/man/man3/MIME::Lite.3
 #usr/share/man/man3/MIME::changes.3
index 74f475bf9ba92deaf552f7cb5e328477ff770065..d957db23721053e0e80d1930226c82f52c8abf63 100644 (file)
@@ -1,6 +1,6 @@
-#usr/lib/perl5/site_perl/5.30.0/Net/CIDR
-usr/lib/perl5/site_perl/5.30.0/Net/CIDR/Lite.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/CIDR
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/CIDR/Lite
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/CIDR/Lite/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Net/CIDR
+usr/lib/perl5/site_perl/5.32.1/Net/CIDR/Lite.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/CIDR
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/CIDR/Lite
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/CIDR/Lite/.packlist
 #usr/share/man/man3/Net::CIDR::Lite.3
index 5b30b2e3c6b102c4ae8ed4a293be9b375f7bdfb2..f937f1e9c58f2ab0c767e839e3cfa4302fb021f5 100644 (file)
@@ -1,73 +1,73 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetAddr
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetAddr/IP
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetAddr/IP.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/InetBase.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/Lite.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/Util.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/UtilPP.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/Util_IS.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/_inet_ntop.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/_inet_pton.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/_packzeros.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/autosplit.ix
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/inet_any2n.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/inet_n2ad.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/inet_n2dx.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/inet_ntoa.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/ipv6_aton.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/ipv6_ntoa.al
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/Util
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/Util/Util.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/Util/autosplit.ix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_128x10.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_128x2.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_bcd2bin.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_bcdcheck.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_bin2bcdn.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_deadlen.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_sa128.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/add128.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/addconst.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/autosplit.ix
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bcd2bin.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bcdn2bin.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bcdn2txt.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bin2bcd.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bin2bcdn.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/comp128.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/hasbits.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/ipanyto6.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/ipv4to6.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/ipv6to4.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/mask4to6.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/maskanyto6.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/notcontiguous.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/shiftleft.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/simple_pack.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/slowadd128.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/sub128.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/_compV6.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/_compact_v6.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/_splitplan.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/_splitref.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/autosplit.ix
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/canon.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/coalesce.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/compactref.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/do_prefix.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/hostenum.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/mod_version.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/nprefix.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/prefix.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/re.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/re6.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/short.al
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/wildcard.al
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetAddr
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetAddr/IP
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetAddr/IP.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/InetBase.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/Lite.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/Util.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/UtilPP.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetAddr/IP/Util_IS.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/_inet_ntop.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/_inet_pton.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/_packzeros.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/autosplit.ix
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/inet_any2n.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/inet_n2ad.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/inet_n2dx.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/inet_ntoa.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/ipv6_aton.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/InetBase/ipv6_ntoa.al
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/Util
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/Util/Util.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/Util/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_128x10.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_128x2.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_bcd2bin.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_bcdcheck.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_bin2bcdn.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_deadlen.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/_sa128.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/add128.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/addconst.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/autosplit.ix
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bcd2bin.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bcdn2bin.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bcdn2txt.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bin2bcd.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/bin2bcdn.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/comp128.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/hasbits.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/ipanyto6.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/ipv4to6.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/ipv6to4.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/mask4to6.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/maskanyto6.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/notcontiguous.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/shiftleft.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/simple_pack.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/slowadd128.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/UtilPP/sub128.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/_compV6.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/_compact_v6.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/_splitplan.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/_splitref.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/autosplit.ix
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/canon.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/coalesce.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/compactref.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/do_prefix.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/hostenum.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/mod_version.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/nprefix.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/prefix.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/re.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/re6.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/short.al
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetAddr/IP/wildcard.al
 #usr/share/man/man3/NetAddr::IP.3
 #usr/share/man/man3/NetAddr::IP::InetBase.3
 #usr/share/man/man3/NetAddr::IP::Lite.3
index 121101850638cbc774de6223a805311fac8d2845..8532e129f43e096609eccc29b8593019a2f8b03e 100644 (file)
-usr/lib/perl5/site_perl/5.30.0/PDF
-usr/lib/perl5/site_perl/5.30.0/PDF/API2
-usr/lib/perl5/site_perl/5.30.0/PDF/API2.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Annotation.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Array.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Bool.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Dict.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/File.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Filter
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Filter.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Filter/ASCII85Decode.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Filter/ASCIIHexDecode.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Filter/FlateDecode.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Filter/LZWDecode.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Filter/RunLengthDecode.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Literal.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Name.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Null.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Number.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Objind.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Page.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Pages.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/String.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Utils.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Content
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Content.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Content/Text.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Lite.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Matrix.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/NamedDestination.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Outline.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Outlines.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Page.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/BaseFont.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CJKFont
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CJKFont.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CJKFont/adobemingstdlightacro.data
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CJKFont/adobemyungjostdmediumacro.data
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CJKFont/adobesongstdlightacro.data
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CJKFont/kozgopromediumacro.data
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CJKFont/kozminproregularacro.data
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CMap
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CMap/japanese.cmap
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CMap/korean.cmap
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CMap/simplified.cmap
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CMap/traditional.cmap
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/TrueType
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/TrueType.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/TrueType/FontFile.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace/DeviceN.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace/Indexed
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace/Indexed.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace/Indexed/ACTFile.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace/Indexed/Hue.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace/Indexed/WebColor.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace/Separation.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Colors.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ExtGState.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/BdFont.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/bankgothic.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/courier.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/courierbold.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/courierboldoblique.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/courieroblique.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/georgia.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/georgiabold.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/georgiabolditalic.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/georgiaitalic.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/helvetica.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/helveticabold.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/helveticaboldoblique.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/helveticaoblique.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/symbol.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/timesbold.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/timesbolditalic.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/timesitalic.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/timesroman.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/trebuchet.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/trebuchetbold.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/trebuchetbolditalic.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/trebuchetitalic.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/verdana.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/verdanabold.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/verdanabolditalic.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/verdanaitalic.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/webdings.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/wingdings.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont/zapfdingbats.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/Postscript.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/SynFont.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Glyphs.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/PaperSizes.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Pattern.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Shading.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/UniFont.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form/BarCode
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form/BarCode.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form/BarCode/codabar.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form/BarCode/code128.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form/BarCode/code3of9.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form/BarCode/ean13.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form/BarCode/int2of5.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form/Hybrid.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image/GD.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image/GIF.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image/JPEG.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image/PNG.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image/PNM.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image/TIFF
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image/TIFF.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image/TIFF/File.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/uniglyph.txt
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/UniWrap.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Util.pm
-usr/lib/perl5/site_perl/5.30.0/PDF/API2/Win32.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PDF
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PDF/API2
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/PDF/API2/.packlist
+usr/lib/perl5/site_perl/5.32.1/PDF
+usr/lib/perl5/site_perl/5.32.1/PDF/API2
+usr/lib/perl5/site_perl/5.32.1/PDF/API2.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Annotation.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Array.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Bool.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Dict.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/File.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Filter
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Filter.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Filter/ASCII85Decode.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Filter/ASCIIHexDecode.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Filter/FlateDecode.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Filter/LZWDecode.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Filter/RunLengthDecode.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Literal.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Name.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Null.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Number.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Objind.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Page.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Pages.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/String.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Basic/PDF/Utils.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Content
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Content.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Content/Text.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Lite.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Matrix.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/NamedDestination.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Outline.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Outlines.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Page.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/BaseFont.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CJKFont
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CJKFont.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CJKFont/adobemingstdlightacro.data
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CJKFont/adobemyungjostdmediumacro.data
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CJKFont/adobesongstdlightacro.data
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CJKFont/kozgopromediumacro.data
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CJKFont/kozminproregularacro.data
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CMap
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CMap/japanese.cmap
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CMap/korean.cmap
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CMap/simplified.cmap
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/CMap/traditional.cmap
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/TrueType
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/TrueType.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/CIDFont/TrueType/FontFile.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ColorSpace
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ColorSpace.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ColorSpace/DeviceN.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ColorSpace/Indexed
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ColorSpace/Indexed.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ColorSpace/Indexed/ACTFile.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ColorSpace/Indexed/Hue.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ColorSpace/Indexed/WebColor.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ColorSpace/Separation.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Colors.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/ExtGState.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/BdFont.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/bankgothic.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/courier.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/courierbold.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/courierboldoblique.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/courieroblique.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/georgia.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/georgiabold.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/georgiabolditalic.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/georgiaitalic.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/helvetica.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/helveticabold.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/helveticaboldoblique.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/helveticaoblique.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/symbol.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/timesbold.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/timesbolditalic.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/timesitalic.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/timesroman.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/trebuchet.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/trebuchetbold.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/trebuchetbolditalic.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/trebuchetitalic.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/verdana.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/verdanabold.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/verdanabolditalic.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/verdanaitalic.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/webdings.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/wingdings.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/CoreFont/zapfdingbats.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/Postscript.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Font/SynFont.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Glyphs.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/PaperSizes.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Pattern.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/Shading.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/UniFont.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form/BarCode
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form/BarCode.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form/BarCode/codabar.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form/BarCode/code128.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form/BarCode/code3of9.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form/BarCode/ean13.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form/BarCode/int2of5.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Form/Hybrid.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image/GD.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image/GIF.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image/JPEG.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image/PNG.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image/PNM.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image/TIFF
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image/TIFF.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/XObject/Image/TIFF/File.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Resource/uniglyph.txt
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/UniWrap.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Util.pm
+usr/lib/perl5/site_perl/5.32.1/PDF/API2/Win32.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PDF
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PDF/API2
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/PDF/API2/.packlist
 #usr/share/man/man3/PDF::API2.3
 #usr/share/man/man3/PDF::API2::Annotation.3
 #usr/share/man/man3/PDF::API2::Basic::PDF::Array.3
index b3df6e9973beb63cb0cfeeae766f0f81634a174f..4d7ac2ac37c62dd3a48948de68927f1a28710df5 100644 (file)
@@ -1,6 +1,6 @@
-usr/lib/perl5/site_perl/5.30.0/Sort
-usr/lib/perl5/site_perl/5.30.0/Sort/Naturally.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Sort
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Sort/Naturally
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Sort/Naturally/.packlist
+usr/lib/perl5/site_perl/5.32.1/Sort
+usr/lib/perl5/site_perl/5.32.1/Sort/Naturally.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Sort
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Sort/Naturally
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Sort/Naturally/.packlist
 usr/share/man/man3/Sort::Naturally.3
index 331831f7b42618ce06805ce4fe43248230aa8517..5c2a88422b4d9ce5d28648922f5d68c7c9ab79a0 100644 (file)
@@ -1,4 +1,4 @@
-usr/lib/perl5/site_perl/5.30.0/Switch.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Switch
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Switch/.packlist
+usr/lib/perl5/site_perl/5.32.1/Switch.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Switch
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Switch/.packlist
 #usr/share/man/man3/Switch.3
index ef1333f7359d5ec310bde44fdea82316b6a90b63..0120a89fb0243e488abb78a2bf8e33544024d132 100644 (file)
@@ -1,8 +1,8 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Text
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Text/CSV_XS.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Text
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Text/CSV_XS
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Text/CSV_XS/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Text/CSV_XS/CSV_XS.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Text/CSV_XS/CSV_XS.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Text
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Text/CSV_XS.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Text
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Text/CSV_XS
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Text/CSV_XS/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Text/CSV_XS/CSV_XS.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Text/CSV_XS/CSV_XS.so
 #usr/share/man/man3/Text::CSV_XS.3
index 8582c82e0f1af8509c956fbe52c5c6dffcce2458..de184ce25b7aee994c3fb6765e3b89576891c73e 100644 (file)
@@ -12,14 +12,14 @@ usr/bin/rrdupdate
 #usr/lib/librrd.so
 usr/lib/librrd.so.8
 usr/lib/librrd.so.8.2.1
-usr/lib/perl5/site_perl/5.30.0/RRDp.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/RRDs.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/RRDp
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/RRDp/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/RRDs
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/RRDs/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/RRDs/RRDs.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/RRDs/RRDs.so
+usr/lib/perl5/site_perl/5.32.1/RRDp.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/RRDs.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/RRDp
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/RRDp/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/RRDs
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/RRDs/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/RRDs/RRDs.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/RRDs/RRDs.so
 #usr/lib/pkgconfig/librrd.pc
 #usr/share/doc/rrdtool-1.7.2
 #usr/share/doc/rrdtool-1.7.2/html
index f028767e2b39dfd1757c12a11542bdb4e5bf611f..d1a9fd34daa50dd53d70f9e6652c8b9b56688497 100644 (file)
 #usr/bin/ccache-swig
 #usr/bin/swig
-#usr/share/man/man1/ccache-swig.1
 #usr/share/swig
-#usr/share/swig/3.0.12
-#usr/share/swig/3.0.12/allegrocl
-#usr/share/swig/3.0.12/allegrocl/allegrocl.swg
-#usr/share/swig/3.0.12/allegrocl/inout_typemaps.i
-#usr/share/swig/3.0.12/allegrocl/longlongs.i
-#usr/share/swig/3.0.12/allegrocl/std_list.i
-#usr/share/swig/3.0.12/allegrocl/std_string.i
-#usr/share/swig/3.0.12/allegrocl/typemaps.i
-#usr/share/swig/3.0.12/allkw.swg
-#usr/share/swig/3.0.12/attribute.i
-#usr/share/swig/3.0.12/carrays.i
-#usr/share/swig/3.0.12/cdata.i
-#usr/share/swig/3.0.12/cffi
-#usr/share/swig/3.0.12/cffi/cffi.swg
-#usr/share/swig/3.0.12/chicken
-#usr/share/swig/3.0.12/chicken/chicken.swg
-#usr/share/swig/3.0.12/chicken/chickenkw.swg
-#usr/share/swig/3.0.12/chicken/chickenrun.swg
-#usr/share/swig/3.0.12/chicken/multi-generic.scm
-#usr/share/swig/3.0.12/chicken/std_string.i
-#usr/share/swig/3.0.12/chicken/swigclosprefix.scm
-#usr/share/swig/3.0.12/chicken/tinyclos-multi-generic.patch
-#usr/share/swig/3.0.12/chicken/typemaps.i
-#usr/share/swig/3.0.12/clisp
-#usr/share/swig/3.0.12/clisp/clisp.swg
-#usr/share/swig/3.0.12/cmalloc.i
-#usr/share/swig/3.0.12/constraints.i
-#usr/share/swig/3.0.12/cpointer.i
-#usr/share/swig/3.0.12/csharp
-#usr/share/swig/3.0.12/csharp/arrays_csharp.i
-#usr/share/swig/3.0.12/csharp/boost_intrusive_ptr.i
-#usr/share/swig/3.0.12/csharp/boost_shared_ptr.i
-#usr/share/swig/3.0.12/csharp/csharp.swg
-#usr/share/swig/3.0.12/csharp/csharphead.swg
-#usr/share/swig/3.0.12/csharp/csharpkw.swg
-#usr/share/swig/3.0.12/csharp/director.swg
-#usr/share/swig/3.0.12/csharp/enums.swg
-#usr/share/swig/3.0.12/csharp/enumsimple.swg
-#usr/share/swig/3.0.12/csharp/enumtypesafe.swg
-#usr/share/swig/3.0.12/csharp/std_array.i
-#usr/share/swig/3.0.12/csharp/std_auto_ptr.i
-#usr/share/swig/3.0.12/csharp/std_common.i
-#usr/share/swig/3.0.12/csharp/std_deque.i
-#usr/share/swig/3.0.12/csharp/std_except.i
-#usr/share/swig/3.0.12/csharp/std_map.i
-#usr/share/swig/3.0.12/csharp/std_pair.i
-#usr/share/swig/3.0.12/csharp/std_shared_ptr.i
-#usr/share/swig/3.0.12/csharp/std_string.i
-#usr/share/swig/3.0.12/csharp/std_vector.i
-#usr/share/swig/3.0.12/csharp/std_wstring.i
-#usr/share/swig/3.0.12/csharp/stl.i
-#usr/share/swig/3.0.12/csharp/swiginterface.i
-#usr/share/swig/3.0.12/csharp/swigtype_inout.i
-#usr/share/swig/3.0.12/csharp/typemaps.i
-#usr/share/swig/3.0.12/csharp/wchar.i
-#usr/share/swig/3.0.12/cstring.i
-#usr/share/swig/3.0.12/cwstring.i
-#usr/share/swig/3.0.12/d
-#usr/share/swig/3.0.12/d/boost_shared_ptr.i
-#usr/share/swig/3.0.12/d/carrays.i
-#usr/share/swig/3.0.12/d/cpointer.i
-#usr/share/swig/3.0.12/d/d.swg
-#usr/share/swig/3.0.12/d/dclassgen.swg
-#usr/share/swig/3.0.12/d/ddirectives.swg
-#usr/share/swig/3.0.12/d/denums.swg
-#usr/share/swig/3.0.12/d/dexception.swg
-#usr/share/swig/3.0.12/d/dhead.swg
-#usr/share/swig/3.0.12/d/director.swg
-#usr/share/swig/3.0.12/d/dkw.swg
-#usr/share/swig/3.0.12/d/dmemberfunctionpointers.swg
-#usr/share/swig/3.0.12/d/doperators.swg
-#usr/share/swig/3.0.12/d/dprimitives.swg
-#usr/share/swig/3.0.12/d/dstrings.swg
-#usr/share/swig/3.0.12/d/dswigtype.swg
-#usr/share/swig/3.0.12/d/dvoid.swg
-#usr/share/swig/3.0.12/d/std_common.i
-#usr/share/swig/3.0.12/d/std_deque.i
-#usr/share/swig/3.0.12/d/std_except.i
-#usr/share/swig/3.0.12/d/std_map.i
-#usr/share/swig/3.0.12/d/std_pair.i
-#usr/share/swig/3.0.12/d/std_shared_ptr.i
-#usr/share/swig/3.0.12/d/std_string.i
-#usr/share/swig/3.0.12/d/std_vector.i
-#usr/share/swig/3.0.12/d/stl.i
-#usr/share/swig/3.0.12/d/typemaps.i
-#usr/share/swig/3.0.12/d/wrapperloader.swg
-#usr/share/swig/3.0.12/director_common.swg
-#usr/share/swig/3.0.12/exception.i
-#usr/share/swig/3.0.12/gcj
-#usr/share/swig/3.0.12/gcj/cni.i
-#usr/share/swig/3.0.12/gcj/cni.swg
-#usr/share/swig/3.0.12/gcj/javaprims.i
-#usr/share/swig/3.0.12/go
-#usr/share/swig/3.0.12/go/cdata.i
-#usr/share/swig/3.0.12/go/exception.i
-#usr/share/swig/3.0.12/go/go.swg
-#usr/share/swig/3.0.12/go/gokw.swg
-#usr/share/swig/3.0.12/go/goruntime.swg
-#usr/share/swig/3.0.12/go/gostring.swg
-#usr/share/swig/3.0.12/go/std_common.i
-#usr/share/swig/3.0.12/go/std_deque.i
-#usr/share/swig/3.0.12/go/std_except.i
-#usr/share/swig/3.0.12/go/std_list.i
-#usr/share/swig/3.0.12/go/std_map.i
-#usr/share/swig/3.0.12/go/std_pair.i
-#usr/share/swig/3.0.12/go/std_string.i
-#usr/share/swig/3.0.12/go/std_vector.i
-#usr/share/swig/3.0.12/go/stl.i
-#usr/share/swig/3.0.12/go/typemaps.i
-#usr/share/swig/3.0.12/guile
-#usr/share/swig/3.0.12/guile/common.scm
-#usr/share/swig/3.0.12/guile/cplusplus.i
-#usr/share/swig/3.0.12/guile/guile.i
-#usr/share/swig/3.0.12/guile/guile_scm.swg
-#usr/share/swig/3.0.12/guile/guile_scm_run.swg
-#usr/share/swig/3.0.12/guile/guilemain.i
-#usr/share/swig/3.0.12/guile/interpreter.i
-#usr/share/swig/3.0.12/guile/list-vector.i
-#usr/share/swig/3.0.12/guile/pointer-in-out.i
-#usr/share/swig/3.0.12/guile/ports.i
-#usr/share/swig/3.0.12/guile/std_common.i
-#usr/share/swig/3.0.12/guile/std_deque.i
-#usr/share/swig/3.0.12/guile/std_except.i
-#usr/share/swig/3.0.12/guile/std_map.i
-#usr/share/swig/3.0.12/guile/std_pair.i
-#usr/share/swig/3.0.12/guile/std_string.i
-#usr/share/swig/3.0.12/guile/std_vector.i
-#usr/share/swig/3.0.12/guile/stl.i
-#usr/share/swig/3.0.12/guile/swigrun.i
-#usr/share/swig/3.0.12/guile/typemaps.i
-#usr/share/swig/3.0.12/intrusive_ptr.i
-#usr/share/swig/3.0.12/inttypes.i
-#usr/share/swig/3.0.12/java
-#usr/share/swig/3.0.12/java/arrays_java.i
-#usr/share/swig/3.0.12/java/boost_intrusive_ptr.i
-#usr/share/swig/3.0.12/java/boost_shared_ptr.i
-#usr/share/swig/3.0.12/java/director.swg
-#usr/share/swig/3.0.12/java/enums.swg
-#usr/share/swig/3.0.12/java/enumsimple.swg
-#usr/share/swig/3.0.12/java/enumtypesafe.swg
-#usr/share/swig/3.0.12/java/enumtypeunsafe.swg
-#usr/share/swig/3.0.12/java/java.swg
-#usr/share/swig/3.0.12/java/javahead.swg
-#usr/share/swig/3.0.12/java/javakw.swg
-#usr/share/swig/3.0.12/java/std_array.i
-#usr/share/swig/3.0.12/java/std_auto_ptr.i
-#usr/share/swig/3.0.12/java/std_common.i
-#usr/share/swig/3.0.12/java/std_deque.i
-#usr/share/swig/3.0.12/java/std_except.i
-#usr/share/swig/3.0.12/java/std_map.i
-#usr/share/swig/3.0.12/java/std_pair.i
-#usr/share/swig/3.0.12/java/std_shared_ptr.i
-#usr/share/swig/3.0.12/java/std_string.i
-#usr/share/swig/3.0.12/java/std_vector.i
-#usr/share/swig/3.0.12/java/std_wstring.i
-#usr/share/swig/3.0.12/java/stl.i
-#usr/share/swig/3.0.12/java/swiginterface.i
-#usr/share/swig/3.0.12/java/typemaps.i
-#usr/share/swig/3.0.12/java/various.i
-#usr/share/swig/3.0.12/javascript
-#usr/share/swig/3.0.12/javascript/jsc
-#usr/share/swig/3.0.12/javascript/jsc/arrays_javascript.i
-#usr/share/swig/3.0.12/javascript/jsc/ccomplex.i
-#usr/share/swig/3.0.12/javascript/jsc/cdata.i
-#usr/share/swig/3.0.12/javascript/jsc/complex.i
-#usr/share/swig/3.0.12/javascript/jsc/exception.i
-#usr/share/swig/3.0.12/javascript/jsc/javascript.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascriptcode.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascriptcomplex.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascriptfragments.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascripthelpers.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascriptinit.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascriptkw.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascriptprimtypes.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascriptrun.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascriptruntime.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascriptstrings.swg
-#usr/share/swig/3.0.12/javascript/jsc/javascripttypemaps.swg
-#usr/share/swig/3.0.12/javascript/jsc/std_common.i
-#usr/share/swig/3.0.12/javascript/jsc/std_complex.i
-#usr/share/swig/3.0.12/javascript/jsc/std_deque.i
-#usr/share/swig/3.0.12/javascript/jsc/std_except.i
-#usr/share/swig/3.0.12/javascript/jsc/std_map.i
-#usr/share/swig/3.0.12/javascript/jsc/std_pair.i
-#usr/share/swig/3.0.12/javascript/jsc/std_string.i
-#usr/share/swig/3.0.12/javascript/jsc/std_vector.i
-#usr/share/swig/3.0.12/javascript/jsc/stl.i
-#usr/share/swig/3.0.12/javascript/jsc/typemaps.i
-#usr/share/swig/3.0.12/javascript/v8
-#usr/share/swig/3.0.12/javascript/v8/arrays_javascript.i
-#usr/share/swig/3.0.12/javascript/v8/ccomplex.i
-#usr/share/swig/3.0.12/javascript/v8/cdata.i
-#usr/share/swig/3.0.12/javascript/v8/complex.i
-#usr/share/swig/3.0.12/javascript/v8/exception.i
-#usr/share/swig/3.0.12/javascript/v8/javascript.swg
-#usr/share/swig/3.0.12/javascript/v8/javascriptcode.swg
-#usr/share/swig/3.0.12/javascript/v8/javascriptcomplex.swg
-#usr/share/swig/3.0.12/javascript/v8/javascriptfragments.swg
-#usr/share/swig/3.0.12/javascript/v8/javascripthelpers.swg
-#usr/share/swig/3.0.12/javascript/v8/javascriptinit.swg
-#usr/share/swig/3.0.12/javascript/v8/javascriptkw.swg
-#usr/share/swig/3.0.12/javascript/v8/javascriptprimtypes.swg
-#usr/share/swig/3.0.12/javascript/v8/javascriptrun.swg
-#usr/share/swig/3.0.12/javascript/v8/javascriptruntime.swg
-#usr/share/swig/3.0.12/javascript/v8/javascriptstrings.swg
-#usr/share/swig/3.0.12/javascript/v8/javascripttypemaps.swg
-#usr/share/swig/3.0.12/javascript/v8/std_common.i
-#usr/share/swig/3.0.12/javascript/v8/std_complex.i
-#usr/share/swig/3.0.12/javascript/v8/std_deque.i
-#usr/share/swig/3.0.12/javascript/v8/std_except.i
-#usr/share/swig/3.0.12/javascript/v8/std_map.i
-#usr/share/swig/3.0.12/javascript/v8/std_pair.i
-#usr/share/swig/3.0.12/javascript/v8/std_string.i
-#usr/share/swig/3.0.12/javascript/v8/std_vector.i
-#usr/share/swig/3.0.12/javascript/v8/stl.i
-#usr/share/swig/3.0.12/javascript/v8/typemaps.i
-#usr/share/swig/3.0.12/lua
-#usr/share/swig/3.0.12/lua/_std_common.i
-#usr/share/swig/3.0.12/lua/carrays.i
-#usr/share/swig/3.0.12/lua/factory.i
-#usr/share/swig/3.0.12/lua/lua.swg
-#usr/share/swig/3.0.12/lua/lua_fnptr.i
-#usr/share/swig/3.0.12/lua/luakw.swg
-#usr/share/swig/3.0.12/lua/luarun.swg
-#usr/share/swig/3.0.12/lua/luaruntime.swg
-#usr/share/swig/3.0.12/lua/luatypemaps.swg
-#usr/share/swig/3.0.12/lua/std_common.i
-#usr/share/swig/3.0.12/lua/std_deque.i
-#usr/share/swig/3.0.12/lua/std_except.i
-#usr/share/swig/3.0.12/lua/std_map.i
-#usr/share/swig/3.0.12/lua/std_pair.i
-#usr/share/swig/3.0.12/lua/std_string.i
-#usr/share/swig/3.0.12/lua/std_vector.i
-#usr/share/swig/3.0.12/lua/stl.i
-#usr/share/swig/3.0.12/lua/typemaps.i
-#usr/share/swig/3.0.12/lua/wchar.i
-#usr/share/swig/3.0.12/math.i
-#usr/share/swig/3.0.12/modula3
-#usr/share/swig/3.0.12/modula3/modula3.swg
-#usr/share/swig/3.0.12/modula3/modula3head.swg
-#usr/share/swig/3.0.12/modula3/typemaps.i
-#usr/share/swig/3.0.12/mzscheme
-#usr/share/swig/3.0.12/mzscheme/mzrun.swg
-#usr/share/swig/3.0.12/mzscheme/mzscheme.swg
-#usr/share/swig/3.0.12/mzscheme/std_common.i
-#usr/share/swig/3.0.12/mzscheme/std_deque.i
-#usr/share/swig/3.0.12/mzscheme/std_map.i
-#usr/share/swig/3.0.12/mzscheme/std_pair.i
-#usr/share/swig/3.0.12/mzscheme/std_string.i
-#usr/share/swig/3.0.12/mzscheme/std_vector.i
-#usr/share/swig/3.0.12/mzscheme/stl.i
-#usr/share/swig/3.0.12/mzscheme/typemaps.i
-#usr/share/swig/3.0.12/ocaml
-#usr/share/swig/3.0.12/ocaml/carray.i
-#usr/share/swig/3.0.12/ocaml/class.swg
-#usr/share/swig/3.0.12/ocaml/cstring.i
-#usr/share/swig/3.0.12/ocaml/director.swg
-#usr/share/swig/3.0.12/ocaml/ocaml.i
-#usr/share/swig/3.0.12/ocaml/ocaml.swg
-#usr/share/swig/3.0.12/ocaml/ocamldec.swg
-#usr/share/swig/3.0.12/ocaml/ocamlkw.swg
-#usr/share/swig/3.0.12/ocaml/preamble.swg
-#usr/share/swig/3.0.12/ocaml/std_common.i
-#usr/share/swig/3.0.12/ocaml/std_complex.i
-#usr/share/swig/3.0.12/ocaml/std_deque.i
-#usr/share/swig/3.0.12/ocaml/std_list.i
-#usr/share/swig/3.0.12/ocaml/std_map.i
-#usr/share/swig/3.0.12/ocaml/std_pair.i
-#usr/share/swig/3.0.12/ocaml/std_string.i
-#usr/share/swig/3.0.12/ocaml/std_vector.i
-#usr/share/swig/3.0.12/ocaml/stl.i
-#usr/share/swig/3.0.12/ocaml/swig.ml
-#usr/share/swig/3.0.12/ocaml/swig.mli
-#usr/share/swig/3.0.12/ocaml/swigp4.ml
-#usr/share/swig/3.0.12/ocaml/typecheck.i
-#usr/share/swig/3.0.12/ocaml/typemaps.i
-#usr/share/swig/3.0.12/ocaml/typeregister.swg
-#usr/share/swig/3.0.12/octave
-#usr/share/swig/3.0.12/octave/attribute.i
-#usr/share/swig/3.0.12/octave/boost_shared_ptr.i
-#usr/share/swig/3.0.12/octave/carrays.i
-#usr/share/swig/3.0.12/octave/cdata.i
-#usr/share/swig/3.0.12/octave/cmalloc.i
-#usr/share/swig/3.0.12/octave/director.swg
-#usr/share/swig/3.0.12/octave/exception.i
-#usr/share/swig/3.0.12/octave/factory.i
-#usr/share/swig/3.0.12/octave/implicit.i
-#usr/share/swig/3.0.12/octave/octave.swg
-#usr/share/swig/3.0.12/octave/octcomplex.swg
-#usr/share/swig/3.0.12/octave/octcontainer.swg
-#usr/share/swig/3.0.12/octave/octfragments.swg
-#usr/share/swig/3.0.12/octave/octiterators.swg
-#usr/share/swig/3.0.12/octave/octopers.swg
-#usr/share/swig/3.0.12/octave/octprimtypes.swg
-#usr/share/swig/3.0.12/octave/octrun.swg
-#usr/share/swig/3.0.12/octave/octruntime.swg
-#usr/share/swig/3.0.12/octave/octstdcommon.swg
-#usr/share/swig/3.0.12/octave/octtypemaps.swg
-#usr/share/swig/3.0.12/octave/octuserdir.swg
-#usr/share/swig/3.0.12/octave/std_alloc.i
-#usr/share/swig/3.0.12/octave/std_basic_string.i
-#usr/share/swig/3.0.12/octave/std_carray.i
-#usr/share/swig/3.0.12/octave/std_char_traits.i
-#usr/share/swig/3.0.12/octave/std_common.i
-#usr/share/swig/3.0.12/octave/std_complex.i
-#usr/share/swig/3.0.12/octave/std_container.i
-#usr/share/swig/3.0.12/octave/std_deque.i
-#usr/share/swig/3.0.12/octave/std_except.i
-#usr/share/swig/3.0.12/octave/std_list.i
-#usr/share/swig/3.0.12/octave/std_map.i
-#usr/share/swig/3.0.12/octave/std_pair.i
-#usr/share/swig/3.0.12/octave/std_shared_ptr.i
-#usr/share/swig/3.0.12/octave/std_string.i
-#usr/share/swig/3.0.12/octave/std_vector.i
-#usr/share/swig/3.0.12/octave/std_wstring.i
-#usr/share/swig/3.0.12/octave/stl.i
-#usr/share/swig/3.0.12/octave/typemaps.i
-#usr/share/swig/3.0.12/perl5
-#usr/share/swig/3.0.12/perl5/Makefile.pl
-#usr/share/swig/3.0.12/perl5/attribute.i
-#usr/share/swig/3.0.12/perl5/carrays.i
-#usr/share/swig/3.0.12/perl5/cdata.i
-#usr/share/swig/3.0.12/perl5/cmalloc.i
-#usr/share/swig/3.0.12/perl5/cni.i
-#usr/share/swig/3.0.12/perl5/cpointer.i
-#usr/share/swig/3.0.12/perl5/cstring.i
-#usr/share/swig/3.0.12/perl5/director.swg
-#usr/share/swig/3.0.12/perl5/exception.i
-#usr/share/swig/3.0.12/perl5/factory.i
-#usr/share/swig/3.0.12/perl5/jstring.i
-#usr/share/swig/3.0.12/perl5/noembed.h
-#usr/share/swig/3.0.12/perl5/perl5.swg
-#usr/share/swig/3.0.12/perl5/perlerrors.swg
-#usr/share/swig/3.0.12/perl5/perlfragments.swg
-#usr/share/swig/3.0.12/perl5/perlhead.swg
-#usr/share/swig/3.0.12/perl5/perlinit.swg
-#usr/share/swig/3.0.12/perl5/perlkw.swg
-#usr/share/swig/3.0.12/perl5/perlmacros.swg
-#usr/share/swig/3.0.12/perl5/perlmain.i
-#usr/share/swig/3.0.12/perl5/perlopers.swg
-#usr/share/swig/3.0.12/perl5/perlprimtypes.swg
-#usr/share/swig/3.0.12/perl5/perlrun.swg
-#usr/share/swig/3.0.12/perl5/perlruntime.swg
-#usr/share/swig/3.0.12/perl5/perlstrings.swg
-#usr/share/swig/3.0.12/perl5/perltypemaps.swg
-#usr/share/swig/3.0.12/perl5/perluserdir.swg
-#usr/share/swig/3.0.12/perl5/reference.i
-#usr/share/swig/3.0.12/perl5/std_common.i
-#usr/share/swig/3.0.12/perl5/std_deque.i
-#usr/share/swig/3.0.12/perl5/std_except.i
-#usr/share/swig/3.0.12/perl5/std_list.i
-#usr/share/swig/3.0.12/perl5/std_map.i
-#usr/share/swig/3.0.12/perl5/std_pair.i
-#usr/share/swig/3.0.12/perl5/std_string.i
-#usr/share/swig/3.0.12/perl5/std_vector.i
-#usr/share/swig/3.0.12/perl5/stl.i
-#usr/share/swig/3.0.12/perl5/typemaps.i
-#usr/share/swig/3.0.12/php
-#usr/share/swig/3.0.12/php/const.i
-#usr/share/swig/3.0.12/php/director.swg
-#usr/share/swig/3.0.12/php/factory.i
-#usr/share/swig/3.0.12/php/globalvar.i
-#usr/share/swig/3.0.12/php/php.swg
-#usr/share/swig/3.0.12/php/phpinit.swg
-#usr/share/swig/3.0.12/php/phpkw.swg
-#usr/share/swig/3.0.12/php/phppointers.i
-#usr/share/swig/3.0.12/php/phprun.swg
-#usr/share/swig/3.0.12/php/std_common.i
-#usr/share/swig/3.0.12/php/std_deque.i
-#usr/share/swig/3.0.12/php/std_map.i
-#usr/share/swig/3.0.12/php/std_pair.i
-#usr/share/swig/3.0.12/php/std_string.i
-#usr/share/swig/3.0.12/php/std_vector.i
-#usr/share/swig/3.0.12/php/stl.i
-#usr/share/swig/3.0.12/php/typemaps.i
-#usr/share/swig/3.0.12/php/utils.i
-#usr/share/swig/3.0.12/php5
-#usr/share/swig/3.0.12/php5/const.i
-#usr/share/swig/3.0.12/php5/director.swg
-#usr/share/swig/3.0.12/php5/factory.i
-#usr/share/swig/3.0.12/php5/globalvar.i
-#usr/share/swig/3.0.12/php5/php.swg
-#usr/share/swig/3.0.12/php5/phpinit.swg
-#usr/share/swig/3.0.12/php5/phpkw.swg
-#usr/share/swig/3.0.12/php5/phppointers.i
-#usr/share/swig/3.0.12/php5/phprun.swg
-#usr/share/swig/3.0.12/php5/std_common.i
-#usr/share/swig/3.0.12/php5/std_deque.i
-#usr/share/swig/3.0.12/php5/std_map.i
-#usr/share/swig/3.0.12/php5/std_pair.i
-#usr/share/swig/3.0.12/php5/std_string.i
-#usr/share/swig/3.0.12/php5/std_vector.i
-#usr/share/swig/3.0.12/php5/stl.i
-#usr/share/swig/3.0.12/php5/typemaps.i
-#usr/share/swig/3.0.12/php5/utils.i
-#usr/share/swig/3.0.12/pike
-#usr/share/swig/3.0.12/pike/pike.swg
-#usr/share/swig/3.0.12/pike/pikekw.swg
-#usr/share/swig/3.0.12/pike/pikerun.swg
-#usr/share/swig/3.0.12/pike/std_string.i
-#usr/share/swig/3.0.12/pointer.i
-#usr/share/swig/3.0.12/python
-#usr/share/swig/3.0.12/python/argcargv.i
-#usr/share/swig/3.0.12/python/attribute.i
-#usr/share/swig/3.0.12/python/boost_shared_ptr.i
-#usr/share/swig/3.0.12/python/builtin.swg
-#usr/share/swig/3.0.12/python/carrays.i
-#usr/share/swig/3.0.12/python/ccomplex.i
-#usr/share/swig/3.0.12/python/cdata.i
-#usr/share/swig/3.0.12/python/cmalloc.i
-#usr/share/swig/3.0.12/python/cni.i
-#usr/share/swig/3.0.12/python/complex.i
-#usr/share/swig/3.0.12/python/cpointer.i
-#usr/share/swig/3.0.12/python/cstring.i
-#usr/share/swig/3.0.12/python/cwstring.i
-#usr/share/swig/3.0.12/python/defarg.swg
-#usr/share/swig/3.0.12/python/director.swg
-#usr/share/swig/3.0.12/python/embed.i
-#usr/share/swig/3.0.12/python/exception.i
-#usr/share/swig/3.0.12/python/factory.i
-#usr/share/swig/3.0.12/python/file.i
-#usr/share/swig/3.0.12/python/implicit.i
-#usr/share/swig/3.0.12/python/jstring.i
-#usr/share/swig/3.0.12/python/pyabc.i
-#usr/share/swig/3.0.12/python/pyapi.swg
-#usr/share/swig/3.0.12/python/pybackward.swg
-#usr/share/swig/3.0.12/python/pybuffer.i
-#usr/share/swig/3.0.12/python/pyclasses.swg
-#usr/share/swig/3.0.12/python/pycomplex.swg
-#usr/share/swig/3.0.12/python/pycontainer.swg
-#usr/share/swig/3.0.12/python/pydocs.swg
-#usr/share/swig/3.0.12/python/pyerrors.swg
-#usr/share/swig/3.0.12/python/pyfragments.swg
-#usr/share/swig/3.0.12/python/pyhead.swg
-#usr/share/swig/3.0.12/python/pyinit.swg
-#usr/share/swig/3.0.12/python/pyiterators.swg
-#usr/share/swig/3.0.12/python/pymacros.swg
-#usr/share/swig/3.0.12/python/pyname_compat.i
-#usr/share/swig/3.0.12/python/pyopers.swg
-#usr/share/swig/3.0.12/python/pyprimtypes.swg
-#usr/share/swig/3.0.12/python/pyrun.swg
-#usr/share/swig/3.0.12/python/pyruntime.swg
-#usr/share/swig/3.0.12/python/pystdcommon.swg
-#usr/share/swig/3.0.12/python/pystrings.swg
-#usr/share/swig/3.0.12/python/python.swg
-#usr/share/swig/3.0.12/python/pythonkw.swg
-#usr/share/swig/3.0.12/python/pythreads.swg
-#usr/share/swig/3.0.12/python/pytuplehlp.swg
-#usr/share/swig/3.0.12/python/pytypemaps.swg
-#usr/share/swig/3.0.12/python/pyuserdir.swg
-#usr/share/swig/3.0.12/python/pywstrings.swg
-#usr/share/swig/3.0.12/python/std_alloc.i
-#usr/share/swig/3.0.12/python/std_array.i
-#usr/share/swig/3.0.12/python/std_auto_ptr.i
-#usr/share/swig/3.0.12/python/std_basic_string.i
-#usr/share/swig/3.0.12/python/std_carray.i
-#usr/share/swig/3.0.12/python/std_char_traits.i
-#usr/share/swig/3.0.12/python/std_common.i
-#usr/share/swig/3.0.12/python/std_complex.i
-#usr/share/swig/3.0.12/python/std_container.i
-#usr/share/swig/3.0.12/python/std_deque.i
-#usr/share/swig/3.0.12/python/std_except.i
-#usr/share/swig/3.0.12/python/std_ios.i
-#usr/share/swig/3.0.12/python/std_iostream.i
-#usr/share/swig/3.0.12/python/std_list.i
-#usr/share/swig/3.0.12/python/std_map.i
-#usr/share/swig/3.0.12/python/std_multimap.i
-#usr/share/swig/3.0.12/python/std_multiset.i
-#usr/share/swig/3.0.12/python/std_pair.i
-#usr/share/swig/3.0.12/python/std_set.i
-#usr/share/swig/3.0.12/python/std_shared_ptr.i
-#usr/share/swig/3.0.12/python/std_sstream.i
-#usr/share/swig/3.0.12/python/std_streambuf.i
-#usr/share/swig/3.0.12/python/std_string.i
-#usr/share/swig/3.0.12/python/std_unordered_map.i
-#usr/share/swig/3.0.12/python/std_unordered_multimap.i
-#usr/share/swig/3.0.12/python/std_unordered_multiset.i
-#usr/share/swig/3.0.12/python/std_unordered_set.i
-#usr/share/swig/3.0.12/python/std_vector.i
-#usr/share/swig/3.0.12/python/std_vectora.i
-#usr/share/swig/3.0.12/python/std_wios.i
-#usr/share/swig/3.0.12/python/std_wiostream.i
-#usr/share/swig/3.0.12/python/std_wsstream.i
-#usr/share/swig/3.0.12/python/std_wstreambuf.i
-#usr/share/swig/3.0.12/python/std_wstring.i
-#usr/share/swig/3.0.12/python/stl.i
-#usr/share/swig/3.0.12/python/typemaps.i
-#usr/share/swig/3.0.12/python/wchar.i
-#usr/share/swig/3.0.12/r
-#usr/share/swig/3.0.12/r/boost_shared_ptr.i
-#usr/share/swig/3.0.12/r/cdata.i
-#usr/share/swig/3.0.12/r/exception.i
-#usr/share/swig/3.0.12/r/r.swg
-#usr/share/swig/3.0.12/r/rcontainer.swg
-#usr/share/swig/3.0.12/r/rfragments.swg
-#usr/share/swig/3.0.12/r/rkw.swg
-#usr/share/swig/3.0.12/r/ropers.swg
-#usr/share/swig/3.0.12/r/rrun.swg
-#usr/share/swig/3.0.12/r/rstdcommon.swg
-#usr/share/swig/3.0.12/r/rtype.swg
-#usr/share/swig/3.0.12/r/srun.swg
-#usr/share/swig/3.0.12/r/std_alloc.i
-#usr/share/swig/3.0.12/r/std_common.i
-#usr/share/swig/3.0.12/r/std_container.i
-#usr/share/swig/3.0.12/r/std_deque.i
-#usr/share/swig/3.0.12/r/std_except.i
-#usr/share/swig/3.0.12/r/std_list.i
-#usr/share/swig/3.0.12/r/std_map.i
-#usr/share/swig/3.0.12/r/std_pair.i
-#usr/share/swig/3.0.12/r/std_string.i
-#usr/share/swig/3.0.12/r/std_vector.i
-#usr/share/swig/3.0.12/r/stl.i
-#usr/share/swig/3.0.12/r/typemaps.i
-#usr/share/swig/3.0.12/ruby
-#usr/share/swig/3.0.12/ruby/Makefile.swig
-#usr/share/swig/3.0.12/ruby/argcargv.i
-#usr/share/swig/3.0.12/ruby/attribute.i
-#usr/share/swig/3.0.12/ruby/boost_shared_ptr.i
-#usr/share/swig/3.0.12/ruby/carrays.i
-#usr/share/swig/3.0.12/ruby/cdata.i
-#usr/share/swig/3.0.12/ruby/cmalloc.i
-#usr/share/swig/3.0.12/ruby/cni.i
-#usr/share/swig/3.0.12/ruby/cpointer.i
-#usr/share/swig/3.0.12/ruby/cstring.i
-#usr/share/swig/3.0.12/ruby/director.swg
-#usr/share/swig/3.0.12/ruby/embed.i
-#usr/share/swig/3.0.12/ruby/exception.i
-#usr/share/swig/3.0.12/ruby/extconf.rb
-#usr/share/swig/3.0.12/ruby/factory.i
-#usr/share/swig/3.0.12/ruby/file.i
-#usr/share/swig/3.0.12/ruby/jstring.i
-#usr/share/swig/3.0.12/ruby/progargcargv.i
-#usr/share/swig/3.0.12/ruby/ruby.swg
-#usr/share/swig/3.0.12/ruby/rubyapi.swg
-#usr/share/swig/3.0.12/ruby/rubyautodoc.swg
-#usr/share/swig/3.0.12/ruby/rubyclasses.swg
-#usr/share/swig/3.0.12/ruby/rubycomplex.swg
-#usr/share/swig/3.0.12/ruby/rubycontainer.swg
-#usr/share/swig/3.0.12/ruby/rubycontainer_extended.swg
-#usr/share/swig/3.0.12/ruby/rubydef.swg
-#usr/share/swig/3.0.12/ruby/rubyerrors.swg
-#usr/share/swig/3.0.12/ruby/rubyfragments.swg
-#usr/share/swig/3.0.12/ruby/rubyhead.swg
-#usr/share/swig/3.0.12/ruby/rubyinit.swg
-#usr/share/swig/3.0.12/ruby/rubyiterators.swg
-#usr/share/swig/3.0.12/ruby/rubykw.swg
-#usr/share/swig/3.0.12/ruby/rubymacros.swg
-#usr/share/swig/3.0.12/ruby/rubyopers.swg
-#usr/share/swig/3.0.12/ruby/rubyprimtypes.swg
-#usr/share/swig/3.0.12/ruby/rubyrun.swg
-#usr/share/swig/3.0.12/ruby/rubyruntime.swg
-#usr/share/swig/3.0.12/ruby/rubystdautodoc.swg
-#usr/share/swig/3.0.12/ruby/rubystdcommon.swg
-#usr/share/swig/3.0.12/ruby/rubystdfunctors.swg
-#usr/share/swig/3.0.12/ruby/rubystrings.swg
-#usr/share/swig/3.0.12/ruby/rubytracking.swg
-#usr/share/swig/3.0.12/ruby/rubytypemaps.swg
-#usr/share/swig/3.0.12/ruby/rubyuserdir.swg
-#usr/share/swig/3.0.12/ruby/rubywstrings.swg
-#usr/share/swig/3.0.12/ruby/std_alloc.i
-#usr/share/swig/3.0.12/ruby/std_array.i
-#usr/share/swig/3.0.12/ruby/std_basic_string.i
-#usr/share/swig/3.0.12/ruby/std_char_traits.i
-#usr/share/swig/3.0.12/ruby/std_common.i
-#usr/share/swig/3.0.12/ruby/std_complex.i
-#usr/share/swig/3.0.12/ruby/std_container.i
-#usr/share/swig/3.0.12/ruby/std_deque.i
-#usr/share/swig/3.0.12/ruby/std_except.i
-#usr/share/swig/3.0.12/ruby/std_functors.i
-#usr/share/swig/3.0.12/ruby/std_ios.i
-#usr/share/swig/3.0.12/ruby/std_iostream.i
-#usr/share/swig/3.0.12/ruby/std_list.i
-#usr/share/swig/3.0.12/ruby/std_map.i
-#usr/share/swig/3.0.12/ruby/std_multimap.i
-#usr/share/swig/3.0.12/ruby/std_multiset.i
-#usr/share/swig/3.0.12/ruby/std_pair.i
-#usr/share/swig/3.0.12/ruby/std_queue.i
-#usr/share/swig/3.0.12/ruby/std_set.i
-#usr/share/swig/3.0.12/ruby/std_shared_ptr.i
-#usr/share/swig/3.0.12/ruby/std_sstream.i
-#usr/share/swig/3.0.12/ruby/std_stack.i
-#usr/share/swig/3.0.12/ruby/std_streambuf.i
-#usr/share/swig/3.0.12/ruby/std_string.i
-#usr/share/swig/3.0.12/ruby/std_vector.i
-#usr/share/swig/3.0.12/ruby/std_vectora.i
-#usr/share/swig/3.0.12/ruby/std_wstring.i
-#usr/share/swig/3.0.12/ruby/stl.i
-#usr/share/swig/3.0.12/ruby/timeval.i
-#usr/share/swig/3.0.12/ruby/typemaps.i
-#usr/share/swig/3.0.12/runtime.swg
-#usr/share/swig/3.0.12/scilab
-#usr/share/swig/3.0.12/scilab/boost_shared_ptr.i
-#usr/share/swig/3.0.12/scilab/carrays.i
-#usr/share/swig/3.0.12/scilab/cmalloc.i
-#usr/share/swig/3.0.12/scilab/cpointer.i
-#usr/share/swig/3.0.12/scilab/exception.i
-#usr/share/swig/3.0.12/scilab/matrix.i
-#usr/share/swig/3.0.12/scilab/sciarray.swg
-#usr/share/swig/3.0.12/scilab/scibool.swg
-#usr/share/swig/3.0.12/scilab/scichar.swg
-#usr/share/swig/3.0.12/scilab/scicontainer.swg
-#usr/share/swig/3.0.12/scilab/scidouble.swg
-#usr/share/swig/3.0.12/scilab/scienum.swg
-#usr/share/swig/3.0.12/scilab/sciexception.swg
-#usr/share/swig/3.0.12/scilab/scifloat.swg
-#usr/share/swig/3.0.12/scilab/sciint.swg
-#usr/share/swig/3.0.12/scilab/sciiterators.swg
-#usr/share/swig/3.0.12/scilab/scilab.swg
-#usr/share/swig/3.0.12/scilab/scilist.swg
-#usr/share/swig/3.0.12/scilab/scilong.swg
-#usr/share/swig/3.0.12/scilab/scilonglong.swg
-#usr/share/swig/3.0.12/scilab/scimacros.swg
-#usr/share/swig/3.0.12/scilab/scimatrixbool.swg
-#usr/share/swig/3.0.12/scilab/scimatrixchar.swg
-#usr/share/swig/3.0.12/scilab/scimatrixdouble.swg
-#usr/share/swig/3.0.12/scilab/scimatrixint.swg
-#usr/share/swig/3.0.12/scilab/scimisctypes.swg
-#usr/share/swig/3.0.12/scilab/scipointer.swg
-#usr/share/swig/3.0.12/scilab/sciprimtypes.swg
-#usr/share/swig/3.0.12/scilab/scirun.swg
-#usr/share/swig/3.0.12/scilab/sciruntime.swg
-#usr/share/swig/3.0.12/scilab/scisequence.swg
-#usr/share/swig/3.0.12/scilab/scisequencebool.swg
-#usr/share/swig/3.0.12/scilab/scisequencedouble.swg
-#usr/share/swig/3.0.12/scilab/scisequencefloat.swg
-#usr/share/swig/3.0.12/scilab/scisequenceint.swg
-#usr/share/swig/3.0.12/scilab/scisequencepointer.swg
-#usr/share/swig/3.0.12/scilab/scisequencestring.swg
-#usr/share/swig/3.0.12/scilab/scishort.swg
-#usr/share/swig/3.0.12/scilab/scisignedchar.swg
-#usr/share/swig/3.0.12/scilab/scistdcommon.swg
-#usr/share/swig/3.0.12/scilab/scitypemaps.swg
-#usr/share/swig/3.0.12/scilab/sciunsignedchar.swg
-#usr/share/swig/3.0.12/scilab/sciunsignedint.swg
-#usr/share/swig/3.0.12/scilab/sciunsignedlong.swg
-#usr/share/swig/3.0.12/scilab/sciunsignedshort.swg
-#usr/share/swig/3.0.12/scilab/std_alloc.i
-#usr/share/swig/3.0.12/scilab/std_basic_string.i
-#usr/share/swig/3.0.12/scilab/std_char_traits.i
-#usr/share/swig/3.0.12/scilab/std_common.i
-#usr/share/swig/3.0.12/scilab/std_container.i
-#usr/share/swig/3.0.12/scilab/std_deque.i
-#usr/share/swig/3.0.12/scilab/std_except.i
-#usr/share/swig/3.0.12/scilab/std_list.i
-#usr/share/swig/3.0.12/scilab/std_map.i
-#usr/share/swig/3.0.12/scilab/std_multiset.i
-#usr/share/swig/3.0.12/scilab/std_pair.i
-#usr/share/swig/3.0.12/scilab/std_set.i
-#usr/share/swig/3.0.12/scilab/std_string.i
-#usr/share/swig/3.0.12/scilab/std_vector.i
-#usr/share/swig/3.0.12/scilab/stl.i
-#usr/share/swig/3.0.12/scilab/typemaps.i
-#usr/share/swig/3.0.12/shared_ptr.i
-#usr/share/swig/3.0.12/std
-#usr/share/swig/3.0.12/std/_std_deque.i
-#usr/share/swig/3.0.12/std/std_alloc.i
-#usr/share/swig/3.0.12/std/std_array.i
-#usr/share/swig/3.0.12/std/std_basic_string.i
-#usr/share/swig/3.0.12/std/std_carray.swg
-#usr/share/swig/3.0.12/std/std_char_traits.i
-#usr/share/swig/3.0.12/std/std_common.i
-#usr/share/swig/3.0.12/std/std_container.i
-#usr/share/swig/3.0.12/std/std_deque.i
-#usr/share/swig/3.0.12/std/std_except.i
-#usr/share/swig/3.0.12/std/std_ios.i
-#usr/share/swig/3.0.12/std/std_iostream.i
-#usr/share/swig/3.0.12/std/std_list.i
-#usr/share/swig/3.0.12/std/std_map.i
-#usr/share/swig/3.0.12/std/std_multimap.i
-#usr/share/swig/3.0.12/std/std_multiset.i
-#usr/share/swig/3.0.12/std/std_pair.i
-#usr/share/swig/3.0.12/std/std_queue.i
-#usr/share/swig/3.0.12/std/std_set.i
-#usr/share/swig/3.0.12/std/std_sstream.i
-#usr/share/swig/3.0.12/std/std_stack.i
-#usr/share/swig/3.0.12/std/std_streambuf.i
-#usr/share/swig/3.0.12/std/std_string.i
-#usr/share/swig/3.0.12/std/std_unordered_map.i
-#usr/share/swig/3.0.12/std/std_unordered_multimap.i
-#usr/share/swig/3.0.12/std/std_unordered_multiset.i
-#usr/share/swig/3.0.12/std/std_unordered_set.i
-#usr/share/swig/3.0.12/std/std_vector.i
-#usr/share/swig/3.0.12/std/std_vectora.i
-#usr/share/swig/3.0.12/std/std_wios.i
-#usr/share/swig/3.0.12/std/std_wiostream.i
-#usr/share/swig/3.0.12/std/std_wsstream.i
-#usr/share/swig/3.0.12/std/std_wstreambuf.i
-#usr/share/swig/3.0.12/std/std_wstring.i
-#usr/share/swig/3.0.12/std_except.i
-#usr/share/swig/3.0.12/stdint.i
-#usr/share/swig/3.0.12/stl.i
-#usr/share/swig/3.0.12/swig.swg
-#usr/share/swig/3.0.12/swigarch.i
-#usr/share/swig/3.0.12/swigerrors.swg
-#usr/share/swig/3.0.12/swiginit.swg
-#usr/share/swig/3.0.12/swiglabels.swg
-#usr/share/swig/3.0.12/swigrun.i
-#usr/share/swig/3.0.12/swigrun.swg
-#usr/share/swig/3.0.12/swigwarn.swg
-#usr/share/swig/3.0.12/swigwarnings.swg
-#usr/share/swig/3.0.12/tcl
-#usr/share/swig/3.0.12/tcl/attribute.i
-#usr/share/swig/3.0.12/tcl/carrays.i
-#usr/share/swig/3.0.12/tcl/cdata.i
-#usr/share/swig/3.0.12/tcl/cmalloc.i
-#usr/share/swig/3.0.12/tcl/cni.i
-#usr/share/swig/3.0.12/tcl/cpointer.i
-#usr/share/swig/3.0.12/tcl/cstring.i
-#usr/share/swig/3.0.12/tcl/cwstring.i
-#usr/share/swig/3.0.12/tcl/exception.i
-#usr/share/swig/3.0.12/tcl/factory.i
-#usr/share/swig/3.0.12/tcl/jstring.i
-#usr/share/swig/3.0.12/tcl/std_common.i
-#usr/share/swig/3.0.12/tcl/std_deque.i
-#usr/share/swig/3.0.12/tcl/std_except.i
-#usr/share/swig/3.0.12/tcl/std_map.i
-#usr/share/swig/3.0.12/tcl/std_pair.i
-#usr/share/swig/3.0.12/tcl/std_string.i
-#usr/share/swig/3.0.12/tcl/std_vector.i
-#usr/share/swig/3.0.12/tcl/std_wstring.i
-#usr/share/swig/3.0.12/tcl/stl.i
-#usr/share/swig/3.0.12/tcl/tcl8.swg
-#usr/share/swig/3.0.12/tcl/tclapi.swg
-#usr/share/swig/3.0.12/tcl/tclerrors.swg
-#usr/share/swig/3.0.12/tcl/tclfragments.swg
-#usr/share/swig/3.0.12/tcl/tclinit.swg
-#usr/share/swig/3.0.12/tcl/tclinterp.i
-#usr/share/swig/3.0.12/tcl/tclkw.swg
-#usr/share/swig/3.0.12/tcl/tclmacros.swg
-#usr/share/swig/3.0.12/tcl/tclopers.swg
-#usr/share/swig/3.0.12/tcl/tclprimtypes.swg
-#usr/share/swig/3.0.12/tcl/tclresult.i
-#usr/share/swig/3.0.12/tcl/tclrun.swg
-#usr/share/swig/3.0.12/tcl/tclruntime.swg
-#usr/share/swig/3.0.12/tcl/tclsh.i
-#usr/share/swig/3.0.12/tcl/tclstrings.swg
-#usr/share/swig/3.0.12/tcl/tcltypemaps.swg
-#usr/share/swig/3.0.12/tcl/tcluserdir.swg
-#usr/share/swig/3.0.12/tcl/tclwstrings.swg
-#usr/share/swig/3.0.12/tcl/typemaps.i
-#usr/share/swig/3.0.12/tcl/wish.i
-#usr/share/swig/3.0.12/typemaps
-#usr/share/swig/3.0.12/typemaps/attribute.swg
-#usr/share/swig/3.0.12/typemaps/carrays.swg
-#usr/share/swig/3.0.12/typemaps/cdata.swg
-#usr/share/swig/3.0.12/typemaps/cmalloc.swg
-#usr/share/swig/3.0.12/typemaps/cpointer.swg
-#usr/share/swig/3.0.12/typemaps/cstring.swg
-#usr/share/swig/3.0.12/typemaps/cstrings.swg
-#usr/share/swig/3.0.12/typemaps/cwstring.swg
-#usr/share/swig/3.0.12/typemaps/enumint.swg
-#usr/share/swig/3.0.12/typemaps/exception.swg
-#usr/share/swig/3.0.12/typemaps/factory.swg
-#usr/share/swig/3.0.12/typemaps/fragments.swg
-#usr/share/swig/3.0.12/typemaps/implicit.swg
-#usr/share/swig/3.0.12/typemaps/inoutlist.swg
-#usr/share/swig/3.0.12/typemaps/misctypes.swg
-#usr/share/swig/3.0.12/typemaps/primtypes.swg
-#usr/share/swig/3.0.12/typemaps/ptrtypes.swg
-#usr/share/swig/3.0.12/typemaps/std_except.swg
-#usr/share/swig/3.0.12/typemaps/std_string.swg
-#usr/share/swig/3.0.12/typemaps/std_strings.swg
-#usr/share/swig/3.0.12/typemaps/std_wstring.swg
-#usr/share/swig/3.0.12/typemaps/string.swg
-#usr/share/swig/3.0.12/typemaps/strings.swg
-#usr/share/swig/3.0.12/typemaps/swigmacros.swg
-#usr/share/swig/3.0.12/typemaps/swigobject.swg
-#usr/share/swig/3.0.12/typemaps/swigtype.swg
-#usr/share/swig/3.0.12/typemaps/swigtypemaps.swg
-#usr/share/swig/3.0.12/typemaps/typemaps.swg
-#usr/share/swig/3.0.12/typemaps/valtypes.swg
-#usr/share/swig/3.0.12/typemaps/void.swg
-#usr/share/swig/3.0.12/typemaps/wstring.swg
-#usr/share/swig/3.0.12/uffi
-#usr/share/swig/3.0.12/uffi/uffi.swg
-#usr/share/swig/3.0.12/wchar.i
-#usr/share/swig/3.0.12/windows.i
+#usr/share/swig/4.0.2
+#usr/share/swig/4.0.2/allkw.swg
+#usr/share/swig/4.0.2/attribute.i
+#usr/share/swig/4.0.2/carrays.i
+#usr/share/swig/4.0.2/cdata.i
+#usr/share/swig/4.0.2/cmalloc.i
+#usr/share/swig/4.0.2/constraints.i
+#usr/share/swig/4.0.2/cpointer.i
+#usr/share/swig/4.0.2/csharp
+#usr/share/swig/4.0.2/csharp/arrays_csharp.i
+#usr/share/swig/4.0.2/csharp/boost_intrusive_ptr.i
+#usr/share/swig/4.0.2/csharp/boost_shared_ptr.i
+#usr/share/swig/4.0.2/csharp/complex.i
+#usr/share/swig/4.0.2/csharp/csharp.swg
+#usr/share/swig/4.0.2/csharp/csharphead.swg
+#usr/share/swig/4.0.2/csharp/csharpkw.swg
+#usr/share/swig/4.0.2/csharp/director.swg
+#usr/share/swig/4.0.2/csharp/enums.swg
+#usr/share/swig/4.0.2/csharp/enumsimple.swg
+#usr/share/swig/4.0.2/csharp/enumtypesafe.swg
+#usr/share/swig/4.0.2/csharp/std_array.i
+#usr/share/swig/4.0.2/csharp/std_auto_ptr.i
+#usr/share/swig/4.0.2/csharp/std_common.i
+#usr/share/swig/4.0.2/csharp/std_complex.i
+#usr/share/swig/4.0.2/csharp/std_deque.i
+#usr/share/swig/4.0.2/csharp/std_except.i
+#usr/share/swig/4.0.2/csharp/std_list.i
+#usr/share/swig/4.0.2/csharp/std_map.i
+#usr/share/swig/4.0.2/csharp/std_pair.i
+#usr/share/swig/4.0.2/csharp/std_set.i
+#usr/share/swig/4.0.2/csharp/std_shared_ptr.i
+#usr/share/swig/4.0.2/csharp/std_string.i
+#usr/share/swig/4.0.2/csharp/std_vector.i
+#usr/share/swig/4.0.2/csharp/std_wstring.i
+#usr/share/swig/4.0.2/csharp/stl.i
+#usr/share/swig/4.0.2/csharp/swiginterface.i
+#usr/share/swig/4.0.2/csharp/swigtype_inout.i
+#usr/share/swig/4.0.2/csharp/typemaps.i
+#usr/share/swig/4.0.2/csharp/wchar.i
+#usr/share/swig/4.0.2/cstring.i
+#usr/share/swig/4.0.2/cwstring.i
+#usr/share/swig/4.0.2/d
+#usr/share/swig/4.0.2/d/boost_shared_ptr.i
+#usr/share/swig/4.0.2/d/carrays.i
+#usr/share/swig/4.0.2/d/cpointer.i
+#usr/share/swig/4.0.2/d/d.swg
+#usr/share/swig/4.0.2/d/dclassgen.swg
+#usr/share/swig/4.0.2/d/ddirectives.swg
+#usr/share/swig/4.0.2/d/denums.swg
+#usr/share/swig/4.0.2/d/dexception.swg
+#usr/share/swig/4.0.2/d/dhead.swg
+#usr/share/swig/4.0.2/d/director.swg
+#usr/share/swig/4.0.2/d/dkw.swg
+#usr/share/swig/4.0.2/d/dmemberfunctionpointers.swg
+#usr/share/swig/4.0.2/d/doperators.swg
+#usr/share/swig/4.0.2/d/dprimitives.swg
+#usr/share/swig/4.0.2/d/dstrings.swg
+#usr/share/swig/4.0.2/d/dswigtype.swg
+#usr/share/swig/4.0.2/d/dvoid.swg
+#usr/share/swig/4.0.2/d/std_common.i
+#usr/share/swig/4.0.2/d/std_deque.i
+#usr/share/swig/4.0.2/d/std_except.i
+#usr/share/swig/4.0.2/d/std_map.i
+#usr/share/swig/4.0.2/d/std_pair.i
+#usr/share/swig/4.0.2/d/std_shared_ptr.i
+#usr/share/swig/4.0.2/d/std_string.i
+#usr/share/swig/4.0.2/d/std_vector.i
+#usr/share/swig/4.0.2/d/stl.i
+#usr/share/swig/4.0.2/d/typemaps.i
+#usr/share/swig/4.0.2/d/wrapperloader.swg
+#usr/share/swig/4.0.2/director_common.swg
+#usr/share/swig/4.0.2/exception.i
+#usr/share/swig/4.0.2/go
+#usr/share/swig/4.0.2/go/cdata.i
+#usr/share/swig/4.0.2/go/director.swg
+#usr/share/swig/4.0.2/go/exception.i
+#usr/share/swig/4.0.2/go/go.swg
+#usr/share/swig/4.0.2/go/gokw.swg
+#usr/share/swig/4.0.2/go/goruntime.swg
+#usr/share/swig/4.0.2/go/gostring.swg
+#usr/share/swig/4.0.2/go/std_common.i
+#usr/share/swig/4.0.2/go/std_deque.i
+#usr/share/swig/4.0.2/go/std_except.i
+#usr/share/swig/4.0.2/go/std_list.i
+#usr/share/swig/4.0.2/go/std_map.i
+#usr/share/swig/4.0.2/go/std_pair.i
+#usr/share/swig/4.0.2/go/std_string.i
+#usr/share/swig/4.0.2/go/std_vector.i
+#usr/share/swig/4.0.2/go/stl.i
+#usr/share/swig/4.0.2/go/typemaps.i
+#usr/share/swig/4.0.2/guile
+#usr/share/swig/4.0.2/guile/common.scm
+#usr/share/swig/4.0.2/guile/cplusplus.i
+#usr/share/swig/4.0.2/guile/guile.i
+#usr/share/swig/4.0.2/guile/guile_scm.swg
+#usr/share/swig/4.0.2/guile/guile_scm_run.swg
+#usr/share/swig/4.0.2/guile/guilemain.i
+#usr/share/swig/4.0.2/guile/interpreter.i
+#usr/share/swig/4.0.2/guile/list-vector.i
+#usr/share/swig/4.0.2/guile/pointer-in-out.i
+#usr/share/swig/4.0.2/guile/ports.i
+#usr/share/swig/4.0.2/guile/std_common.i
+#usr/share/swig/4.0.2/guile/std_deque.i
+#usr/share/swig/4.0.2/guile/std_except.i
+#usr/share/swig/4.0.2/guile/std_map.i
+#usr/share/swig/4.0.2/guile/std_pair.i
+#usr/share/swig/4.0.2/guile/std_string.i
+#usr/share/swig/4.0.2/guile/std_vector.i
+#usr/share/swig/4.0.2/guile/stl.i
+#usr/share/swig/4.0.2/guile/swigrun.i
+#usr/share/swig/4.0.2/guile/typemaps.i
+#usr/share/swig/4.0.2/intrusive_ptr.i
+#usr/share/swig/4.0.2/inttypes.i
+#usr/share/swig/4.0.2/java
+#usr/share/swig/4.0.2/java/arrays_java.i
+#usr/share/swig/4.0.2/java/boost_intrusive_ptr.i
+#usr/share/swig/4.0.2/java/boost_shared_ptr.i
+#usr/share/swig/4.0.2/java/director.swg
+#usr/share/swig/4.0.2/java/enums.swg
+#usr/share/swig/4.0.2/java/enumsimple.swg
+#usr/share/swig/4.0.2/java/enumtypesafe.swg
+#usr/share/swig/4.0.2/java/enumtypeunsafe.swg
+#usr/share/swig/4.0.2/java/java.swg
+#usr/share/swig/4.0.2/java/javahead.swg
+#usr/share/swig/4.0.2/java/javakw.swg
+#usr/share/swig/4.0.2/java/std_array.i
+#usr/share/swig/4.0.2/java/std_auto_ptr.i
+#usr/share/swig/4.0.2/java/std_common.i
+#usr/share/swig/4.0.2/java/std_deque.i
+#usr/share/swig/4.0.2/java/std_except.i
+#usr/share/swig/4.0.2/java/std_list.i
+#usr/share/swig/4.0.2/java/std_map.i
+#usr/share/swig/4.0.2/java/std_pair.i
+#usr/share/swig/4.0.2/java/std_set.i
+#usr/share/swig/4.0.2/java/std_shared_ptr.i
+#usr/share/swig/4.0.2/java/std_string.i
+#usr/share/swig/4.0.2/java/std_unordered_map.i
+#usr/share/swig/4.0.2/java/std_unordered_set.i
+#usr/share/swig/4.0.2/java/std_vector.i
+#usr/share/swig/4.0.2/java/std_wstring.i
+#usr/share/swig/4.0.2/java/stl.i
+#usr/share/swig/4.0.2/java/swiginterface.i
+#usr/share/swig/4.0.2/java/typemaps.i
+#usr/share/swig/4.0.2/java/various.i
+#usr/share/swig/4.0.2/javascript
+#usr/share/swig/4.0.2/javascript/jsc
+#usr/share/swig/4.0.2/javascript/jsc/arrays_javascript.i
+#usr/share/swig/4.0.2/javascript/jsc/ccomplex.i
+#usr/share/swig/4.0.2/javascript/jsc/cdata.i
+#usr/share/swig/4.0.2/javascript/jsc/complex.i
+#usr/share/swig/4.0.2/javascript/jsc/exception.i
+#usr/share/swig/4.0.2/javascript/jsc/javascript.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascriptcode.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascriptcomplex.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascriptfragments.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascripthelpers.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascriptinit.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascriptkw.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascriptprimtypes.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascriptrun.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascriptruntime.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascriptstrings.swg
+#usr/share/swig/4.0.2/javascript/jsc/javascripttypemaps.swg
+#usr/share/swig/4.0.2/javascript/jsc/std_common.i
+#usr/share/swig/4.0.2/javascript/jsc/std_complex.i
+#usr/share/swig/4.0.2/javascript/jsc/std_deque.i
+#usr/share/swig/4.0.2/javascript/jsc/std_except.i
+#usr/share/swig/4.0.2/javascript/jsc/std_map.i
+#usr/share/swig/4.0.2/javascript/jsc/std_pair.i
+#usr/share/swig/4.0.2/javascript/jsc/std_string.i
+#usr/share/swig/4.0.2/javascript/jsc/std_vector.i
+#usr/share/swig/4.0.2/javascript/jsc/stl.i
+#usr/share/swig/4.0.2/javascript/jsc/typemaps.i
+#usr/share/swig/4.0.2/javascript/v8
+#usr/share/swig/4.0.2/javascript/v8/arrays_javascript.i
+#usr/share/swig/4.0.2/javascript/v8/ccomplex.i
+#usr/share/swig/4.0.2/javascript/v8/cdata.i
+#usr/share/swig/4.0.2/javascript/v8/complex.i
+#usr/share/swig/4.0.2/javascript/v8/exception.i
+#usr/share/swig/4.0.2/javascript/v8/javascript.swg
+#usr/share/swig/4.0.2/javascript/v8/javascriptcode.swg
+#usr/share/swig/4.0.2/javascript/v8/javascriptcomplex.swg
+#usr/share/swig/4.0.2/javascript/v8/javascriptfragments.swg
+#usr/share/swig/4.0.2/javascript/v8/javascripthelpers.swg
+#usr/share/swig/4.0.2/javascript/v8/javascriptinit.swg
+#usr/share/swig/4.0.2/javascript/v8/javascriptkw.swg
+#usr/share/swig/4.0.2/javascript/v8/javascriptprimtypes.swg
+#usr/share/swig/4.0.2/javascript/v8/javascriptrun.swg
+#usr/share/swig/4.0.2/javascript/v8/javascriptruntime.swg
+#usr/share/swig/4.0.2/javascript/v8/javascriptstrings.swg
+#usr/share/swig/4.0.2/javascript/v8/javascripttypemaps.swg
+#usr/share/swig/4.0.2/javascript/v8/std_common.i
+#usr/share/swig/4.0.2/javascript/v8/std_complex.i
+#usr/share/swig/4.0.2/javascript/v8/std_deque.i
+#usr/share/swig/4.0.2/javascript/v8/std_except.i
+#usr/share/swig/4.0.2/javascript/v8/std_map.i
+#usr/share/swig/4.0.2/javascript/v8/std_pair.i
+#usr/share/swig/4.0.2/javascript/v8/std_string.i
+#usr/share/swig/4.0.2/javascript/v8/std_vector.i
+#usr/share/swig/4.0.2/javascript/v8/stl.i
+#usr/share/swig/4.0.2/javascript/v8/typemaps.i
+#usr/share/swig/4.0.2/lua
+#usr/share/swig/4.0.2/lua/_std_common.i
+#usr/share/swig/4.0.2/lua/carrays.i
+#usr/share/swig/4.0.2/lua/factory.i
+#usr/share/swig/4.0.2/lua/lua.swg
+#usr/share/swig/4.0.2/lua/lua_fnptr.i
+#usr/share/swig/4.0.2/lua/luakw.swg
+#usr/share/swig/4.0.2/lua/luarun.swg
+#usr/share/swig/4.0.2/lua/luaruntime.swg
+#usr/share/swig/4.0.2/lua/luatypemaps.swg
+#usr/share/swig/4.0.2/lua/std_common.i
+#usr/share/swig/4.0.2/lua/std_deque.i
+#usr/share/swig/4.0.2/lua/std_except.i
+#usr/share/swig/4.0.2/lua/std_map.i
+#usr/share/swig/4.0.2/lua/std_pair.i
+#usr/share/swig/4.0.2/lua/std_string.i
+#usr/share/swig/4.0.2/lua/std_vector.i
+#usr/share/swig/4.0.2/lua/stl.i
+#usr/share/swig/4.0.2/lua/typemaps.i
+#usr/share/swig/4.0.2/lua/wchar.i
+#usr/share/swig/4.0.2/math.i
+#usr/share/swig/4.0.2/mzscheme
+#usr/share/swig/4.0.2/mzscheme/mzrun.swg
+#usr/share/swig/4.0.2/mzscheme/mzscheme.swg
+#usr/share/swig/4.0.2/mzscheme/std_common.i
+#usr/share/swig/4.0.2/mzscheme/std_deque.i
+#usr/share/swig/4.0.2/mzscheme/std_map.i
+#usr/share/swig/4.0.2/mzscheme/std_pair.i
+#usr/share/swig/4.0.2/mzscheme/std_string.i
+#usr/share/swig/4.0.2/mzscheme/std_vector.i
+#usr/share/swig/4.0.2/mzscheme/stl.i
+#usr/share/swig/4.0.2/mzscheme/typemaps.i
+#usr/share/swig/4.0.2/ocaml
+#usr/share/swig/4.0.2/ocaml/carray.i
+#usr/share/swig/4.0.2/ocaml/class.swg
+#usr/share/swig/4.0.2/ocaml/cstring.i
+#usr/share/swig/4.0.2/ocaml/director.swg
+#usr/share/swig/4.0.2/ocaml/ocaml.i
+#usr/share/swig/4.0.2/ocaml/ocaml.swg
+#usr/share/swig/4.0.2/ocaml/ocamlkw.swg
+#usr/share/swig/4.0.2/ocaml/ocamlrun.swg
+#usr/share/swig/4.0.2/ocaml/ocamlrundec.swg
+#usr/share/swig/4.0.2/ocaml/preamble.swg
+#usr/share/swig/4.0.2/ocaml/std_common.i
+#usr/share/swig/4.0.2/ocaml/std_complex.i
+#usr/share/swig/4.0.2/ocaml/std_deque.i
+#usr/share/swig/4.0.2/ocaml/std_except.i
+#usr/share/swig/4.0.2/ocaml/std_list.i
+#usr/share/swig/4.0.2/ocaml/std_map.i
+#usr/share/swig/4.0.2/ocaml/std_pair.i
+#usr/share/swig/4.0.2/ocaml/std_string.i
+#usr/share/swig/4.0.2/ocaml/std_vector.i
+#usr/share/swig/4.0.2/ocaml/stl.i
+#usr/share/swig/4.0.2/ocaml/swig.ml
+#usr/share/swig/4.0.2/ocaml/swig.mli
+#usr/share/swig/4.0.2/ocaml/swigp4.ml
+#usr/share/swig/4.0.2/ocaml/typecheck.i
+#usr/share/swig/4.0.2/ocaml/typemaps.i
+#usr/share/swig/4.0.2/ocaml/typeregister.swg
+#usr/share/swig/4.0.2/octave
+#usr/share/swig/4.0.2/octave/attribute.i
+#usr/share/swig/4.0.2/octave/boost_shared_ptr.i
+#usr/share/swig/4.0.2/octave/carrays.i
+#usr/share/swig/4.0.2/octave/cdata.i
+#usr/share/swig/4.0.2/octave/cmalloc.i
+#usr/share/swig/4.0.2/octave/director.swg
+#usr/share/swig/4.0.2/octave/exception.i
+#usr/share/swig/4.0.2/octave/factory.i
+#usr/share/swig/4.0.2/octave/implicit.i
+#usr/share/swig/4.0.2/octave/octave.swg
+#usr/share/swig/4.0.2/octave/octcomplex.swg
+#usr/share/swig/4.0.2/octave/octcontainer.swg
+#usr/share/swig/4.0.2/octave/octfragments.swg
+#usr/share/swig/4.0.2/octave/octheaders.hpp
+#usr/share/swig/4.0.2/octave/octiterators.swg
+#usr/share/swig/4.0.2/octave/octopers.swg
+#usr/share/swig/4.0.2/octave/octprimtypes.swg
+#usr/share/swig/4.0.2/octave/octrun.swg
+#usr/share/swig/4.0.2/octave/octruntime.swg
+#usr/share/swig/4.0.2/octave/octstdcommon.swg
+#usr/share/swig/4.0.2/octave/octtypemaps.swg
+#usr/share/swig/4.0.2/octave/octuserdir.swg
+#usr/share/swig/4.0.2/octave/std_alloc.i
+#usr/share/swig/4.0.2/octave/std_basic_string.i
+#usr/share/swig/4.0.2/octave/std_carray.i
+#usr/share/swig/4.0.2/octave/std_char_traits.i
+#usr/share/swig/4.0.2/octave/std_common.i
+#usr/share/swig/4.0.2/octave/std_complex.i
+#usr/share/swig/4.0.2/octave/std_container.i
+#usr/share/swig/4.0.2/octave/std_deque.i
+#usr/share/swig/4.0.2/octave/std_except.i
+#usr/share/swig/4.0.2/octave/std_list.i
+#usr/share/swig/4.0.2/octave/std_map.i
+#usr/share/swig/4.0.2/octave/std_pair.i
+#usr/share/swig/4.0.2/octave/std_shared_ptr.i
+#usr/share/swig/4.0.2/octave/std_string.i
+#usr/share/swig/4.0.2/octave/std_vector.i
+#usr/share/swig/4.0.2/octave/std_wstring.i
+#usr/share/swig/4.0.2/octave/stl.i
+#usr/share/swig/4.0.2/octave/typemaps.i
+#usr/share/swig/4.0.2/perl5
+#usr/share/swig/4.0.2/perl5/Makefile.pl
+#usr/share/swig/4.0.2/perl5/attribute.i
+#usr/share/swig/4.0.2/perl5/carrays.i
+#usr/share/swig/4.0.2/perl5/cdata.i
+#usr/share/swig/4.0.2/perl5/cmalloc.i
+#usr/share/swig/4.0.2/perl5/cpointer.i
+#usr/share/swig/4.0.2/perl5/cstring.i
+#usr/share/swig/4.0.2/perl5/director.swg
+#usr/share/swig/4.0.2/perl5/exception.i
+#usr/share/swig/4.0.2/perl5/factory.i
+#usr/share/swig/4.0.2/perl5/noembed.h
+#usr/share/swig/4.0.2/perl5/perl5.swg
+#usr/share/swig/4.0.2/perl5/perlerrors.swg
+#usr/share/swig/4.0.2/perl5/perlfragments.swg
+#usr/share/swig/4.0.2/perl5/perlhead.swg
+#usr/share/swig/4.0.2/perl5/perlinit.swg
+#usr/share/swig/4.0.2/perl5/perlkw.swg
+#usr/share/swig/4.0.2/perl5/perlmacros.swg
+#usr/share/swig/4.0.2/perl5/perlmain.i
+#usr/share/swig/4.0.2/perl5/perlopers.swg
+#usr/share/swig/4.0.2/perl5/perlprimtypes.swg
+#usr/share/swig/4.0.2/perl5/perlrun.swg
+#usr/share/swig/4.0.2/perl5/perlruntime.swg
+#usr/share/swig/4.0.2/perl5/perlstrings.swg
+#usr/share/swig/4.0.2/perl5/perltypemaps.swg
+#usr/share/swig/4.0.2/perl5/perluserdir.swg
+#usr/share/swig/4.0.2/perl5/reference.i
+#usr/share/swig/4.0.2/perl5/std_common.i
+#usr/share/swig/4.0.2/perl5/std_deque.i
+#usr/share/swig/4.0.2/perl5/std_except.i
+#usr/share/swig/4.0.2/perl5/std_list.i
+#usr/share/swig/4.0.2/perl5/std_map.i
+#usr/share/swig/4.0.2/perl5/std_pair.i
+#usr/share/swig/4.0.2/perl5/std_string.i
+#usr/share/swig/4.0.2/perl5/std_vector.i
+#usr/share/swig/4.0.2/perl5/stl.i
+#usr/share/swig/4.0.2/perl5/typemaps.i
+#usr/share/swig/4.0.2/php
+#usr/share/swig/4.0.2/php/const.i
+#usr/share/swig/4.0.2/php/director.swg
+#usr/share/swig/4.0.2/php/factory.i
+#usr/share/swig/4.0.2/php/globalvar.i
+#usr/share/swig/4.0.2/php/php.swg
+#usr/share/swig/4.0.2/php/phpinit.swg
+#usr/share/swig/4.0.2/php/phpkw.swg
+#usr/share/swig/4.0.2/php/phppointers.i
+#usr/share/swig/4.0.2/php/phprun.swg
+#usr/share/swig/4.0.2/php/std_common.i
+#usr/share/swig/4.0.2/php/std_deque.i
+#usr/share/swig/4.0.2/php/std_map.i
+#usr/share/swig/4.0.2/php/std_pair.i
+#usr/share/swig/4.0.2/php/std_string.i
+#usr/share/swig/4.0.2/php/std_vector.i
+#usr/share/swig/4.0.2/php/stl.i
+#usr/share/swig/4.0.2/php/typemaps.i
+#usr/share/swig/4.0.2/php/utils.i
+#usr/share/swig/4.0.2/pointer.i
+#usr/share/swig/4.0.2/python
+#usr/share/swig/4.0.2/python/argcargv.i
+#usr/share/swig/4.0.2/python/attribute.i
+#usr/share/swig/4.0.2/python/boost_shared_ptr.i
+#usr/share/swig/4.0.2/python/builtin.swg
+#usr/share/swig/4.0.2/python/carrays.i
+#usr/share/swig/4.0.2/python/ccomplex.i
+#usr/share/swig/4.0.2/python/cdata.i
+#usr/share/swig/4.0.2/python/cmalloc.i
+#usr/share/swig/4.0.2/python/complex.i
+#usr/share/swig/4.0.2/python/cpointer.i
+#usr/share/swig/4.0.2/python/cstring.i
+#usr/share/swig/4.0.2/python/cwstring.i
+#usr/share/swig/4.0.2/python/defarg.swg
+#usr/share/swig/4.0.2/python/director.swg
+#usr/share/swig/4.0.2/python/embed.i
+#usr/share/swig/4.0.2/python/exception.i
+#usr/share/swig/4.0.2/python/factory.i
+#usr/share/swig/4.0.2/python/file.i
+#usr/share/swig/4.0.2/python/implicit.i
+#usr/share/swig/4.0.2/python/pyabc.i
+#usr/share/swig/4.0.2/python/pyapi.swg
+#usr/share/swig/4.0.2/python/pybackward.swg
+#usr/share/swig/4.0.2/python/pybuffer.i
+#usr/share/swig/4.0.2/python/pyclasses.swg
+#usr/share/swig/4.0.2/python/pycomplex.swg
+#usr/share/swig/4.0.2/python/pycontainer.swg
+#usr/share/swig/4.0.2/python/pydocs.swg
+#usr/share/swig/4.0.2/python/pyerrors.swg
+#usr/share/swig/4.0.2/python/pyfragments.swg
+#usr/share/swig/4.0.2/python/pyhead.swg
+#usr/share/swig/4.0.2/python/pyinit.swg
+#usr/share/swig/4.0.2/python/pyiterators.swg
+#usr/share/swig/4.0.2/python/pymacros.swg
+#usr/share/swig/4.0.2/python/pyname_compat.i
+#usr/share/swig/4.0.2/python/pyopers.swg
+#usr/share/swig/4.0.2/python/pyprimtypes.swg
+#usr/share/swig/4.0.2/python/pyrun.swg
+#usr/share/swig/4.0.2/python/pyruntime.swg
+#usr/share/swig/4.0.2/python/pystdcommon.swg
+#usr/share/swig/4.0.2/python/pystrings.swg
+#usr/share/swig/4.0.2/python/python.swg
+#usr/share/swig/4.0.2/python/pythonkw.swg
+#usr/share/swig/4.0.2/python/pythreads.swg
+#usr/share/swig/4.0.2/python/pytuplehlp.swg
+#usr/share/swig/4.0.2/python/pytypemaps.swg
+#usr/share/swig/4.0.2/python/pyuserdir.swg
+#usr/share/swig/4.0.2/python/pywstrings.swg
+#usr/share/swig/4.0.2/python/std_alloc.i
+#usr/share/swig/4.0.2/python/std_array.i
+#usr/share/swig/4.0.2/python/std_auto_ptr.i
+#usr/share/swig/4.0.2/python/std_basic_string.i
+#usr/share/swig/4.0.2/python/std_carray.i
+#usr/share/swig/4.0.2/python/std_char_traits.i
+#usr/share/swig/4.0.2/python/std_common.i
+#usr/share/swig/4.0.2/python/std_complex.i
+#usr/share/swig/4.0.2/python/std_container.i
+#usr/share/swig/4.0.2/python/std_deque.i
+#usr/share/swig/4.0.2/python/std_except.i
+#usr/share/swig/4.0.2/python/std_ios.i
+#usr/share/swig/4.0.2/python/std_iostream.i
+#usr/share/swig/4.0.2/python/std_list.i
+#usr/share/swig/4.0.2/python/std_map.i
+#usr/share/swig/4.0.2/python/std_multimap.i
+#usr/share/swig/4.0.2/python/std_multiset.i
+#usr/share/swig/4.0.2/python/std_pair.i
+#usr/share/swig/4.0.2/python/std_set.i
+#usr/share/swig/4.0.2/python/std_shared_ptr.i
+#usr/share/swig/4.0.2/python/std_sstream.i
+#usr/share/swig/4.0.2/python/std_streambuf.i
+#usr/share/swig/4.0.2/python/std_string.i
+#usr/share/swig/4.0.2/python/std_unordered_map.i
+#usr/share/swig/4.0.2/python/std_unordered_multimap.i
+#usr/share/swig/4.0.2/python/std_unordered_multiset.i
+#usr/share/swig/4.0.2/python/std_unordered_set.i
+#usr/share/swig/4.0.2/python/std_vector.i
+#usr/share/swig/4.0.2/python/std_vectora.i
+#usr/share/swig/4.0.2/python/std_wios.i
+#usr/share/swig/4.0.2/python/std_wiostream.i
+#usr/share/swig/4.0.2/python/std_wsstream.i
+#usr/share/swig/4.0.2/python/std_wstreambuf.i
+#usr/share/swig/4.0.2/python/std_wstring.i
+#usr/share/swig/4.0.2/python/stl.i
+#usr/share/swig/4.0.2/python/typemaps.i
+#usr/share/swig/4.0.2/python/wchar.i
+#usr/share/swig/4.0.2/r
+#usr/share/swig/4.0.2/r/boost_shared_ptr.i
+#usr/share/swig/4.0.2/r/cdata.i
+#usr/share/swig/4.0.2/r/exception.i
+#usr/share/swig/4.0.2/r/r.swg
+#usr/share/swig/4.0.2/r/rcontainer.swg
+#usr/share/swig/4.0.2/r/rfragments.swg
+#usr/share/swig/4.0.2/r/rkw.swg
+#usr/share/swig/4.0.2/r/ropers.swg
+#usr/share/swig/4.0.2/r/rrun.swg
+#usr/share/swig/4.0.2/r/rstdcommon.swg
+#usr/share/swig/4.0.2/r/rtype.swg
+#usr/share/swig/4.0.2/r/srun.swg
+#usr/share/swig/4.0.2/r/std_alloc.i
+#usr/share/swig/4.0.2/r/std_common.i
+#usr/share/swig/4.0.2/r/std_container.i
+#usr/share/swig/4.0.2/r/std_deque.i
+#usr/share/swig/4.0.2/r/std_except.i
+#usr/share/swig/4.0.2/r/std_list.i
+#usr/share/swig/4.0.2/r/std_map.i
+#usr/share/swig/4.0.2/r/std_pair.i
+#usr/share/swig/4.0.2/r/std_shared_ptr.i
+#usr/share/swig/4.0.2/r/std_string.i
+#usr/share/swig/4.0.2/r/std_vector.i
+#usr/share/swig/4.0.2/r/stl.i
+#usr/share/swig/4.0.2/r/typemaps.i
+#usr/share/swig/4.0.2/ruby
+#usr/share/swig/4.0.2/ruby/Makefile.swig
+#usr/share/swig/4.0.2/ruby/argcargv.i
+#usr/share/swig/4.0.2/ruby/attribute.i
+#usr/share/swig/4.0.2/ruby/boost_shared_ptr.i
+#usr/share/swig/4.0.2/ruby/carrays.i
+#usr/share/swig/4.0.2/ruby/cdata.i
+#usr/share/swig/4.0.2/ruby/cmalloc.i
+#usr/share/swig/4.0.2/ruby/cpointer.i
+#usr/share/swig/4.0.2/ruby/cstring.i
+#usr/share/swig/4.0.2/ruby/director.swg
+#usr/share/swig/4.0.2/ruby/embed.i
+#usr/share/swig/4.0.2/ruby/exception.i
+#usr/share/swig/4.0.2/ruby/extconf.rb
+#usr/share/swig/4.0.2/ruby/factory.i
+#usr/share/swig/4.0.2/ruby/file.i
+#usr/share/swig/4.0.2/ruby/progargcargv.i
+#usr/share/swig/4.0.2/ruby/ruby.swg
+#usr/share/swig/4.0.2/ruby/rubyapi.swg
+#usr/share/swig/4.0.2/ruby/rubyautodoc.swg
+#usr/share/swig/4.0.2/ruby/rubyclasses.swg
+#usr/share/swig/4.0.2/ruby/rubycomplex.swg
+#usr/share/swig/4.0.2/ruby/rubycontainer.swg
+#usr/share/swig/4.0.2/ruby/rubycontainer_extended.swg
+#usr/share/swig/4.0.2/ruby/rubydef.swg
+#usr/share/swig/4.0.2/ruby/rubyerrors.swg
+#usr/share/swig/4.0.2/ruby/rubyfragments.swg
+#usr/share/swig/4.0.2/ruby/rubyhead.swg
+#usr/share/swig/4.0.2/ruby/rubyinit.swg
+#usr/share/swig/4.0.2/ruby/rubyiterators.swg
+#usr/share/swig/4.0.2/ruby/rubykw.swg
+#usr/share/swig/4.0.2/ruby/rubymacros.swg
+#usr/share/swig/4.0.2/ruby/rubyopers.swg
+#usr/share/swig/4.0.2/ruby/rubyprimtypes.swg
+#usr/share/swig/4.0.2/ruby/rubyrun.swg
+#usr/share/swig/4.0.2/ruby/rubyruntime.swg
+#usr/share/swig/4.0.2/ruby/rubystdautodoc.swg
+#usr/share/swig/4.0.2/ruby/rubystdcommon.swg
+#usr/share/swig/4.0.2/ruby/rubystdcommon_forward.swg
+#usr/share/swig/4.0.2/ruby/rubystdfunctors.swg
+#usr/share/swig/4.0.2/ruby/rubystrings.swg
+#usr/share/swig/4.0.2/ruby/rubytracking.swg
+#usr/share/swig/4.0.2/ruby/rubytypemaps.swg
+#usr/share/swig/4.0.2/ruby/rubyuserdir.swg
+#usr/share/swig/4.0.2/ruby/rubywstrings.swg
+#usr/share/swig/4.0.2/ruby/std_alloc.i
+#usr/share/swig/4.0.2/ruby/std_array.i
+#usr/share/swig/4.0.2/ruby/std_auto_ptr.i
+#usr/share/swig/4.0.2/ruby/std_basic_string.i
+#usr/share/swig/4.0.2/ruby/std_char_traits.i
+#usr/share/swig/4.0.2/ruby/std_common.i
+#usr/share/swig/4.0.2/ruby/std_complex.i
+#usr/share/swig/4.0.2/ruby/std_container.i
+#usr/share/swig/4.0.2/ruby/std_deque.i
+#usr/share/swig/4.0.2/ruby/std_except.i
+#usr/share/swig/4.0.2/ruby/std_functors.i
+#usr/share/swig/4.0.2/ruby/std_ios.i
+#usr/share/swig/4.0.2/ruby/std_iostream.i
+#usr/share/swig/4.0.2/ruby/std_list.i
+#usr/share/swig/4.0.2/ruby/std_map.i
+#usr/share/swig/4.0.2/ruby/std_multimap.i
+#usr/share/swig/4.0.2/ruby/std_multiset.i
+#usr/share/swig/4.0.2/ruby/std_pair.i
+#usr/share/swig/4.0.2/ruby/std_queue.i
+#usr/share/swig/4.0.2/ruby/std_set.i
+#usr/share/swig/4.0.2/ruby/std_shared_ptr.i
+#usr/share/swig/4.0.2/ruby/std_sstream.i
+#usr/share/swig/4.0.2/ruby/std_stack.i
+#usr/share/swig/4.0.2/ruby/std_streambuf.i
+#usr/share/swig/4.0.2/ruby/std_string.i
+#usr/share/swig/4.0.2/ruby/std_unordered_map.i
+#usr/share/swig/4.0.2/ruby/std_unordered_multimap.i
+#usr/share/swig/4.0.2/ruby/std_unordered_multiset.i
+#usr/share/swig/4.0.2/ruby/std_unordered_set.i
+#usr/share/swig/4.0.2/ruby/std_vector.i
+#usr/share/swig/4.0.2/ruby/std_vectora.i
+#usr/share/swig/4.0.2/ruby/std_wstring.i
+#usr/share/swig/4.0.2/ruby/stl.i
+#usr/share/swig/4.0.2/ruby/timeval.i
+#usr/share/swig/4.0.2/ruby/typemaps.i
+#usr/share/swig/4.0.2/runtime.swg
+#usr/share/swig/4.0.2/scilab
+#usr/share/swig/4.0.2/scilab/boost_shared_ptr.i
+#usr/share/swig/4.0.2/scilab/carrays.i
+#usr/share/swig/4.0.2/scilab/cmalloc.i
+#usr/share/swig/4.0.2/scilab/cpointer.i
+#usr/share/swig/4.0.2/scilab/exception.i
+#usr/share/swig/4.0.2/scilab/matrix.i
+#usr/share/swig/4.0.2/scilab/sciarray.swg
+#usr/share/swig/4.0.2/scilab/scibool.swg
+#usr/share/swig/4.0.2/scilab/scichar.swg
+#usr/share/swig/4.0.2/scilab/scicontainer.swg
+#usr/share/swig/4.0.2/scilab/scidouble.swg
+#usr/share/swig/4.0.2/scilab/scienum.swg
+#usr/share/swig/4.0.2/scilab/sciexception.swg
+#usr/share/swig/4.0.2/scilab/scifloat.swg
+#usr/share/swig/4.0.2/scilab/sciint.swg
+#usr/share/swig/4.0.2/scilab/sciiterators.swg
+#usr/share/swig/4.0.2/scilab/scilab.swg
+#usr/share/swig/4.0.2/scilab/scilist.swg
+#usr/share/swig/4.0.2/scilab/scilong.swg
+#usr/share/swig/4.0.2/scilab/scilonglong.swg
+#usr/share/swig/4.0.2/scilab/scimacros.swg
+#usr/share/swig/4.0.2/scilab/scimatrixbool.swg
+#usr/share/swig/4.0.2/scilab/scimatrixchar.swg
+#usr/share/swig/4.0.2/scilab/scimatrixdouble.swg
+#usr/share/swig/4.0.2/scilab/scimatrixint.swg
+#usr/share/swig/4.0.2/scilab/scimisctypes.swg
+#usr/share/swig/4.0.2/scilab/scipointer.swg
+#usr/share/swig/4.0.2/scilab/sciprimtypes.swg
+#usr/share/swig/4.0.2/scilab/scirun.swg
+#usr/share/swig/4.0.2/scilab/sciruntime.swg
+#usr/share/swig/4.0.2/scilab/scisequence.swg
+#usr/share/swig/4.0.2/scilab/scisequencebool.swg
+#usr/share/swig/4.0.2/scilab/scisequencedouble.swg
+#usr/share/swig/4.0.2/scilab/scisequencefloat.swg
+#usr/share/swig/4.0.2/scilab/scisequenceint.swg
+#usr/share/swig/4.0.2/scilab/scisequencepointer.swg
+#usr/share/swig/4.0.2/scilab/scisequencestring.swg
+#usr/share/swig/4.0.2/scilab/scishort.swg
+#usr/share/swig/4.0.2/scilab/scisignedchar.swg
+#usr/share/swig/4.0.2/scilab/scistdcommon.swg
+#usr/share/swig/4.0.2/scilab/scitypemaps.swg
+#usr/share/swig/4.0.2/scilab/sciunsignedchar.swg
+#usr/share/swig/4.0.2/scilab/sciunsignedint.swg
+#usr/share/swig/4.0.2/scilab/sciunsignedlong.swg
+#usr/share/swig/4.0.2/scilab/sciunsignedshort.swg
+#usr/share/swig/4.0.2/scilab/std_alloc.i
+#usr/share/swig/4.0.2/scilab/std_basic_string.i
+#usr/share/swig/4.0.2/scilab/std_char_traits.i
+#usr/share/swig/4.0.2/scilab/std_common.i
+#usr/share/swig/4.0.2/scilab/std_container.i
+#usr/share/swig/4.0.2/scilab/std_deque.i
+#usr/share/swig/4.0.2/scilab/std_except.i
+#usr/share/swig/4.0.2/scilab/std_list.i
+#usr/share/swig/4.0.2/scilab/std_map.i
+#usr/share/swig/4.0.2/scilab/std_multiset.i
+#usr/share/swig/4.0.2/scilab/std_pair.i
+#usr/share/swig/4.0.2/scilab/std_set.i
+#usr/share/swig/4.0.2/scilab/std_shared_ptr.i
+#usr/share/swig/4.0.2/scilab/std_string.i
+#usr/share/swig/4.0.2/scilab/std_vector.i
+#usr/share/swig/4.0.2/scilab/stl.i
+#usr/share/swig/4.0.2/scilab/typemaps.i
+#usr/share/swig/4.0.2/shared_ptr.i
+#usr/share/swig/4.0.2/std
+#usr/share/swig/4.0.2/std/_std_deque.i
+#usr/share/swig/4.0.2/std/std_alloc.i
+#usr/share/swig/4.0.2/std/std_array.i
+#usr/share/swig/4.0.2/std/std_basic_string.i
+#usr/share/swig/4.0.2/std/std_carray.swg
+#usr/share/swig/4.0.2/std/std_char_traits.i
+#usr/share/swig/4.0.2/std/std_common.i
+#usr/share/swig/4.0.2/std/std_container.i
+#usr/share/swig/4.0.2/std/std_deque.i
+#usr/share/swig/4.0.2/std/std_except.i
+#usr/share/swig/4.0.2/std/std_ios.i
+#usr/share/swig/4.0.2/std/std_iostream.i
+#usr/share/swig/4.0.2/std/std_list.i
+#usr/share/swig/4.0.2/std/std_map.i
+#usr/share/swig/4.0.2/std/std_multimap.i
+#usr/share/swig/4.0.2/std/std_multiset.i
+#usr/share/swig/4.0.2/std/std_pair.i
+#usr/share/swig/4.0.2/std/std_queue.i
+#usr/share/swig/4.0.2/std/std_set.i
+#usr/share/swig/4.0.2/std/std_sstream.i
+#usr/share/swig/4.0.2/std/std_stack.i
+#usr/share/swig/4.0.2/std/std_streambuf.i
+#usr/share/swig/4.0.2/std/std_string.i
+#usr/share/swig/4.0.2/std/std_unordered_map.i
+#usr/share/swig/4.0.2/std/std_unordered_multimap.i
+#usr/share/swig/4.0.2/std/std_unordered_multiset.i
+#usr/share/swig/4.0.2/std/std_unordered_set.i
+#usr/share/swig/4.0.2/std/std_vector.i
+#usr/share/swig/4.0.2/std/std_vectora.i
+#usr/share/swig/4.0.2/std/std_wios.i
+#usr/share/swig/4.0.2/std/std_wiostream.i
+#usr/share/swig/4.0.2/std/std_wsstream.i
+#usr/share/swig/4.0.2/std/std_wstreambuf.i
+#usr/share/swig/4.0.2/std/std_wstring.i
+#usr/share/swig/4.0.2/std_except.i
+#usr/share/swig/4.0.2/stdint.i
+#usr/share/swig/4.0.2/stl.i
+#usr/share/swig/4.0.2/swig.swg
+#usr/share/swig/4.0.2/swigarch.i
+#usr/share/swig/4.0.2/swigerrors.swg
+#usr/share/swig/4.0.2/swigfragments.swg
+#usr/share/swig/4.0.2/swiginit.swg
+#usr/share/swig/4.0.2/swiglabels.swg
+#usr/share/swig/4.0.2/swigrun.i
+#usr/share/swig/4.0.2/swigrun.swg
+#usr/share/swig/4.0.2/swigwarn.swg
+#usr/share/swig/4.0.2/swigwarnings.swg
+#usr/share/swig/4.0.2/tcl
+#usr/share/swig/4.0.2/tcl/attribute.i
+#usr/share/swig/4.0.2/tcl/carrays.i
+#usr/share/swig/4.0.2/tcl/cdata.i
+#usr/share/swig/4.0.2/tcl/cmalloc.i
+#usr/share/swig/4.0.2/tcl/cpointer.i
+#usr/share/swig/4.0.2/tcl/cstring.i
+#usr/share/swig/4.0.2/tcl/cwstring.i
+#usr/share/swig/4.0.2/tcl/exception.i
+#usr/share/swig/4.0.2/tcl/factory.i
+#usr/share/swig/4.0.2/tcl/std_common.i
+#usr/share/swig/4.0.2/tcl/std_deque.i
+#usr/share/swig/4.0.2/tcl/std_except.i
+#usr/share/swig/4.0.2/tcl/std_map.i
+#usr/share/swig/4.0.2/tcl/std_pair.i
+#usr/share/swig/4.0.2/tcl/std_string.i
+#usr/share/swig/4.0.2/tcl/std_vector.i
+#usr/share/swig/4.0.2/tcl/std_wstring.i
+#usr/share/swig/4.0.2/tcl/stl.i
+#usr/share/swig/4.0.2/tcl/tcl8.swg
+#usr/share/swig/4.0.2/tcl/tclapi.swg
+#usr/share/swig/4.0.2/tcl/tclerrors.swg
+#usr/share/swig/4.0.2/tcl/tclfragments.swg
+#usr/share/swig/4.0.2/tcl/tclinit.swg
+#usr/share/swig/4.0.2/tcl/tclinterp.i
+#usr/share/swig/4.0.2/tcl/tclkw.swg
+#usr/share/swig/4.0.2/tcl/tclmacros.swg
+#usr/share/swig/4.0.2/tcl/tclopers.swg
+#usr/share/swig/4.0.2/tcl/tclprimtypes.swg
+#usr/share/swig/4.0.2/tcl/tclresult.i
+#usr/share/swig/4.0.2/tcl/tclrun.swg
+#usr/share/swig/4.0.2/tcl/tclruntime.swg
+#usr/share/swig/4.0.2/tcl/tclsh.i
+#usr/share/swig/4.0.2/tcl/tclstrings.swg
+#usr/share/swig/4.0.2/tcl/tcltypemaps.swg
+#usr/share/swig/4.0.2/tcl/tcluserdir.swg
+#usr/share/swig/4.0.2/tcl/tclwstrings.swg
+#usr/share/swig/4.0.2/tcl/typemaps.i
+#usr/share/swig/4.0.2/tcl/wish.i
+#usr/share/swig/4.0.2/typemaps
+#usr/share/swig/4.0.2/typemaps/attribute.swg
+#usr/share/swig/4.0.2/typemaps/carrays.swg
+#usr/share/swig/4.0.2/typemaps/cdata.swg
+#usr/share/swig/4.0.2/typemaps/cmalloc.swg
+#usr/share/swig/4.0.2/typemaps/cpointer.swg
+#usr/share/swig/4.0.2/typemaps/cstring.swg
+#usr/share/swig/4.0.2/typemaps/cstrings.swg
+#usr/share/swig/4.0.2/typemaps/cwstring.swg
+#usr/share/swig/4.0.2/typemaps/enumint.swg
+#usr/share/swig/4.0.2/typemaps/exception.swg
+#usr/share/swig/4.0.2/typemaps/factory.swg
+#usr/share/swig/4.0.2/typemaps/fragments.swg
+#usr/share/swig/4.0.2/typemaps/implicit.swg
+#usr/share/swig/4.0.2/typemaps/inoutlist.swg
+#usr/share/swig/4.0.2/typemaps/misctypes.swg
+#usr/share/swig/4.0.2/typemaps/primtypes.swg
+#usr/share/swig/4.0.2/typemaps/ptrtypes.swg
+#usr/share/swig/4.0.2/typemaps/std_except.swg
+#usr/share/swig/4.0.2/typemaps/std_string.swg
+#usr/share/swig/4.0.2/typemaps/std_strings.swg
+#usr/share/swig/4.0.2/typemaps/std_wstring.swg
+#usr/share/swig/4.0.2/typemaps/string.swg
+#usr/share/swig/4.0.2/typemaps/strings.swg
+#usr/share/swig/4.0.2/typemaps/swigmacros.swg
+#usr/share/swig/4.0.2/typemaps/swigobject.swg
+#usr/share/swig/4.0.2/typemaps/swigtype.swg
+#usr/share/swig/4.0.2/typemaps/swigtypemaps.swg
+#usr/share/swig/4.0.2/typemaps/typemaps.swg
+#usr/share/swig/4.0.2/typemaps/valtypes.swg
+#usr/share/swig/4.0.2/typemaps/void.swg
+#usr/share/swig/4.0.2/typemaps/wstring.swg
+#usr/share/swig/4.0.2/wchar.i
+#usr/share/swig/4.0.2/windows.i
+#usr/share/swig/4.0.2/xml
+#usr/share/swig/4.0.2/xml/typemaps.i
+#usr/share/swig/4.0.2/xml/xml.swg
index 9b2667676121c8f0deed6ec4ceb08f22a61b50f8..4d9f7b52f9ae5da466be61871cbb1d827076c1f7 100644 (file)
@@ -20,6 +20,7 @@ srv/web/ipfire/cgi-bin/extrahd.cgi
 srv/web/ipfire/cgi-bin/fireinfo.cgi
 srv/web/ipfire/cgi-bin/firewall.cgi
 srv/web/ipfire/cgi-bin/fwhosts.cgi
+srv/web/ipfire/cgi-bin/getrrdimage.cgi
 srv/web/ipfire/cgi-bin/gpl.cgi
 #srv/web/ipfire/cgi-bin/guardian.cgi
 srv/web/ipfire/cgi-bin/gui.cgi
@@ -300,7 +301,7 @@ srv/web/ipfire/html/images/view-refresh.png
 srv/web/ipfire/html/images/wakeup.gif
 srv/web/ipfire/html/images/window-new.png
 srv/web/ipfire/html/include
-srv/web/ipfire/html/include/snortupdateutility.js
+srv/web/ipfire/html/include/rrdimage.js
 srv/web/ipfire/html/include/zoneconf.js
 srv/web/ipfire/html/index.cgi
 srv/web/ipfire/html/redirect-templates
@@ -308,35 +309,7 @@ srv/web/ipfire/html/redirect-templates/legacy
 srv/web/ipfire/html/redirect-templates/legacy/template.html
 srv/web/ipfire/html/redirect.cgi
 srv/web/ipfire/html/themes
-srv/web/ipfire/html/themes/darkdos
-srv/web/ipfire/html/themes/darkdos/images
-srv/web/ipfire/html/themes/darkdos/images/IPFire.png
-srv/web/ipfire/html/themes/darkdos/images/b1.gif
-srv/web/ipfire/html/themes/darkdos/images/b2.gif
-srv/web/ipfire/html/themes/darkdos/images/b3.gif
-srv/web/ipfire/html/themes/darkdos/images/b4.gif
-srv/web/ipfire/html/themes/darkdos/images/b5.gif
-srv/web/ipfire/html/themes/darkdos/images/b6.gif
-srv/web/ipfire/html/themes/darkdos/images/spacer.gif
-srv/web/ipfire/html/themes/darkdos/include
-srv/web/ipfire/html/themes/darkdos/include/colors.txt
-srv/web/ipfire/html/themes/darkdos/include/functions.pl
-srv/web/ipfire/html/themes/darkdos/include/style.css
 srv/web/ipfire/html/themes/ipfire
-srv/web/ipfire/html/themes/ipfire-legacy
-srv/web/ipfire/html/themes/ipfire-legacy/images
-srv/web/ipfire/html/themes/ipfire-legacy/images/n1.gif
-srv/web/ipfire/html/themes/ipfire-legacy/images/n2.gif
-srv/web/ipfire/html/themes/ipfire-legacy/images/n3.gif
-srv/web/ipfire/html/themes/ipfire-legacy/images/n4.gif
-srv/web/ipfire/html/themes/ipfire-legacy/images/n5.gif
-srv/web/ipfire/html/themes/ipfire-legacy/images/n6.gif
-srv/web/ipfire/html/themes/ipfire-legacy/images/spacer.gif
-srv/web/ipfire/html/themes/ipfire-legacy/include
-srv/web/ipfire/html/themes/ipfire-legacy/include/colors.txt
-srv/web/ipfire/html/themes/ipfire-legacy/include/functions.pl
-srv/web/ipfire/html/themes/ipfire-legacy/include/style.css
-srv/web/ipfire/html/themes/ipfire-rounded
 srv/web/ipfire/html/themes/ipfire/images
 srv/web/ipfire/html/themes/ipfire/images/n2.gif
 srv/web/ipfire/html/themes/ipfire/images/n3.gif
@@ -346,25 +319,10 @@ srv/web/ipfire/html/themes/ipfire/images/tux2.png
 srv/web/ipfire/html/themes/ipfire/include
 srv/web/ipfire/html/themes/ipfire/include/colors.txt
 srv/web/ipfire/html/themes/ipfire/include/css
-srv/web/ipfire/html/themes/ipfire/include/css/style-rounded.css
 srv/web/ipfire/html/themes/ipfire/include/css/style.css
 srv/web/ipfire/html/themes/ipfire/include/functions.pl
 srv/web/ipfire/html/themes/ipfire/include/js
 srv/web/ipfire/html/themes/ipfire/include/js/refreshInetInfo.js
-srv/web/ipfire/html/themes/maniac
-srv/web/ipfire/html/themes/maniac/images
-srv/web/ipfire/html/themes/maniac/images/IPFire.png
-srv/web/ipfire/html/themes/maniac/images/b1.gif
-srv/web/ipfire/html/themes/maniac/images/b2.gif
-srv/web/ipfire/html/themes/maniac/images/b3.gif
-srv/web/ipfire/html/themes/maniac/images/b4.gif
-srv/web/ipfire/html/themes/maniac/images/b5.gif
-srv/web/ipfire/html/themes/maniac/images/b6.gif
-srv/web/ipfire/html/themes/maniac/images/spacer.gif
-srv/web/ipfire/html/themes/maniac/include
-srv/web/ipfire/html/themes/maniac/include/colors.txt
-srv/web/ipfire/html/themes/maniac/include/functions.pl
-srv/web/ipfire/html/themes/maniac/include/style.css
 var/updatecache
 var/updatecache/download
 var/updatecache/metadata
index f21cdc9fd82acc07a6b663ddc58fd83373d5f16c..6f4c7fd45415fcdeb2feaaa6116ea0557971c243 100644 (file)
@@ -7,14 +7,10 @@
 #usr/etc
 #usr/etc/bash_completion.d
 #usr/etc/bash_completion.d/cargo
-#usr/lib/libLLVM-11-rust-1.50.0-stable.so
-#usr/lib/libchalk_derive-61359e51e4358720.so
-#usr/lib/librustc_driver-02bb148e88292f22.so
-#usr/lib/librustc_macros-4fdb095435d7e9cb.so
-#usr/lib/libserde_derive-ebf4f007defb9256.so
-#usr/lib/libstd-6f77337c1826707d.so
-#usr/lib/libtest-e47ef95451387c6a.so
-#usr/lib/libtracing_attributes-36f34216659db5d4.so
+#usr/lib/libLLVM-11-rust-1.51.0-stable.so
+#usr/lib/librustc_driver-7ea116e55de24565.so
+#usr/lib/libstd-b1047a2788193be4.so
+#usr/lib/libtest-db2b7a6bef408fa0.so
 #usr/lib/rustlib
 #usr/lib/rustlib/components
 #usr/lib/rustlib/etc
 #usr/lib/rustlib/x86_64-unknown-linux-gnu
 #usr/lib/rustlib/x86_64-unknown-linux-gnu/bin
 #usr/lib/rustlib/x86_64-unknown-linux-gnu/lib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-65e4f8df4b8bbd73.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-c0e64497deb085aa.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-edc29aa8c04b480f.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-2e8740599b11634b.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-d36087076e1dd756.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-2408224b4af46d83.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgetopts-b3c2130783b6e355.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-fec1b74170245419.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-72a374d36f3d0a31.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-241cf59851357bea.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-78f8506dd5004913.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-217a514dc8d845c6.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_abort-d669fd4a86f7cf8c.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e238540f8faf9927.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libproc_macro-bba0624c33176ddd.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libprofiler_builtins-123e57c2755f4d4f.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-4b4efaa8c4601753.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-eaad965909c4200f.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-d4ef8bf89076ed01.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-2642d2bccc00517a.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-e2523c360f03ba10.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-3aaf8f932781f33e.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgetopts-95dbee16e1f1413e.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-d36e07ed2cc56ee4.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-58a065cdff5508a2.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-760e48b3f782e7f5.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-c6b02b522c91c060.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-dca728ac8ed54d87.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_abort-e64bb1b2baa83853.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e8e399e2092f3b2a.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libproc_macro-54c67f2a732d07c8.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libprofiler_builtins-3d6f66b0d6604f40.rlib
 #usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-stable_rt.asan.a
 #usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-stable_rt.lsan.a
 #usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-stable_rt.msan.a
 #usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-stable_rt.tsan.a
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-e74f867eb2f15322.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-cb9206ed96de54c3.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-6a141406945fda5a.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_std-e773e1a4ab176789.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-6f77337c1826707d.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-6f77337c1826707d.so
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libterm-17f420b89a471dd5.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-e47ef95451387c6a.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-e47ef95451387c6a.so
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunicode_width-fc4fe3c8698a6dd4.rlib
-#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-33ee81149d314805.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-3855d04b1bb40ceb.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-82aeeedcc8d1450a.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-36070e2029bb21ea.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_std-bb10221986b0d0dc.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-b1047a2788193be4.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-b1047a2788193be4.so
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libterm-48aa4fef4e05ebc9.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-db2b7a6bef408fa0.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-db2b7a6bef408fa0.so
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunicode_width-ca628c5eca5e5caf.rlib
+#usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-5c4d6c9d7595f844.rlib
 #usr/libexec/cargo-credential-1password
 #usr/share/doc/cargo
 #usr/share/doc/cargo/LICENSE-APACHE
index 710ad5369436ed51da46069984a4b37132caa019..923192f0fc8c4b372ba642976e6bed0c47479df0 100644 (file)
@@ -4,14 +4,13 @@ usr/bin/zstdcat
 usr/bin/zstdgrep
 usr/bin/zstdless
 usr/bin/zstdmt
-#usr/include/zbuff.h
 #usr/include/zdict.h
 #usr/include/zstd.h
 #usr/include/zstd_errors.h
 #usr/lib/libzstd.a
 #usr/lib/libzstd.so
 usr/lib/libzstd.so.1
-usr/lib/libzstd.so.1.4.5
+usr/lib/libzstd.so.1.4.9
 #usr/lib/pkgconfig/libzstd.pc
 #usr/share/man/man1/unzstd.1
 #usr/share/man/man1/zstd.1
diff --git a/config/rootfiles/core/156/filelists/Archive-Tar b/config/rootfiles/core/156/filelists/Archive-Tar
new file mode 120000 (symlink)
index 0000000..74d9c29
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Archive-Tar
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Archive-Zip b/config/rootfiles/core/156/filelists/Archive-Zip
new file mode 120000 (symlink)
index 0000000..b243095
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Archive-Zip
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/BerkeleyDB b/config/rootfiles/core/156/filelists/BerkeleyDB
new file mode 120000 (symlink)
index 0000000..2f16e19
--- /dev/null
@@ -0,0 +1 @@
+../../../common/BerkeleyDB
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Compress-Zlib b/config/rootfiles/core/156/filelists/Compress-Zlib
new file mode 120000 (symlink)
index 0000000..4dc10ac
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Compress-Zlib
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Convert-TNEF b/config/rootfiles/core/156/filelists/Convert-TNEF
new file mode 120000 (symlink)
index 0000000..7cd2e74
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Convert-TNEF
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Convert-UUlib b/config/rootfiles/core/156/filelists/Convert-UUlib
new file mode 120000 (symlink)
index 0000000..bfb35b5
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Convert-UUlib
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Crypt-PasswdMD5 b/config/rootfiles/core/156/filelists/Crypt-PasswdMD5
new file mode 120000 (symlink)
index 0000000..9a766e1
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Crypt-PasswdMD5
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Digest-HMAC b/config/rootfiles/core/156/filelists/Digest-HMAC
new file mode 120000 (symlink)
index 0000000..b07b3f7
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Digest-HMAC
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Digest-SHA1 b/config/rootfiles/core/156/filelists/Digest-SHA1
new file mode 120000 (symlink)
index 0000000..b13be9f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Digest-SHA1
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/GD-Graph b/config/rootfiles/core/156/filelists/GD-Graph
new file mode 120000 (symlink)
index 0000000..1718c5f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/GD-Graph
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/GD-TextUtil b/config/rootfiles/core/156/filelists/GD-TextUtil
new file mode 120000 (symlink)
index 0000000..de5b1ba
--- /dev/null
@@ -0,0 +1 @@
+../../../common/GD-TextUtil
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/HTML-Parser b/config/rootfiles/core/156/filelists/HTML-Parser
new file mode 120000 (symlink)
index 0000000..2f7b019
--- /dev/null
@@ -0,0 +1 @@
+../../../common/HTML-Parser
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/HTML-Tagset b/config/rootfiles/core/156/filelists/HTML-Tagset
new file mode 120000 (symlink)
index 0000000..5ca8564
--- /dev/null
@@ -0,0 +1 @@
+../../../common/HTML-Tagset
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/HTML-Template b/config/rootfiles/core/156/filelists/HTML-Template
new file mode 120000 (symlink)
index 0000000..f17c1da
--- /dev/null
@@ -0,0 +1 @@
+../../../common/HTML-Template
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/IO-Socket-SSL b/config/rootfiles/core/156/filelists/IO-Socket-SSL
new file mode 120000 (symlink)
index 0000000..d244923
--- /dev/null
@@ -0,0 +1 @@
+../../../common/IO-Socket-SSL
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/IO-Stringy b/config/rootfiles/core/156/filelists/IO-Stringy
new file mode 120000 (symlink)
index 0000000..5cd881c
--- /dev/null
@@ -0,0 +1 @@
+../../../common/IO-Stringy
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/MIME-Tools b/config/rootfiles/core/156/filelists/MIME-Tools
new file mode 120000 (symlink)
index 0000000..af86028
--- /dev/null
@@ -0,0 +1 @@
+../../../common/MIME-Tools
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Mail-Tools b/config/rootfiles/core/156/filelists/Mail-Tools
new file mode 120000 (symlink)
index 0000000..55e3e0c
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Mail-Tools
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Net-DNS b/config/rootfiles/core/156/filelists/Net-DNS
new file mode 120000 (symlink)
index 0000000..5ff1b19
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Net-DNS
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Net-IPv4Addr b/config/rootfiles/core/156/filelists/Net-IPv4Addr
new file mode 120000 (symlink)
index 0000000..93d0bf8
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Net-IPv4Addr
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Net-Server b/config/rootfiles/core/156/filelists/Net-Server
new file mode 120000 (symlink)
index 0000000..67c6a32
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Net-Server
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Net-Telnet b/config/rootfiles/core/156/filelists/Net-Telnet
new file mode 120000 (symlink)
index 0000000..66ca926
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Net-Telnet
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Net_SSLeay b/config/rootfiles/core/156/filelists/Net_SSLeay
new file mode 120000 (symlink)
index 0000000..13fe056
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Net_SSLeay
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Text-Tabs+Wrap b/config/rootfiles/core/156/filelists/Text-Tabs+Wrap
new file mode 120000 (symlink)
index 0000000..71d20ed
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Text-Tabs+Wrap
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/URI b/config/rootfiles/core/156/filelists/URI
new file mode 120000 (symlink)
index 0000000..610b263
--- /dev/null
@@ -0,0 +1 @@
+../../../common/URI
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/Unix-Syslog b/config/rootfiles/core/156/filelists/Unix-Syslog
new file mode 120000 (symlink)
index 0000000..ba4092f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Unix-Syslog
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/XML-Parser b/config/rootfiles/core/156/filelists/XML-Parser
new file mode 120000 (symlink)
index 0000000..4f5be1a
--- /dev/null
@@ -0,0 +1 @@
+../../../common/XML-Parser
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/aarch64/files b/config/rootfiles/core/156/filelists/aarch64/files
new file mode 100644 (file)
index 0000000..19343ce
--- /dev/null
@@ -0,0 +1 @@
+etc/sysctl-aarch64.conf
diff --git a/config/rootfiles/core/156/filelists/acl b/config/rootfiles/core/156/filelists/acl
new file mode 120000 (symlink)
index 0000000..d819f9c
--- /dev/null
@@ -0,0 +1 @@
+../../../common/acl
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/armv5tel/files b/config/rootfiles/core/156/filelists/armv5tel/files
new file mode 100644 (file)
index 0000000..f273eab
--- /dev/null
@@ -0,0 +1 @@
+etc/sysctl-armv5tel.conf
diff --git a/config/rootfiles/core/156/filelists/bzip2 b/config/rootfiles/core/156/filelists/bzip2
new file mode 120000 (symlink)
index 0000000..03f4ee5
--- /dev/null
@@ -0,0 +1 @@
+../../../common/bzip2
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/crda b/config/rootfiles/core/156/filelists/crda
new file mode 120000 (symlink)
index 0000000..d68c46e
--- /dev/null
@@ -0,0 +1 @@
+../../../common/crda
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/diffutils b/config/rootfiles/core/156/filelists/diffutils
new file mode 120000 (symlink)
index 0000000..a5c02f3
--- /dev/null
@@ -0,0 +1 @@
+../../../common/diffutils
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/ed b/config/rootfiles/core/156/filelists/ed
new file mode 120000 (symlink)
index 0000000..0ed331c
--- /dev/null
@@ -0,0 +1 @@
+../../../common/ed
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/files b/config/rootfiles/core/156/filelists/files
new file mode 100644 (file)
index 0000000..680b1f3
--- /dev/null
@@ -0,0 +1,8 @@
+etc/collectd.conf
+etc/rc.d/init.d/suricata
+etc/sysctl.conf
+lib/udev/network-hotplug-bridges
+lib/udev/network-hotplug-rename
+var/ipfire/graphs.pl
+var/ipfire/header.pl
+var/ipfire/network-functions.pl
diff --git a/config/rootfiles/core/156/filelists/gawk b/config/rootfiles/core/156/filelists/gawk
new file mode 120000 (symlink)
index 0000000..a3bbe32
--- /dev/null
@@ -0,0 +1 @@
+../../../common/gawk
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/gettext b/config/rootfiles/core/156/filelists/gettext
new file mode 120000 (symlink)
index 0000000..b6c6c6f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/gettext
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/gmp b/config/rootfiles/core/156/filelists/gmp
new file mode 120000 (symlink)
index 0000000..8662a89
--- /dev/null
@@ -0,0 +1 @@
+../../../common/gmp
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/grep b/config/rootfiles/core/156/filelists/grep
new file mode 120000 (symlink)
index 0000000..ab5ef8b
--- /dev/null
@@ -0,0 +1 @@
+../../../common/grep
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/jquery b/config/rootfiles/core/156/filelists/jquery
new file mode 120000 (symlink)
index 0000000..65df10c
--- /dev/null
@@ -0,0 +1 @@
+../../../common/jquery
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/libcap b/config/rootfiles/core/156/filelists/libcap
new file mode 120000 (symlink)
index 0000000..ed67d95
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libcap
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/libloc b/config/rootfiles/core/156/filelists/libloc
new file mode 120000 (symlink)
index 0000000..ff4a924
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libloc
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/libmpc b/config/rootfiles/core/156/filelists/libmpc
new file mode 120000 (symlink)
index 0000000..88840fc
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libmpc
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/liboping b/config/rootfiles/core/156/filelists/liboping
new file mode 120000 (symlink)
index 0000000..3ae1904
--- /dev/null
@@ -0,0 +1 @@
+../../../common/liboping
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/libpcap b/config/rootfiles/core/156/filelists/libpcap
new file mode 120000 (symlink)
index 0000000..c7f9f52
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libpcap
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/libwww-perl b/config/rootfiles/core/156/filelists/libwww-perl
new file mode 120000 (symlink)
index 0000000..ad77c8c
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libwww-perl
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl b/config/rootfiles/core/156/filelists/perl
new file mode 120000 (symlink)
index 0000000..478292a
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-Apache-Htpasswd b/config/rootfiles/core/156/filelists/perl-Apache-Htpasswd
new file mode 120000 (symlink)
index 0000000..c7d2c8d
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Apache-Htpasswd
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-CGI b/config/rootfiles/core/156/filelists/perl-CGI
new file mode 120000 (symlink)
index 0000000..9296566
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-CGI
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-DBD-SQLite b/config/rootfiles/core/156/filelists/perl-DBD-SQLite
new file mode 120000 (symlink)
index 0000000..d911249
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-DBD-SQLite
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-DBI b/config/rootfiles/core/156/filelists/perl-DBI
new file mode 120000 (symlink)
index 0000000..8b26e71
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-DBI
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-Device-Modem b/config/rootfiles/core/156/filelists/perl-Device-Modem
new file mode 120000 (symlink)
index 0000000..ea70f08
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Device-Modem
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-Device-SerialPort b/config/rootfiles/core/156/filelists/perl-Device-SerialPort
new file mode 120000 (symlink)
index 0000000..2eb1527
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Device-SerialPort
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-Email-Date-Format b/config/rootfiles/core/156/filelists/perl-Email-Date-Format
new file mode 120000 (symlink)
index 0000000..9980811
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Email-Date-Format
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-Font-TTF b/config/rootfiles/core/156/filelists/perl-Font-TTF
new file mode 120000 (symlink)
index 0000000..6bb27c3
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Font-TTF
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-GD b/config/rootfiles/core/156/filelists/perl-GD
new file mode 120000 (symlink)
index 0000000..962d937
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-GD
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-IO-String b/config/rootfiles/core/156/filelists/perl-IO-String
new file mode 120000 (symlink)
index 0000000..2953e22
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-IO-String
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-MIME-Lite b/config/rootfiles/core/156/filelists/perl-MIME-Lite
new file mode 120000 (symlink)
index 0000000..aa0aa6b
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-MIME-Lite
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-Net-CIDR-Lite b/config/rootfiles/core/156/filelists/perl-Net-CIDR-Lite
new file mode 120000 (symlink)
index 0000000..a51cf87
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Net-CIDR-Lite
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-NetAddr-IP b/config/rootfiles/core/156/filelists/perl-NetAddr-IP
new file mode 120000 (symlink)
index 0000000..01f2d7d
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-NetAddr-IP
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-PDF-API2 b/config/rootfiles/core/156/filelists/perl-PDF-API2
new file mode 120000 (symlink)
index 0000000..8047841
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-PDF-API2
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-Sort-Naturally b/config/rootfiles/core/156/filelists/perl-Sort-Naturally
new file mode 120000 (symlink)
index 0000000..9d70650
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Sort-Naturally
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-Switch b/config/rootfiles/core/156/filelists/perl-Switch
new file mode 120000 (symlink)
index 0000000..56da436
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Switch
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/perl-Text-CSV_XS b/config/rootfiles/core/156/filelists/perl-Text-CSV_XS
new file mode 120000 (symlink)
index 0000000..ec1202f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Text-CSV_XS
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/rrdtool b/config/rootfiles/core/156/filelists/rrdtool
new file mode 120000 (symlink)
index 0000000..7a82e41
--- /dev/null
@@ -0,0 +1 @@
+../../../common/rrdtool
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/strongswan b/config/rootfiles/core/156/filelists/strongswan
new file mode 120000 (symlink)
index 0000000..90c727e
--- /dev/null
@@ -0,0 +1 @@
+../../../common/strongswan
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/sudo b/config/rootfiles/core/156/filelists/sudo
new file mode 120000 (symlink)
index 0000000..0d3c45e
--- /dev/null
@@ -0,0 +1 @@
+../../../common/sudo
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/web-user-interface b/config/rootfiles/core/156/filelists/web-user-interface
new file mode 120000 (symlink)
index 0000000..70c74b4
--- /dev/null
@@ -0,0 +1 @@
+../../../common/web-user-interface
\ No newline at end of file
diff --git a/config/rootfiles/core/156/filelists/x86_64/files b/config/rootfiles/core/156/filelists/x86_64/files
new file mode 100644 (file)
index 0000000..0a9fd8a
--- /dev/null
@@ -0,0 +1 @@
+etc/sysctl-x86_64.conf
diff --git a/config/rootfiles/core/156/filelists/zstd b/config/rootfiles/core/156/filelists/zstd
new file mode 120000 (symlink)
index 0000000..d6d4a3b
--- /dev/null
@@ -0,0 +1 @@
+../../../common/zstd
\ No newline at end of file
diff --git a/config/rootfiles/core/156/update.sh b/config/rootfiles/core/156/update.sh
new file mode 100644 (file)
index 0000000..5b14c53
--- /dev/null
@@ -0,0 +1,91 @@
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire is free software; you can redistribute it and/or modify           #
+# it under the terms of the GNU General Public License as published by     #
+# the Free Software Foundation; either version 3 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire is distributed in the hope that it will be useful,                #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
+# GNU General Public License for more details.                             #
+#                                                                          #
+# You should have received a copy of the GNU General Public License        #
+# along with IPFire; if not, write to the Free Software                    #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
+#                                                                          #
+# Copyright (C) 2020 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+core=156
+
+# Remove old core updates from pakfire cache to save space...
+for (( i=1; i<=$core; i++ )); do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+# Remove files
+rm -vf \
+       /lib/libcap.so.1 \
+       /srv/web/ipfire/html/include/snortupdateutility.js \
+       /usr/bin/gawk-4.1.4 \
+       /usr/bin/igawk
+
+# Stop services
+
+# Extract files
+extract_files
+
+# update linker config
+ldconfig
+
+# Remove old perl modules & webUI themes
+rm -rfv \
+       /usr/lib/perl5/5.30.0 \
+       /srv/web/ipfire/html/themes/darkdos \
+       /srv/web/ipfire/html/themes/ipfire-legacy \
+       /srv/web/ipfire/html/themes/maniac
+
+# Update Language cache
+/usr/local/bin/update-lang-cache
+
+# Filesytem cleanup
+/usr/local/bin/filesystem-cleanup
+
+# Reload sysctl.conf
+/etc/init.d/sysctl start
+
+# Migrate any macvtap interfaces to bridge
+sed -e "s/_MODE=macvtap/_MODE=bridge/g" \
+       -i /var/ipfire/ethernet/settings
+
+# Start services
+telinit u
+/etc/init.d/suricata restart
+if grep -q "ENABLED=on" /var/ipfire/vpn/settings; then
+       /etc/init.d/ipsec restart
+fi
+
+# This update needs a reboot...
+#touch /var/run/need_reboot
+
+# Finish
+/etc/init.d/fireinfo start
+sendprofile
+
+# Update grub config to display new core version
+if [ -e /boot/grub/grub.cfg ]; then
+       grub-mkconfig -o /boot/grub/grub.cfg
+fi
+
+sync
+
+# Don't report the exitcode last command
+exit 0
diff --git a/config/rootfiles/oldcore/155/exclude b/config/rootfiles/oldcore/155/exclude
new file mode 100644 (file)
index 0000000..818039f
--- /dev/null
@@ -0,0 +1,34 @@
+boot/config.txt
+boot/grub/grub.cfg
+boot/grub/grubenv
+etc/alternatives
+etc/collectd.custom
+etc/default/grub
+etc/ipsec.conf
+etc/ipsec.secrets
+etc/ipsec.user.conf
+etc/ipsec.user.secrets
+etc/localtime
+etc/shadow
+etc/snort/snort.conf
+etc/ssl/openssl.cnf
+etc/sudoers
+etc/sysconfig/firewall.local
+etc/sysconfig/rc.local
+etc/udev/rules.d/30-persistent-network.rules
+srv/web/ipfire/html/proxy.pac
+usr/share/xt_geoip
+var/ipfire/dma
+var/ipfire/time
+var/ipfire/firewall/locationblock
+var/ipfire/fwhosts/customlocationgrp
+var/ipfire/ovpn
+var/ipfire/urlfilter/blacklist
+var/ipfire/urlfilter/settings
+var/lib/alternatives
+var/lib/location/database.db
+var/log/cache
+var/log/dhcpcd.log
+var/log/messages
+var/state/dhcp/dhcpd.leases
+var/updatecache
diff --git a/config/rootfiles/oldcore/155/filelists/attr b/config/rootfiles/oldcore/155/filelists/attr
new file mode 120000 (symlink)
index 0000000..c808017
--- /dev/null
@@ -0,0 +1 @@
+../../../common/attr
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/155/filelists/bind b/config/rootfiles/oldcore/155/filelists/bind
new file mode 120000 (symlink)
index 0000000..48a0eba
--- /dev/null
@@ -0,0 +1 @@
+../../../common/bind
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/155/filelists/nettle b/config/rootfiles/oldcore/155/filelists/nettle
new file mode 120000 (symlink)
index 0000000..f0dba7a
--- /dev/null
@@ -0,0 +1 @@
+../../../common/nettle
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/155/filelists/openssl b/config/rootfiles/oldcore/155/filelists/openssl
new file mode 120000 (symlink)
index 0000000..e011a92
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openssl
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/155/filelists/release-files b/config/rootfiles/oldcore/155/filelists/release-files
new file mode 100644 (file)
index 0000000..0dec37e
--- /dev/null
@@ -0,0 +1,5 @@
+etc/system-release
+etc/issue
+etc/os-release
+srv/web/ipfire/cgi-bin/credits.cgi
+var/ipfire/langs
diff --git a/config/rootfiles/oldcore/155/filelists/suricata b/config/rootfiles/oldcore/155/filelists/suricata
new file mode 120000 (symlink)
index 0000000..f671f69
--- /dev/null
@@ -0,0 +1 @@
+../../../common/suricata
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/155/filelists/sysvinit b/config/rootfiles/oldcore/155/filelists/sysvinit
new file mode 120000 (symlink)
index 0000000..f3fb330
--- /dev/null
@@ -0,0 +1 @@
+../../../common/sysvinit
\ No newline at end of file
index 78b2a1d97e372a9994aa04f342527e80141889ad..862c5b5639f67a0cec962b61777809e74faba40a 100644 (file)
@@ -667,7 +667,7 @@ usr/lib/samba/libldb-key-value-samba4.so
 usr/lib/samba/libldb-tdb-err-map-samba4.so
 usr/lib/samba/libldb-tdb-int-samba4.so
 usr/lib/samba/libldb.so.2
-usr/lib/samba/libldb.so.2.2.0
+usr/lib/samba/libldb.so.2.2.1
 usr/lib/samba/libldbsamba-samba4.so
 usr/lib/samba/liblibcli-lsa3-samba4.so
 usr/lib/samba/liblibcli-netlogon3-samba4.so
@@ -688,7 +688,7 @@ usr/lib/samba/libposix-eadb-samba4.so
 usr/lib/samba/libprinter-driver-samba4.so
 usr/lib/samba/libprinting-migrate-samba4.so
 usr/lib/samba/libpyldb-util.cpython-38-arm-linux-gnueabi.so.2
-usr/lib/samba/libpyldb-util.cpython-38-arm-linux-gnueabi.so.2.2.0
+usr/lib/samba/libpyldb-util.cpython-38-arm-linux-gnueabi.so.2.2.1
 usr/lib/samba/libpytalloc-util.cpython-38-arm-linux-gnueabi.so.2
 usr/lib/samba/libpytalloc-util.cpython-38-arm-linux-gnueabi.so.2.3.1
 usr/lib/samba/libregistry-samba4.so
@@ -711,7 +711,6 @@ usr/lib/samba/libshares-samba4.so
 usr/lib/samba/libsmb-transport-samba4.so
 usr/lib/samba/libsmbclient-raw-samba4.so
 usr/lib/samba/libsmbd-base-samba4.so
-usr/lib/samba/libsmbd-conn-samba4.so
 usr/lib/samba/libsmbd-shim-samba4.so
 usr/lib/samba/libsmbldaphelper-samba4.so
 usr/lib/samba/libsmbpasswdparser-samba4.so
index 73591344940bcdb23a4e09d8142100f6600f0699..3548cc8faf27e9b587d1ce46895ce0b53d6aa3b0 100644 (file)
@@ -13,13 +13,13 @@ usr/bin/foomatic-ppdfile
 usr/bin/foomatic-printjob
 usr/bin/foomatic-searchprinter
 usr/lib/cups/driver/foomatic
-#usr/lib/perl5/site_perl/5.30.0/Foomatic
-usr/lib/perl5/site_perl/5.30.0/Foomatic/DB.pm
-usr/lib/perl5/site_perl/5.30.0/Foomatic/Defaults.pm
-usr/lib/perl5/site_perl/5.30.0/Foomatic/PPD.pm
-usr/lib/perl5/site_perl/5.30.0/Foomatic/UIElem.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Foomatic
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Foomatic/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Foomatic
+usr/lib/perl5/site_perl/5.32.1/Foomatic/DB.pm
+usr/lib/perl5/site_perl/5.32.1/Foomatic/Defaults.pm
+usr/lib/perl5/site_perl/5.32.1/Foomatic/PPD.pm
+usr/lib/perl5/site_perl/5.32.1/Foomatic/UIElem.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Foomatic
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Foomatic/.packlist
 usr/sbin/foomatic-addpjloptions
 usr/sbin/foomatic-cleanupdrivers
 usr/sbin/foomatic-extract-text
index c2023a326314f94ef388ba46ae3c74830ca5c86e..508e87f70e344b148bc8dc84fb119cd138d734fe 100644 (file)
@@ -61,6 +61,7 @@ usr/libexec/git-core/git-fetch-pack
 usr/libexec/git-core/git-filter-branch
 usr/libexec/git-core/git-fmt-merge-msg
 usr/libexec/git-core/git-for-each-ref
+usr/libexec/git-core/git-for-each-repo
 usr/libexec/git-core/git-format-patch
 usr/libexec/git-core/git-fsck
 usr/libexec/git-core/git-fsck-objects
@@ -86,6 +87,7 @@ usr/libexec/git-core/git-ls-remote
 usr/libexec/git-core/git-ls-tree
 usr/libexec/git-core/git-mailinfo
 usr/libexec/git-core/git-mailsplit
+usr/libexec/git-core/git-maintenance
 usr/libexec/git-core/git-merge
 usr/libexec/git-core/git-merge-base
 usr/libexec/git-core/git-merge-file
@@ -109,7 +111,6 @@ usr/libexec/git-core/git-p4
 usr/libexec/git-core/git-pack-objects
 usr/libexec/git-core/git-pack-redundant
 usr/libexec/git-core/git-pack-refs
-usr/libexec/git-core/git-parse-remote
 usr/libexec/git-core/git-patch-id
 usr/libexec/git-core/git-prune
 usr/libexec/git-core/git-prune-packed
@@ -129,7 +130,6 @@ usr/libexec/git-core/git-remote-ftp
 usr/libexec/git-core/git-remote-ftps
 usr/libexec/git-core/git-remote-http
 usr/libexec/git-core/git-remote-https
-usr/libexec/git-core/git-remote-testsvn
 usr/libexec/git-core/git-repack
 usr/libexec/git-core/git-replace
 usr/libexec/git-core/git-request-pull
@@ -180,7 +180,6 @@ usr/libexec/git-core/git-write-tree
 #usr/libexec/git-core/mergetools
 usr/libexec/git-core/mergetools/araxis
 usr/libexec/git-core/mergetools/bc
-usr/libexec/git-core/mergetools/bc3
 usr/libexec/git-core/mergetools/codecompare
 usr/libexec/git-core/mergetools/deltawalker
 usr/libexec/git-core/mergetools/diffmerge
@@ -190,19 +189,16 @@ usr/libexec/git-core/mergetools/emerge
 usr/libexec/git-core/mergetools/examdiff
 usr/libexec/git-core/mergetools/guiffy
 usr/libexec/git-core/mergetools/gvimdiff
-usr/libexec/git-core/mergetools/gvimdiff2
-usr/libexec/git-core/mergetools/gvimdiff3
 usr/libexec/git-core/mergetools/kdiff3
 usr/libexec/git-core/mergetools/kompare
 usr/libexec/git-core/mergetools/meld
+usr/libexec/git-core/mergetools/nvimdiff
 usr/libexec/git-core/mergetools/opendiff
 usr/libexec/git-core/mergetools/p4merge
 usr/libexec/git-core/mergetools/smerge
 usr/libexec/git-core/mergetools/tkdiff
 usr/libexec/git-core/mergetools/tortoisemerge
 usr/libexec/git-core/mergetools/vimdiff
-usr/libexec/git-core/mergetools/vimdiff2
-usr/libexec/git-core/mergetools/vimdiff3
 usr/libexec/git-core/mergetools/winmerge
 usr/libexec/git-core/mergetools/xxdiff
 #usr/share/git-core
@@ -221,6 +217,7 @@ usr/share/git-core/templates/hooks/pre-push.sample
 usr/share/git-core/templates/hooks/pre-rebase.sample
 usr/share/git-core/templates/hooks/pre-receive.sample
 usr/share/git-core/templates/hooks/prepare-commit-msg.sample
+usr/share/git-core/templates/hooks/push-to-checkout.sample
 usr/share/git-core/templates/hooks/update.sample
 #usr/share/git-core/templates/info
 usr/share/git-core/templates/info/exclude
@@ -314,9 +311,11 @@ usr/share/git-core/templates/info/exclude
 #usr/share/locale/el/LC_MESSAGES/git.mo
 #usr/share/locale/es/LC_MESSAGES/git.mo
 #usr/share/locale/fr/LC_MESSAGES/git.mo
+#usr/share/locale/id/LC_MESSAGES/git.mo
 #usr/share/locale/is/LC_MESSAGES/git.mo
 #usr/share/locale/it/LC_MESSAGES/git.mo
 #usr/share/locale/ko/LC_MESSAGES/git.mo
+#usr/share/locale/pl/LC_MESSAGES/git.mo
 #usr/share/locale/pt_PT/LC_MESSAGES/git.mo
 #usr/share/locale/ru/LC_MESSAGES/git.mo
 #usr/share/locale/sv/LC_MESSAGES/git.mo
index d6fe311274d7296882ff88142c1e1e0f3b245dab..4367d005de2c930270fc0d7667d36832c87d5225 100644 (file)
@@ -8,41 +8,41 @@ usr/bin/gnump3d
 usr/bin/gnump3d-index
 usr/bin/gnump3d-top
 usr/bin/gnump3d2
-#usr/lib/perl5/5.30.0/gnump3d
-usr/lib/perl5/5.30.0/gnump3d/IP.pm
-usr/lib/perl5/5.30.0/gnump3d/MD5.pm
-usr/lib/perl5/5.30.0/gnump3d/Request.pm
-usr/lib/perl5/5.30.0/gnump3d/WMA.pm
-usr/lib/perl5/5.30.0/gnump3d/base64.pm
-usr/lib/perl5/5.30.0/gnump3d/config.pm
-usr/lib/perl5/5.30.0/gnump3d/files.pm
-usr/lib/perl5/5.30.0/gnump3d/filetypes.pm
-#usr/lib/perl5/5.30.0/gnump3d/lang
-usr/lib/perl5/5.30.0/gnump3d/lang/ba.pm
-usr/lib/perl5/5.30.0/gnump3d/lang/de.pm
-usr/lib/perl5/5.30.0/gnump3d/lang/en.pm
-usr/lib/perl5/5.30.0/gnump3d/lang/es.pm
-usr/lib/perl5/5.30.0/gnump3d/lang/fr.pm
-usr/lib/perl5/5.30.0/gnump3d/lang/lookup.pm
-usr/lib/perl5/5.30.0/gnump3d/mp3info.pm
-usr/lib/perl5/5.30.0/gnump3d/mp4info.pm
-usr/lib/perl5/5.30.0/gnump3d/ogginfo.pm
-#usr/lib/perl5/5.30.0/gnump3d/plugins
-usr/lib/perl5/5.30.0/gnump3d/plugins/copying.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/info.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/now.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/playlist.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/prefs.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/random.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/recent.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/search.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/size.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/stats.pm
-usr/lib/perl5/5.30.0/gnump3d/plugins/tagbrowse.pm
-usr/lib/perl5/5.30.0/gnump3d/readtags.pm
-usr/lib/perl5/5.30.0/gnump3d/sorting.pm
-usr/lib/perl5/5.30.0/gnump3d/tagcache.pm
-usr/lib/perl5/5.30.0/gnump3d/url.pm
+#usr/lib/perl5/5.32.1/gnump3d
+usr/lib/perl5/5.32.1/gnump3d/IP.pm
+usr/lib/perl5/5.32.1/gnump3d/MD5.pm
+usr/lib/perl5/5.32.1/gnump3d/Request.pm
+usr/lib/perl5/5.32.1/gnump3d/WMA.pm
+usr/lib/perl5/5.32.1/gnump3d/base64.pm
+usr/lib/perl5/5.32.1/gnump3d/config.pm
+usr/lib/perl5/5.32.1/gnump3d/files.pm
+usr/lib/perl5/5.32.1/gnump3d/filetypes.pm
+#usr/lib/perl5/5.32.1/gnump3d/lang
+usr/lib/perl5/5.32.1/gnump3d/lang/ba.pm
+usr/lib/perl5/5.32.1/gnump3d/lang/de.pm
+usr/lib/perl5/5.32.1/gnump3d/lang/en.pm
+usr/lib/perl5/5.32.1/gnump3d/lang/es.pm
+usr/lib/perl5/5.32.1/gnump3d/lang/fr.pm
+usr/lib/perl5/5.32.1/gnump3d/lang/lookup.pm
+usr/lib/perl5/5.32.1/gnump3d/mp3info.pm
+usr/lib/perl5/5.32.1/gnump3d/mp4info.pm
+usr/lib/perl5/5.32.1/gnump3d/ogginfo.pm
+#usr/lib/perl5/5.32.1/gnump3d/plugins
+usr/lib/perl5/5.32.1/gnump3d/plugins/copying.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/info.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/now.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/playlist.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/prefs.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/random.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/recent.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/search.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/size.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/stats.pm
+usr/lib/perl5/5.32.1/gnump3d/plugins/tagbrowse.pm
+usr/lib/perl5/5.32.1/gnump3d/readtags.pm
+usr/lib/perl5/5.32.1/gnump3d/sorting.pm
+usr/lib/perl5/5.32.1/gnump3d/tagcache.pm
+usr/lib/perl5/5.32.1/gnump3d/url.pm
 #usr/local/man
 #usr/local/man/man1
 #usr/local/man/man1/gnump3d-index.1
diff --git a/config/rootfiles/packages/gpgme b/config/rootfiles/packages/gpgme
deleted file mode 100644 (file)
index 2a03523..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-usr/bin/gpgme-config
-#usr/include/gpgme.h
-#usr/lib/libgpgme-pthread.la
-usr/lib/libgpgme-pthread.so
-usr/lib/libgpgme-pthread.so.11
-usr/lib/libgpgme-pthread.so.11.8.1
-#usr/lib/libgpgme.la
-usr/lib/libgpgme.so
-usr/lib/libgpgme.so.11
-usr/lib/libgpgme.so.11.8.1
-#usr/share/aclocal/gpgme.m4
-usr/share/common-lisp/source/gpgme
-usr/share/common-lisp/source/gpgme/gpgme-package.lisp
-usr/share/common-lisp/source/gpgme/gpgme.asd
-usr/share/common-lisp/source/gpgme/gpgme.lisp
-#usr/share/info/gpgme.info
-#usr/share/info/gpgme.info-1
-#usr/share/info/gpgme.info-2
index a0c6b2ab748e1b4f11cb24805aeb92440ce186cb..d8ff0a456739ccb8e7999d3d918e8cd20fe5526d 100644 (file)
@@ -6,15 +6,15 @@ etc/rc.d/rc3.d/S45guardian
 etc/rc.d/rc6.d/K76guardian
 srv/web/ipfire/cgi-bin/guardian.cgi
 usr/bin/guardianctrl
-#usr/lib/perl5/site_perl/5.30.0/Guardian
-usr/lib/perl5/site_perl/5.30.0/Guardian/Base.pm
-usr/lib/perl5/site_perl/5.30.0/Guardian/Config.pm
-usr/lib/perl5/site_perl/5.30.0/Guardian/Daemon.pm
-usr/lib/perl5/site_perl/5.30.0/Guardian/Events.pm
-usr/lib/perl5/site_perl/5.30.0/Guardian/IPtables.pm
-usr/lib/perl5/site_perl/5.30.0/Guardian/Logger.pm
-usr/lib/perl5/site_perl/5.30.0/Guardian/Parser.pm
-usr/lib/perl5/site_perl/5.30.0/Guardian/Socket.pm
+#usr/lib/perl5/site_perl/5.32.1/Guardian
+usr/lib/perl5/site_perl/5.32.1/Guardian/Base.pm
+usr/lib/perl5/site_perl/5.32.1/Guardian/Config.pm
+usr/lib/perl5/site_perl/5.32.1/Guardian/Daemon.pm
+usr/lib/perl5/site_perl/5.32.1/Guardian/Events.pm
+usr/lib/perl5/site_perl/5.32.1/Guardian/IPtables.pm
+usr/lib/perl5/site_perl/5.32.1/Guardian/Logger.pm
+usr/lib/perl5/site_perl/5.32.1/Guardian/Parser.pm
+usr/lib/perl5/site_perl/5.32.1/Guardian/Socket.pm
 usr/sbin/guardian
 var/ipfire/addon-lang/guardian.de.pl
 var/ipfire/addon-lang/guardian.en.pl
index a349cfd595ae70aee57dbdd405106cad392edb7e..531afce82de1a317c5e604e4fd7545267d53576c 100644 (file)
@@ -9,36 +9,44 @@
 #usr/include/mpd/directory.h
 #usr/include/mpd/entity.h
 #usr/include/mpd/error.h
+#usr/include/mpd/fingerprint.h
 #usr/include/mpd/idle.h
 #usr/include/mpd/list.h
 #usr/include/mpd/message.h
 #usr/include/mpd/mixer.h
+#usr/include/mpd/mount.h
+#usr/include/mpd/neighbor.h
 #usr/include/mpd/output.h
 #usr/include/mpd/pair.h
 #usr/include/mpd/parser.h
+#usr/include/mpd/partition.h
 #usr/include/mpd/password.h
 #usr/include/mpd/player.h
 #usr/include/mpd/playlist.h
 #usr/include/mpd/protocol.h
 #usr/include/mpd/queue.h
 #usr/include/mpd/recv.h
+#usr/include/mpd/replay_gain.h
 #usr/include/mpd/response.h
 #usr/include/mpd/search.h
 #usr/include/mpd/send.h
 #usr/include/mpd/settings.h
+#usr/include/mpd/socket.h
 #usr/include/mpd/song.h
 #usr/include/mpd/stats.h
 #usr/include/mpd/status.h
 #usr/include/mpd/sticker.h
 #usr/include/mpd/tag.h
 #usr/include/mpd/version.h
-#usr/lib/libmpdclient.a
-#usr/lib/libmpdclient.la
 usr/lib/libmpdclient.so
 usr/lib/libmpdclient.so.2
-usr/lib/libmpdclient.so.2.0.5
+usr/lib/libmpdclient.so.2.19
 #usr/lib/pkgconfig/libmpdclient.pc
 #usr/share/doc/libmpdclient
+#usr/share/doc/libmpdclient/AUTHORS
 #usr/share/doc/libmpdclient/COPYING
 #usr/share/doc/libmpdclient/NEWS
-#usr/share/doc/libmpdclient/README
+#usr/share/doc/libmpdclient/README.rst
+#usr/share/vala
+#usr/share/vala/vapi
+#usr/share/vala/vapi/libmpdclient.vapi
index cebfb4afe494b963163f57d2ba59cc48ecf1d453..8f0b1529643fe893f356afa923300d1a69574ff8 100644 (file)
@@ -7,7 +7,7 @@ usr/bin/statgrab
 #usr/lib/libstatgrab.la
 #usr/lib/libstatgrab.so
 usr/lib/libstatgrab.so.10
-usr/lib/libstatgrab.so.10.0.0
+usr/lib/libstatgrab.so.10.0.1
 #usr/lib/pkgconfig/libstatgrab.pc
 #usr/share/doc/libstatgrab
 #usr/share/doc/libstatgrab/AUTHORS
index e197563730cca83a40284753731e1146c42e6521..ed7f33242395b39d997622d96ae080f96a7e114f 100644 (file)
@@ -1,3 +1,4 @@
+etc/bindresvport.blacklist
 etc/netconfig
 #usr/include/tirpc
 #usr/include/tirpc/netconfig.h
index 04f439ef4a20190f6f86eca2e7ddf7a5f9f5345f..daedfc2a55129b0c7ef4652819577ebf90f1a0fd 100644 (file)
@@ -4,6 +4,9 @@ etc/mcelog/cache-error-trigger
 etc/mcelog/dimm-error-trigger
 etc/mcelog/iomca-error-trigger
 etc/mcelog/mcelog.conf
+etc/mcelog/page-error-counter-replacement-trigger
+etc/mcelog/page-error-post-sync-soft-trigger
+etc/mcelog/page-error-pre-sync-soft-trigger
 etc/mcelog/page-error-trigger
 etc/mcelog/socket-memory-error-trigger
 etc/mcelog/unknown-error-trigger
index 044b3141e714185b0e8da90fa5c58e8a950413c2..8fe33283981bb2d4425d41584b4899013ca707e9 100644 (file)
@@ -3,9 +3,8 @@ usr/bin/mpc
 #usr/share/doc/mpc/AUTHORS
 #usr/share/doc/mpc/COPYING
 #usr/share/doc/mpc/NEWS
-#usr/share/doc/mpc/README
-#usr/share/doc/mpc/mpc-completion.bash
-#usr/share/doc/mpc/mpd-m3u-handler.sh
-#usr/share/doc/mpc/mpd-pls-handler.sh
-#usr/share/doc/mpc/mppledit
-#usr/share/man/man1/mpc.1
+#usr/share/doc/mpc/README.rst
+#usr/share/doc/mpc/contrib
+#usr/share/doc/mpc/contrib/mpc-completion.bash
+#usr/share/doc/mpc/contrib/mpd-m3u-handler.sh
+#usr/share/doc/mpc/contrib/mpd-pls-handler.sh
index d26d49f06bb2d6c5e968f443ac79836b2f814df8..530cdd0986333cfb4ffc6fad497e5378a7975304 100644 (file)
@@ -1,26 +1,26 @@
 srv/web/ipfire/cgi-bin/mpfire.cgi
 srv/web/ipfire/html/images/mpfire
-usr/lib/perl5/5.30.0/Class/Accessor
-usr/lib/perl5/5.30.0/Class/Accessor.pm
-usr/lib/perl5/5.30.0/Class/Accessor/Fast.pm
-usr/lib/perl5/5.30.0/Class/Accessor/Faster.pm
-usr/lib/perl5/5.30.0/Readonly.pm
-usr/lib/perl5/site_perl/5.30.0/Audio
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Collection.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common/Item
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common/Item.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common/Item/Directory.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common/Item/Playlist.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common/Item/Song.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common/Stats.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common/Status.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Common/Time.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Playlist.pm
-usr/lib/perl5/site_perl/5.30.0/Audio/MPD/Test.pm
+usr/lib/perl5/5.32.1/Class/Accessor
+usr/lib/perl5/5.32.1/Class/Accessor.pm
+usr/lib/perl5/5.32.1/Class/Accessor/Fast.pm
+usr/lib/perl5/5.32.1/Class/Accessor/Faster.pm
+usr/lib/perl5/5.32.1/Readonly.pm
+usr/lib/perl5/site_perl/5.32.1/Audio
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Collection.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common/Item
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common/Item.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common/Item/Directory.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common/Item/Playlist.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common/Item/Song.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common/Stats.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common/Status.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Common/Time.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Playlist.pm
+usr/lib/perl5/site_perl/5.32.1/Audio/MPD/Test.pm
 usr/local/bin/mpfirectrl
 var/ipfire/backup/addons/includes/mpfire
 var/ipfire/menu.d/EX-mpfire.menu
index 716d41638f8ac93231ab321176400f940153c17b..c116882a998a172a9374275af0460aeb19c6acd6 100644 (file)
@@ -262,51 +262,51 @@ usr/lib/libnetsnmpmibs.so.35.0.0
 #usr/lib/libnetsnmptrapd.so
 usr/lib/libnetsnmptrapd.so.35
 usr/lib/libnetsnmptrapd.so.35.0.0
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Bundle
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Bundle/MakefileSubs.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP/ASN.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP/OID.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP/TrapReceiver.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent/Support.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent/default_store.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent/netsnmp_request_infoPtr.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/NetSNMP/default_store.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/SNMP.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Bundle
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Bundle/NetSNMP
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Bundle/NetSNMP/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/ASN
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/ASN/ASN.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/ASN/ASN.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/ASN/autosplit.ix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/OID
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/OID/OID.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/OID/OID.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/OID/autosplit.ix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/TrapReceiver
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/TrapReceiver/TrapReceiver.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/TrapReceiver/TrapReceiver.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/TrapReceiver/autosplit.ix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/agent.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/agent.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/autosplit.ix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/default_store
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/default_store/autosplit.ix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/default_store/default_store.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/default_store/default_store.so
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/default_store
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/default_store/autosplit.ix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/default_store/default_store.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/default_store/default_store.so
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/SNMP
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/SNMP/SNMP.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/SNMP/SNMP.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/SNMP/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Bundle
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Bundle/MakefileSubs.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP/ASN.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP/OID.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP/TrapReceiver.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent/Support.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent/default_store.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP/agent/netsnmp_request_infoPtr.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/NetSNMP/default_store.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/SNMP.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Bundle
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Bundle/NetSNMP
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Bundle/NetSNMP/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/ASN
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/ASN/ASN.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/ASN/ASN.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/ASN/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/OID
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/OID/OID.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/OID/OID.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/OID/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/TrapReceiver
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/TrapReceiver/TrapReceiver.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/TrapReceiver/TrapReceiver.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/TrapReceiver/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/agent.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/agent.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/default_store
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/default_store/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/default_store/default_store.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/agent/default_store/default_store.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/default_store
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/default_store/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/default_store/default_store.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/NetSNMP/default_store/default_store.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/SNMP
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/SNMP/SNMP.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/SNMP/SNMP.so
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/SNMP/autosplit.ix
 usr/sbin/snmpd
 usr/sbin/snmptrapd
 #usr/share/man/man1/agentxtrap.1
diff --git a/config/rootfiles/packages/pakfire3 b/config/rootfiles/packages/pakfire3
deleted file mode 100644 (file)
index da902d5..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#etc/pakfire
-etc/pakfire/builder.conf
-etc/pakfire/client.conf
-etc/pakfire/daemon.conf
-etc/pakfire/distros
-etc/pakfire/distros/ipfire3.conf
-etc/pakfire/general.conf
-etc/pakfire/repos
-usr/bin/pakfire-builder
-usr/bin/pakfire-client
-usr/bin/pakfire-daemon
-usr/bin/pakfire-key
-usr/bin/pakfire-server
-usr/lib/libpakfire_preload.so
-usr/lib/pakfire
-usr/lib/pakfire/builder
-usr/lib/pakfire/chroot-shell
-usr/lib/pakfire/cleanup
-usr/lib/pakfire/compress-man-pages
-usr/lib/pakfire/extract-debuginfo
-usr/lib/pakfire/find-common
-usr/lib/pakfire/find-prerequires
-usr/lib/pakfire/find-provides
-usr/lib/pakfire/find-requires
-usr/lib/pakfire/functions-common
-usr/lib/pakfire/functions-constants
-usr/lib/pakfire/functions-directories
-usr/lib/pakfire/functions-files
-usr/lib/pakfire/functions-lists
-usr/lib/pakfire/functions-logging
-usr/lib/pakfire/macros
-usr/lib/pakfire/macros/arch.macro
-usr/lib/pakfire/macros/build.macro
-usr/lib/pakfire/macros/cflags.macro
-usr/lib/pakfire/macros/constants.macro
-usr/lib/pakfire/macros/package-default.macro
-usr/lib/pakfire/macros/perl.macro
-usr/lib/pakfire/macros/python.macro
-usr/lib/pakfire/macros/quality-agent.macro
-usr/lib/pakfire/macros/systemd.macro
-usr/lib/pakfire/macros/templates.macro
-usr/lib/pakfire/pakfire-multicall.py
-usr/lib/pakfire/patch
-usr/lib/pakfire/perl.prov
-usr/lib/pakfire/perl.req
-usr/lib/pakfire/py-compile
-usr/lib/pakfire/quality-agent
-usr/lib/pakfire/remove-static-libs
-usr/lib/python2.7/site-packages/pakfire
-usr/lib/python2.7/site-packages/pakfire/__init__.py
-usr/lib/python2.7/site-packages/pakfire/__version__.py
-usr/lib/python2.7/site-packages/pakfire/_lzma.so
-usr/lib/python2.7/site-packages/pakfire/_pakfire.so
-usr/lib/python2.7/site-packages/pakfire/actions.py
-usr/lib/python2.7/site-packages/pakfire/base.py
-usr/lib/python2.7/site-packages/pakfire/builder.py
-usr/lib/python2.7/site-packages/pakfire/cgroup.py
-usr/lib/python2.7/site-packages/pakfire/cli.py
-usr/lib/python2.7/site-packages/pakfire/client.py
-usr/lib/python2.7/site-packages/pakfire/compress.py
-usr/lib/python2.7/site-packages/pakfire/config.py
-usr/lib/python2.7/site-packages/pakfire/constants.py
-usr/lib/python2.7/site-packages/pakfire/daemon.py
-usr/lib/python2.7/site-packages/pakfire/distro.py
-usr/lib/python2.7/site-packages/pakfire/downloader.py
-usr/lib/python2.7/site-packages/pakfire/errors.py
-usr/lib/python2.7/site-packages/pakfire/filelist.py
-usr/lib/python2.7/site-packages/pakfire/i18n.py
-usr/lib/python2.7/site-packages/pakfire/keyring.py
-usr/lib/python2.7/site-packages/pakfire/logger.py
-usr/lib/python2.7/site-packages/pakfire/lzma.py
-usr/lib/python2.7/site-packages/pakfire/packages
-usr/lib/python2.7/site-packages/pakfire/packages/__init__.py
-usr/lib/python2.7/site-packages/pakfire/packages/base.py
-usr/lib/python2.7/site-packages/pakfire/packages/file.py
-usr/lib/python2.7/site-packages/pakfire/packages/installed.py
-usr/lib/python2.7/site-packages/pakfire/packages/lexer.py
-usr/lib/python2.7/site-packages/pakfire/packages/make.py
-usr/lib/python2.7/site-packages/pakfire/packages/packager.py
-usr/lib/python2.7/site-packages/pakfire/packages/solv.py
-usr/lib/python2.7/site-packages/pakfire/packages/tar.py
-usr/lib/python2.7/site-packages/pakfire/repository
-usr/lib/python2.7/site-packages/pakfire/repository/__init__.py
-usr/lib/python2.7/site-packages/pakfire/repository/base.py
-usr/lib/python2.7/site-packages/pakfire/repository/cache.py
-usr/lib/python2.7/site-packages/pakfire/repository/database.py
-usr/lib/python2.7/site-packages/pakfire/repository/index.py
-usr/lib/python2.7/site-packages/pakfire/repository/local.py
-usr/lib/python2.7/site-packages/pakfire/repository/metadata.py
-usr/lib/python2.7/site-packages/pakfire/repository/remote.py
-usr/lib/python2.7/site-packages/pakfire/repository/system.py
-usr/lib/python2.7/site-packages/pakfire/satsolver.py
-usr/lib/python2.7/site-packages/pakfire/server.py
-usr/lib/python2.7/site-packages/pakfire/shell.py
-usr/lib/python2.7/site-packages/pakfire/system.py
-usr/lib/python2.7/site-packages/pakfire/transaction.py
-usr/lib/python2.7/site-packages/pakfire/transport.py
-usr/lib/python2.7/site-packages/pakfire/util.py
-usr/lib/quality-agent
-usr/lib/quality-agent/001-include-files
-usr/lib/quality-agent/001-remove-info-files
-usr/lib/quality-agent/001-unsafe-files
-usr/lib/quality-agent/002-bad-symlinks
-usr/lib/quality-agent/003-libs-location
-usr/lib/quality-agent/050-canary
-usr/lib/quality-agent/050-execstacks
-usr/lib/quality-agent/050-invalid-interpreters
-usr/lib/quality-agent/050-libs-needed
-usr/lib/quality-agent/050-libs-soname
-usr/lib/quality-agent/050-libs-x86_64
-usr/lib/quality-agent/050-nx
-usr/lib/quality-agent/050-relro
-usr/lib/quality-agent/050-rpaths
-usr/lib/quality-agent/095-directory-layout
-usr/lib/quality-agent/qa-include
-var/ipfire/backup/addons/includes/pakfire3
index 213ed88238e3b4b13c421466d5ca3a1d124a298c..e6a8ab148d54256e0ff427d89460090af3d377e7 100644 (file)
@@ -1,22 +1,22 @@
-#usr/lib/perl5/site_perl/5.30.0/Authen
-#usr/lib/perl5/site_perl/5.30.0/Authen/SASL
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL.pm
-#usr/lib/perl5/site_perl/5.30.0/Authen/SASL.pod
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/CRAM_MD5.pm
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/EXTERNAL.pm
-#usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl.pm
-#usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl.pod
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl/ANONYMOUS.pm
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl/CRAM_MD5.pm
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl/DIGEST_MD5.pm
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl/EXTERNAL.pm
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl/GSSAPI.pm
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl/LOGIN.pm
-usr/lib/perl5/site_perl/5.30.0/Authen/SASL/Perl/PLAIN.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Authen
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Authen/SASL
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Authen/SASL/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Authen
+#usr/lib/perl5/site_perl/5.32.1/Authen/SASL
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL.pm
+#usr/lib/perl5/site_perl/5.32.1/Authen/SASL.pod
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/CRAM_MD5.pm
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/EXTERNAL.pm
+#usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl.pm
+#usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl.pod
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl/ANONYMOUS.pm
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl/CRAM_MD5.pm
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl/DIGEST_MD5.pm
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl/EXTERNAL.pm
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl/GSSAPI.pm
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl/LOGIN.pm
+usr/lib/perl5/site_perl/5.32.1/Authen/SASL/Perl/PLAIN.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Authen
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Authen/SASL
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Authen/SASL/.packlist
 #usr/share/man/man3/Authen::SASL.3
 #usr/share/man/man3/Authen::SASL::Perl.3
 #usr/share/man/man3/Authen::SASL::Perl::ANONYMOUS.3
index 502bdf62eec8b8d6595b5cd5e9b8c1f3056e5961..4817c357c16780db8dfa2a3c655a31e01ceede0d 100644 (file)
@@ -1,7 +1,6 @@
-#usr/lib/perl5/site_perl/5.30.0/Carp
-usr/lib/perl5/site_perl/5.30.0/Carp/Clan.pm
-usr/lib/perl5/site_perl/5.30.0/Carp/Clan.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Carp
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Carp/Clan
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Carp/Clan/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Carp
+usr/lib/perl5/site_perl/5.32.1/Carp/Clan.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Carp
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Carp/Clan
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Carp/Clan/.packlist
 #usr/share/man/man3/Carp::Clan.3
index 363ec7326c8e967212e29bddf1c3423951a8b586..0365b6675fded11933b5896c31ec999cc4dfec33 100644 (file)
@@ -1,21 +1,21 @@
-#usr/lib/perl5/site_perl/5.30.0/Date
-#usr/lib/perl5/site_perl/5.30.0/Date/Calc
-usr/lib/perl5/site_perl/5.30.0/Date/Calc.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Calc.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Calc/Object.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Calc/Object.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Calc/PP.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Calc/PP.pod
-#usr/lib/perl5/site_perl/5.30.0/Date/Calendar
-usr/lib/perl5/site_perl/5.30.0/Date/Calendar.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Calendar.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Calendar/Profiles.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Calendar/Profiles.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Calendar/Year.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Calendar/Year.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Date
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Date/Calc
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Date/Calc/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Date
+#usr/lib/perl5/site_perl/5.32.1/Date/Calc
+usr/lib/perl5/site_perl/5.32.1/Date/Calc.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Calc.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Calc/Object.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Calc/Object.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Calc/PP.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Calc/PP.pod
+#usr/lib/perl5/site_perl/5.32.1/Date/Calendar
+usr/lib/perl5/site_perl/5.32.1/Date/Calendar.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Calendar.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Calendar/Profiles.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Calendar/Profiles.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Calendar/Year.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Calendar/Year.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Date
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Date/Calc
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Date/Calc/.packlist
 #usr/share/man/man3/Date::Calc.3
 #usr/share/man/man3/Date::Calc::Object.3
 #usr/share/man/man3/Date::Calc::PP.3
index aa9970106a0897d4b054db3b90cc2afa5fc560e7..8a740f8eaf4bf95aadfa1849d60c48e2c1a9450f 100644 (file)
 usr/bin/dm_date
 usr/bin/dm_zdump
-#usr/lib/perl5/site_perl/5.30.0/Date/Manip
-usr/lib/perl5/site_perl/5.30.0/Date/Manip.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Base.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Base.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Calc.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Changes5.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Changes5to6.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Changes6.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Config.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/ConfigFile.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/DM5.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/DM5.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/DM5abbrevs.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/DM6.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/DM6.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Date.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Date.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Delta.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Delta.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Examples.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Holidays.pod
-#usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/catalan.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/catalan.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/danish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/danish.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/dutch.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/dutch.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/english.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/english.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/finnish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/finnish.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/french.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/french.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/german.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/german.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/index.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/italian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/italian.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/norwegian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/norwegian.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/polish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/polish.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/portugue.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/portugue.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/romanian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/romanian.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/russian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/russian.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/spanish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/spanish.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/swedish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/swedish.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/turkish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Lang/turkish.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Migration5to6.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Misc.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Obj.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Obj.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Objects.pod
-#usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off000.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off001.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off002.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off003.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off004.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off005.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off006.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off007.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off008.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off009.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off010.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off011.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off012.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off013.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off014.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off015.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off016.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off017.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off018.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off019.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off020.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off021.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off022.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off023.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off024.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off025.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off026.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off027.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off028.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off029.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off030.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off031.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off032.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off033.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off034.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off035.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off036.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off037.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off038.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off039.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off040.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off041.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off042.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off043.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off044.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off045.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off046.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off047.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off048.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off049.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off050.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off051.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off052.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off053.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off054.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off055.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off056.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off057.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off058.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off059.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off060.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off061.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off062.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off063.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off064.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off065.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off066.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off067.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off068.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off069.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off070.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off071.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off072.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off073.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off074.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off075.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off076.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off077.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off078.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off079.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off080.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off081.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off082.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off083.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off084.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off085.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off086.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off087.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off088.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off089.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off090.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off091.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off092.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off093.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off094.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off095.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off096.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off097.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off098.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off099.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off100.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off101.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off102.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off103.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off104.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off105.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off106.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off107.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off108.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off109.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off110.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off111.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off112.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off113.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off114.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off115.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off116.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off117.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off118.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off119.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off120.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off121.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off122.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off123.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off124.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off125.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off126.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off127.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off128.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off129.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off130.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off131.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off132.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off133.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off134.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off135.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off136.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off137.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off138.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off139.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off140.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off141.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off142.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off143.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off144.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off145.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off146.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off147.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off148.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off149.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off150.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off151.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off152.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off153.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off154.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off155.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off156.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off157.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off158.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off159.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off160.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off161.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off162.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off163.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off164.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off165.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off166.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off167.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off168.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off169.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off170.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off171.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off172.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off173.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off174.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off175.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off176.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off177.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off178.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off179.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off180.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off181.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off182.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off183.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off184.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off185.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off186.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off187.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off188.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off189.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off190.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off191.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off192.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off193.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off194.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off195.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off196.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off197.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off198.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off199.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off200.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off201.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off202.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off203.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off204.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off205.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off206.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off207.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off208.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off209.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off210.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off211.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off212.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off213.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off214.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off215.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off216.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off217.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off218.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off219.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off220.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off221.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off222.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off223.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off224.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off225.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off226.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off227.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off228.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off229.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off230.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off231.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off232.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off233.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off234.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off235.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off236.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off237.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off238.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off239.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off240.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off241.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off242.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off243.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off244.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off245.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off246.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off247.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off248.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off249.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off250.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off251.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off252.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off253.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off254.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off255.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off256.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off257.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off258.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off259.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off260.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off261.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off262.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off263.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off264.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off265.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off266.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off267.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off268.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off269.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off270.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off271.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off272.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off273.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off274.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off275.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off276.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off277.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off278.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off279.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off280.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off281.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off282.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off283.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off284.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off285.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off286.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off287.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off288.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off289.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off290.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off291.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off292.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off293.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off294.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off295.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off296.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off297.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off298.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off299.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off300.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off301.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off302.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off303.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off304.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off305.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off306.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off307.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off308.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off309.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off310.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off311.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off312.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off313.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off314.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off315.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off316.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off317.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off318.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off319.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off320.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off321.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off322.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off323.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off324.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off325.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off326.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off327.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off328.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off329.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off330.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off331.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off332.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off333.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off334.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off335.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off336.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off337.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off338.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off339.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off340.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off341.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off342.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off343.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off344.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off345.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off346.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off347.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off348.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off349.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off350.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off351.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off352.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off353.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off354.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off355.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off356.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off357.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off358.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off359.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off360.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off361.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off362.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off363.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off364.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off365.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off366.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off367.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off368.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off369.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off370.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off371.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off372.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off373.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off374.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off375.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off376.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off377.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off378.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off379.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off380.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off381.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off382.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off383.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off384.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off385.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off386.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off387.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off388.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off389.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off390.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off391.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off392.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off393.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off394.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off395.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off396.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off397.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off398.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off399.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off400.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off401.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off402.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off403.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off404.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off405.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off406.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off407.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off408.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off409.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off410.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off411.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off412.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off413.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off414.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off415.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off416.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off417.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off418.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off419.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off420.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off421.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off422.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off423.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off424.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off425.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off426.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off427.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off428.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off429.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off430.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off431.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off432.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off433.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off434.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off435.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off436.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off437.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off438.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off439.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off440.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off441.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off442.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off443.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off444.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off445.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off446.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off447.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off448.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off449.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off450.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off451.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off452.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off453.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off454.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off455.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off456.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off457.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off458.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off459.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off460.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off461.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off462.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off463.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off464.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off465.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off466.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off467.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off468.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off469.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off470.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off471.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off472.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off473.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off474.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off475.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off476.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off477.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off478.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off479.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off480.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off481.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off482.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off483.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off484.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off485.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off486.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off487.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off488.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Offset/off489.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Problems.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Recur.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Recur.pod
-#usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/a00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afabid00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afaccr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afaddi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afalgi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afasma00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afbama00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afbang00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afbanj00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afbiss00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afblan00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afbraz00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afbuju00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afcair00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afcasa00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afceut00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afcona00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afdaka00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afdar_00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afdjib00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afdoua00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afel_a00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/affree00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afgabo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afhara00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afjoha00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afjuba00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afkamp00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afkhar00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afkiga00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afkins00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aflago00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aflibr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aflome00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afluan00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aflubu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aflusa00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afmala00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afmapu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afmase00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afmbab00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afmoga00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afmonr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afnair00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afndja00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afniam00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afnoua00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afouag00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afport00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afsao_00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aftrip00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aftuni00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/afwind00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amadak00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amanch00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amangu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amanti00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amarag00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amarub00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amasun00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amatik00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ambahi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ambahi01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ambarb00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ambele00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ambeli00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ambeul00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amblan00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amboa_00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ambogo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ambois00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ambuen00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcamb00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcamp00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcanc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcara00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcata00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcaye00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcaym00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcent00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amchic00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amchih00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcord00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcost00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcres00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcuia00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amcura00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amdanm00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amdaws00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amdaws01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amdenv00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amdetr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amdomi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amedmo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ameiru00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amel_s00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amfort00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amglac00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amgodt00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amgoos00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amgran00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amgren00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amguad00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amguat00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amguay00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amguya00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amhali00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amhava00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amherm00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amindi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aminuv00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amiqal00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amjama00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amjuju00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amjune00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amknox00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amla_p00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amla_r00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amlima00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amlos_00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amloui00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammace00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammana00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammana01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammare00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammart00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammata00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammaza00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammend00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammeno00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammeri00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammetl00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammexi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammiqu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammonc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammont00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammont01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammont02.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammont03.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ammont04.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amnass00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amnew_00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amnew_01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amnipi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amnome00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amnoro00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amojin00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ampana00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ampang00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ampara00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ampete00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amphoe00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amport00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amport01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amport02.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ampuer00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amrain00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amrank00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amreci00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amregi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amreso00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amrio_00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amrio_01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amsalt00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amsan_00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amsan_01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amsant00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amsant01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amsant02.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amsant03.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amsao_00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amscor00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amsitk00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amst_j00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amst_k00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amst_l00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amst_t00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amst_v00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amswif00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amtegu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amtell00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amthul00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amthun00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amtiju00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amtoro00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amtort00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amtucu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amushu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amvanc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amveva00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amvinc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amwhit00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amwina00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amwinn00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amyaku00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/amyell00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ancase00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/andavi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/andumo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/anmacq00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/anmaws00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/anmcmu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/anpalm00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/anroth00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ansyow00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/anvost00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asaden00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asalma00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asamma00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asanad00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asaqta00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asaqto00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asashg00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asbagh00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asbahr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asbaku00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asbang00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asbeir00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asbish00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asbrun00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aschoi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aschon00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ascolo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asdama00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asdhak00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asdili00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asduba00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asdush00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asgaza00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asharb00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ashebr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asho_c00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ashong00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ashovd00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asirku00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asjaka00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asjaya00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asjeru00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askabu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askamc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askara00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askash00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askath00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askhan00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askolk00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askras00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askual00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askuch00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/askuwa00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asmaca00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asmaga00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asmaka00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asmani00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asmusc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asnico00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asnovo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asnovo01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asomsk00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asoral00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asphno00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aspont00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aspyon00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asqata00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asqyzy00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asrang00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asriya00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/assakh00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/assama00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asseou00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asshan00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/assing00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/astaip00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/astash00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/astbil00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/astehr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asthim00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/astoky00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asulaa00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asurum00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asustm00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asvien00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asvlad00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asyaku00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asyeka00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/asyere00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atazor00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atberm00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atcana00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atcape00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atfaro00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atmade00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atreyk00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atsout00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atst_h00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/atstan00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/auadel00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aubris00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aubrok00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aucurr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/audarw00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aueucl00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/auhoba00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aulind00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aulord00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aumelb00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/aupert00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ausydn00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/b00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/c00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/cet00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/d00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/e00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eet00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmt00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm02.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm03.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm04.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm05.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm06.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm07.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm08.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm09.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm10.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm11.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm12.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtm13.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp01.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp02.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp03.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp04.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp05.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp06.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp07.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp08.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp09.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp10.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/etgmtp11.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euamst00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euando00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euathe00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eubelg00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euberl00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eubrus00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eubuch00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eubuda00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euchis00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eucope00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eudubl00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eugibr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euhels00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euista00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eukali00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eukiev00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eulisb00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eulond00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euluxe00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eumadr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eumalt00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eumins00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eumona00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eumosc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euoslo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eupari00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euprag00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euriga00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eurome00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eusama00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eusimf00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eusofi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eustoc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eutall00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/eutira00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euuzhg00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euvadu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euvien00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euviln00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euvolg00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euwars00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euzapo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/euzuri00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/f00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/g00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/h00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/i00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/inanta00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/inchag00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/inchri00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/incoco00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/incomo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/inkerg00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/inmahe00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/inmald00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/inmaur00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/inmayo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/inreun00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/k00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/l00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/m00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/met00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/n00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/o00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/p00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/paapia00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/paauck00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pachat00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pachuu00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/paeast00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/paefat00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/paende00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pafaka00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pafiji00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pafuna00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pagala00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pagamb00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/paguad00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/paguam00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pahono00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pakiri00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pakosr00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pakwaj00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pamaju00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pamarq00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pamidw00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/panaur00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/paniue00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/panorf00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/panoum00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/papago00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/papala00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/papitc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/papohn00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/paport00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pararo00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pasaip00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/patahi00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/patara00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/patong00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pawake00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/pawall00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/q00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/r00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/s00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/t00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/u00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/ut00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/utc00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/v00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/w00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/wet00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/x00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/y00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ/z00.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ_Base.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZ_Base.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZdata.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/TZdata.pod
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Zones.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Manip/Zones.pod
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Date/Manip
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Date/Manip/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Date/Manip
+usr/lib/perl5/site_perl/5.32.1/Date/Manip.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Base.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Base.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Calc.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Changes5.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Changes5to6.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Changes6.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Config.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/ConfigFile.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/DM5.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/DM5.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/DM5abbrevs.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/DM6.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/DM6.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Date.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Date.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Delta.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Delta.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Examples.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/History.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Holidays.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Interfaces.pod
+#usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/catalan.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/catalan.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/danish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/danish.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/dutch.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/dutch.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/english.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/english.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/finnish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/finnish.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/french.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/french.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/german.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/german.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/index.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/italian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/italian.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/norwegian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/norwegian.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/polish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/polish.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/portugue.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/portugue.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/romanian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/romanian.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/russian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/russian.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/spanish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/spanish.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/swedish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/swedish.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/turkish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Lang/turkish.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Migration5to6.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Misc.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Obj.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Obj.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Objects.pod
+#usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off000.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off001.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off002.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off003.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off004.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off005.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off006.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off007.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off008.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off009.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off010.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off011.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off012.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off013.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off014.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off015.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off016.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off017.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off018.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off019.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off020.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off021.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off022.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off023.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off024.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off025.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off026.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off027.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off028.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off029.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off030.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off031.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off032.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off033.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off034.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off035.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off036.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off037.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off038.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off039.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off040.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off041.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off042.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off043.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off044.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off045.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off046.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off047.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off048.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off049.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off050.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off051.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off052.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off053.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off054.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off055.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off056.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off057.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off058.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off059.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off060.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off061.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off062.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off063.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off064.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off065.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off066.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off067.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off068.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off069.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off070.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off071.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off072.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off073.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off074.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off075.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off076.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off077.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off078.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off079.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off080.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off081.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off082.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off083.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off084.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off085.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off086.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off087.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off088.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off089.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off090.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off091.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off092.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off093.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off094.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off095.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off096.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off097.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off098.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off099.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off100.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off101.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off102.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off103.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off104.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off105.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off106.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off107.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off108.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off109.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off110.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off111.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off112.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off113.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off114.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off115.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off116.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off117.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off118.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off119.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off120.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off121.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off122.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off123.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off124.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off125.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off126.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off127.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off128.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off129.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off130.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off131.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off132.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off133.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off134.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off135.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off136.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off137.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off138.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off139.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off140.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off141.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off142.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off143.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off144.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off145.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off146.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off147.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off148.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off149.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off150.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off151.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off152.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off153.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off154.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off155.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off156.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off157.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off158.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off159.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off160.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off161.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off162.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off163.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off164.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off165.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off166.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off167.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off168.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off169.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off170.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off171.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off172.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off173.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off174.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off175.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off176.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off177.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off178.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off179.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off180.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off181.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off182.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off183.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off184.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off185.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off186.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off187.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off188.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off189.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off190.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off191.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off192.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off193.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off194.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off195.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off196.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off197.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off198.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off199.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off200.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off201.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off202.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off203.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off204.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off205.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off206.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off207.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off208.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off209.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off210.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off211.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off212.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off213.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off214.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off215.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off216.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off217.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off218.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off219.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off220.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off221.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off222.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off223.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off224.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off225.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off226.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off227.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off228.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off229.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off230.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off231.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off232.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off233.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off234.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off235.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off236.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off237.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off238.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off239.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off240.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off241.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off242.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off243.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off244.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off245.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off246.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off247.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off248.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off249.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off250.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off251.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off252.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off253.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off254.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off255.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off256.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off257.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off258.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off259.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off260.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off261.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off262.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off263.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off264.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off265.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off266.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off267.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off268.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off269.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off270.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off271.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off272.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off273.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off274.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off275.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off276.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off277.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off278.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off279.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off280.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off281.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off282.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off283.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off284.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off285.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off286.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off287.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off288.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off289.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off290.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off291.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off292.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off293.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off294.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off295.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off296.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off297.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off298.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off299.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off300.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off301.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off302.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off303.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off304.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off305.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off306.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off307.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off308.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off309.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off310.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off311.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off312.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off313.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off314.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off315.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off316.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off317.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off318.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off319.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off320.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off321.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off322.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off323.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off324.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off325.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off326.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off327.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off328.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off329.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off330.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off331.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off332.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off333.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off334.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off335.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off336.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off337.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off338.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off339.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off340.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off341.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off342.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off343.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off344.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off345.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off346.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off347.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off348.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off349.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off350.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off351.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off352.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off353.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off354.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off355.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off356.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off357.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off358.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off359.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off360.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off361.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off362.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off363.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off364.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off365.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off366.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off367.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off368.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off369.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off370.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off371.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off372.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off373.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off374.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off375.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off376.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off377.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off378.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off379.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off380.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off381.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off382.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off383.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off384.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off385.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off386.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off387.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off388.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off389.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off390.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off391.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off392.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off393.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off394.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off395.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off396.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off397.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off398.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off399.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off400.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off401.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off402.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off403.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off404.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off405.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off406.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off407.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off408.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off409.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off410.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off411.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off412.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off413.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off414.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off415.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off416.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off417.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off418.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off419.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off420.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off421.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off422.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off423.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off424.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off425.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off426.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off427.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off428.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off429.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off430.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off431.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off432.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off433.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off434.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off435.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off436.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off437.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off438.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off439.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off440.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off441.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off442.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off443.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off444.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Offset/off445.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Problems.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Recur.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Recur.pod
+#usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/a00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afabid00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afaccr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afalgi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afbiss00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afcair00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afcasa00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afceut00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afel_a00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afjoha00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afjuba00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afkhar00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aflago00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afmapu00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afmonr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afnair00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afndja00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afsao_00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aftrip00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aftuni00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/afwind00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amadak00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amanch00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amarag00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amasun00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amatik00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ambahi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ambahi01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ambarb00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ambele00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ambeli00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ambeul00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amblan00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amboa_00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ambogo00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ambois00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ambuen00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcamb00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcamp00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcanc00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcara00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcata00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcaye00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcent00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amchic00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amchih00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcord00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcost00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcres00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcuia00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amcura00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amdanm00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amdaws00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amdaws01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amdenv00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amdetr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amedmo00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ameiru00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amel_s00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amfort00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amfort01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amglac00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amgoos00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amgran00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amguat00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amguay00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amguya00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amhali00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amhava00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amherm00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amindi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aminuv00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amiqal00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amjama00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amjuju00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amjune00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amknox00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amla_p00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amla_r00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amlima00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amlos_00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amloui00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammace00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammana00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammana01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammare00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammart00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammata00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammaza00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammend00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammeno00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammeri00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammetl00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammexi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammiqu00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammonc00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammont00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammont01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ammont02.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amnass00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amnew_00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amnew_01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amnipi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amnome00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amnoro00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amnuuk00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amojin00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ampana00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ampang00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ampara00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ampete00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amphoe00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amport00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amport01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amport02.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ampuer00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ampunt00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amrain00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amrank00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amreci00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amregi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amreso00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amrio_00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amrio_01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amsalt00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amsan_00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amsan_01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amsant00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amsant01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amsant02.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amsao_00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amscor00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amsitk00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amst_j00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amswif00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amtegu00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amtell00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amthul00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amthun00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amtiju00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amtoro00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amtucu00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amushu00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amvanc00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amveva00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amvinc00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amwhit00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amwina00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amwinn00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amyaku00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/amyell00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ancase00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/andavi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/andumo00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/anmacq00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/anmaws00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/anpalm00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/anroth00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ansyow00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/antrol00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/anvost00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asalma00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asamma00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asanad00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asaqta00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asaqto00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asashg00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asatyr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asbagh00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asbaku00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asbang00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asbarn00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asbeir00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asbish00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asbrun00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aschit00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aschoi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ascolo00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asdama00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asdhak00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asdili00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asduba00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asdush00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asfama00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asgaza00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ashebr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asho_c00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ashong00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ashovd00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asirku00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asjaka00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asjaya00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asjeru00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/askabu00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/askamc00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/askara00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/askath00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/askhan00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/askolk00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/askras00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/askual00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/askuch00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asmaca00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asmaga00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asmaka00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asmani00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asnico00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asnovo00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asnovo01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asomsk00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asoral00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aspont00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aspyon00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asqata00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asqost00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asqyzy00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asriya00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/assakh00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/assama00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asseou00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asshan00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/assing00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/assred00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/astaip00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/astash00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/astbil00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/astehr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asthim00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/astoky00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/astoms00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asulaa00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asurum00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asustm00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asvlad00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asyaku00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asyang00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asyeka00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/asyere00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/atazor00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/atberm00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/atcana00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/atcape00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/atfaro00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/atmade00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/atreyk00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/atsout00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/atstan00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/auadel00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aubris00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aubrok00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/audarw00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aueucl00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/auhoba00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aulind00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aulord00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aumelb00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/aupert00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ausydn00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/b00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/c00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/cet00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/d00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/e00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eet00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmt00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm02.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm03.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm04.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm05.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm06.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm07.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm08.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm09.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm10.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm11.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm12.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtm13.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp01.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp02.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp03.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp04.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp05.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp06.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp07.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp08.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp09.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp10.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/etgmtp11.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euamst00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euando00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euastr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euathe00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eubelg00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euberl00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eubrus00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eubuch00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eubuda00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euchis00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eucope00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eudubl00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eugibr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euhels00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euista00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eukali00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eukiev00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eukiro00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eulisb00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eulond00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euluxe00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eumadr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eumalt00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eumins00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eumona00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eumosc00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euoslo00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eupari00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euprag00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euriga00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eurome00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eusama00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eusara00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eusimf00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eusofi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eustoc00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eutall00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/eutira00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euulya00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euuzhg00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euvien00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euviln00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euvolg00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euwars00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euzapo00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/euzuri00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/f00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/g00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/h00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/i00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/inchag00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/inchri00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/incoco00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/inkerg00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/inmahe00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/inmald00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/inmaur00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/inreun00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/k00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/l00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/m00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/met00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/n00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/o00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/p00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paapia00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paauck00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paboug00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pachat00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pachuu00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paeast00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paefat00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paende00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pafaka00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pafiji00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pafuna00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pagala00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pagamb00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paguad00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paguam00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pahono00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pakiri00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pakosr00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pakwaj00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pamaju00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pamarq00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/panaur00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paniue00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/panorf00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/panoum00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/papago00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/papala00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/papitc00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/papohn00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/paport00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pararo00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/patahi00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/patara00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/patong00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pawake00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/pawall00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/q00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/r00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/s00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/t00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/u00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/ut00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/utc00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/v00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/w00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/wet00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/x00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/y00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ/z00.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ_Base.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZ_Base.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZdata.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/TZdata.pod
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Zones.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Manip/Zones.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Date/Manip
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Date/Manip/.packlist
 #usr/share/man/man1/dm_date.1
 #usr/share/man/man1/dm_zdump.1
 #usr/share/man/man3/Date::Manip.3
@@ -1038,7 +946,9 @@ usr/lib/perl5/site_perl/5.30.0/Date/Manip/Zones.pod
 #usr/share/man/man3/Date::Manip::Date.3
 #usr/share/man/man3/Date::Manip::Delta.3
 #usr/share/man/man3/Date::Manip::Examples.3
+#usr/share/man/man3/Date::Manip::History.3
 #usr/share/man/man3/Date::Manip::Holidays.3
+#usr/share/man/man3/Date::Manip::Interfaces.3
 #usr/share/man/man3/Date::Manip::Lang.3
 #usr/share/man/man3/Date::Manip::Lang::catalan.3
 #usr/share/man/man3/Date::Manip::Lang::danish.3
index 04063677308909158888977ba2e27699360a7339..eed7b03038fdc846107a45cf64d86c73c3abccb7 100644 (file)
@@ -1,5 +1,5 @@
-usr/lib/perl5/site_perl/5.30.0/File/ReadBackwards.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File/ReadBackwards
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File/ReadBackwards/.packlist
+usr/lib/perl5/site_perl/5.32.1/File/ReadBackwards.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File/ReadBackwards
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File/ReadBackwards/.packlist
 #usr/share/man/man3/File::ReadBackwards.3
index 8c7d343aeffdf534ab612818ce882fd49c3f5b29..40ebbe33b202409370d8b1cbf117ef79e57003e6 100644 (file)
@@ -1,6 +1,6 @@
-#usr/lib/perl5/site_perl/5.30.0/File
-usr/lib/perl5/site_perl/5.30.0/File/Tail.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File/Tail
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/File/Tail/.packlist
+#usr/lib/perl5/site_perl/5.32.1/File
+usr/lib/perl5/site_perl/5.32.1/File/Tail.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File/Tail
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/File/Tail/.packlist
 #usr/share/man/man3/File::Tail.3
index 19c23cbc94314b798eefa10ae21e92374819db29..73117e31c248da28c6c9d85da1ebf0da465c4dca 100644 (file)
@@ -1,7 +1,7 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/MIME
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/MIME/Base64.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/MIME/QuotedPrint.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64/Base64.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64/Base64.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/MIME
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/MIME/Base64.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/MIME/QuotedPrint.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64/Base64.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/MIME/Base64/Base64.so
index 393e44b64bb7d842180b19b3a026bcda405798f3..f8b2cb149946fba7165619f1aee479e12775ad6c 100644 (file)
@@ -1,6 +1,6 @@
 #usr/bin/ipcount
 #usr/bin/iptab
-usr/lib/perl5/site_perl/5.30.0/Net/IP.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/IP
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/IP/.packlist
+usr/lib/perl5/site_perl/5.32.1/Net/IP.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/IP
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/IP/.packlist
 #usr/share/man/man3/Net::IP.3
diff --git a/config/rootfiles/packages/perl-Net-LibIDN b/config/rootfiles/packages/perl-Net-LibIDN
deleted file mode 100644 (file)
index 0bf67ef..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Net/LibIDN.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/LibIDN
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/LibIDN/.packlist
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/LibIDN/LibIDN.so
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/LibIDN/autosplit.ix
-#usr/share/man/man3/Net::LibIDN.3
index 1ac5584f764bedbfdff60d6f5111ae38d1f6606a..16e0977cff58fe06850959a422e2b1489c7544e3 100644 (file)
@@ -1,6 +1,6 @@
-#usr/lib/perl5/site_perl/5.30.0/Net/SMTP
-usr/lib/perl5/site_perl/5.30.0/Net/SMTP/SSL.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SMTP
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SMTP/SSL
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Net/SMTP/SSL/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Net/SMTP
+usr/lib/perl5/site_perl/5.32.1/Net/SMTP/SSL.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SMTP
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SMTP/SSL
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Net/SMTP/SSL/.packlist
 #usr/share/man/man3/Net::SMTP::SSL.3
index 853f5a33fcd87f753e97f72e2fe286939a3b3eec..f31d35c9c7ef9a654aac3c46a846b9cf91428dae 100644 (file)
@@ -1,15 +1,15 @@
 usr/bin/yapp
-#usr/lib/perl5/site_perl/5.30.0/Parse
-#usr/lib/perl5/site_perl/5.30.0/Parse/Yapp
-usr/lib/perl5/site_perl/5.30.0/Parse/Yapp.pm
-usr/lib/perl5/site_perl/5.30.0/Parse/Yapp/Driver.pm
-usr/lib/perl5/site_perl/5.30.0/Parse/Yapp/Grammar.pm
-usr/lib/perl5/site_perl/5.30.0/Parse/Yapp/Lalr.pm
-usr/lib/perl5/site_perl/5.30.0/Parse/Yapp/Options.pm
-usr/lib/perl5/site_perl/5.30.0/Parse/Yapp/Output.pm
-usr/lib/perl5/site_perl/5.30.0/Parse/Yapp/Parse.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Parse
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Parse/Yapp
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Parse/Yapp/.packlist
+#usr/lib/perl5/site_perl/5.32.1/Parse
+#usr/lib/perl5/site_perl/5.32.1/Parse/Yapp
+usr/lib/perl5/site_perl/5.32.1/Parse/Yapp.pm
+usr/lib/perl5/site_perl/5.32.1/Parse/Yapp/Driver.pm
+usr/lib/perl5/site_perl/5.32.1/Parse/Yapp/Grammar.pm
+usr/lib/perl5/site_perl/5.32.1/Parse/Yapp/Lalr.pm
+usr/lib/perl5/site_perl/5.32.1/Parse/Yapp/Options.pm
+usr/lib/perl5/site_perl/5.32.1/Parse/Yapp/Output.pm
+usr/lib/perl5/site_perl/5.32.1/Parse/Yapp/Parse.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Parse
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Parse/Yapp
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Parse/Yapp/.packlist
 #usr/share/man/man1/yapp.1
 #usr/share/man/man3/Parse::Yapp.3
index 9e14f074f665142dc71e796ae76cf1133c317f6d..a5f5da95c5ee5d09b21dbb05b38f62bcb615e025 100644 (file)
@@ -1,43 +1,43 @@
-usr/lib/perl5/site_perl/5.30.0/Date/Format.pm
-#usr/lib/perl5/site_perl/5.30.0/Date/Language
-usr/lib/perl5/site_perl/5.30.0/Date/Language.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Afar.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Amharic.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Austrian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Brazilian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Chinese.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Chinese_GB.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Czech.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Danish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Dutch.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/English.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Finnish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/French.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Gedeo.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/German.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Greek.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Hungarian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Icelandic.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Italian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Norwegian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Oromo.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Romanian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Russian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Russian_cp1251.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Russian_koi8r.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Sidama.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Somali.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Spanish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Swedish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Tigrinya.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/TigrinyaEritrean.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/TigrinyaEthiopian.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Language/Turkish.pm
-usr/lib/perl5/site_perl/5.30.0/Date/Parse.pm
-#usr/lib/perl5/site_perl/5.30.0/Time
-usr/lib/perl5/site_perl/5.30.0/Time/Zone.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/TimeDate
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/TimeDate/.packlist
+usr/lib/perl5/site_perl/5.32.1/Date/Format.pm
+#usr/lib/perl5/site_perl/5.32.1/Date/Language
+usr/lib/perl5/site_perl/5.32.1/Date/Language.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Afar.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Amharic.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Austrian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Brazilian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Chinese.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Chinese_GB.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Czech.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Danish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Dutch.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/English.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Finnish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/French.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Gedeo.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/German.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Greek.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Hungarian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Icelandic.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Italian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Norwegian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Oromo.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Romanian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Russian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Russian_cp1251.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Russian_koi8r.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Sidama.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Somali.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Spanish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Swedish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Tigrinya.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/TigrinyaEritrean.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/TigrinyaEthiopian.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Language/Turkish.pm
+usr/lib/perl5/site_perl/5.32.1/Date/Parse.pm
+#usr/lib/perl5/site_perl/5.32.1/Time
+usr/lib/perl5/site_perl/5.32.1/Time/Zone.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/TimeDate
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/TimeDate/.packlist
 #usr/share/man/man3/Date::Format.3
 #usr/share/man/man3/Date::Language.3
 #usr/share/man/man3/Date::Language::Hungarian.3
index 48a5af454ff9bde687a84806d155f4391dd24484..910f9ed769d11ed38552389da1b7fecad6bb9686 100644 (file)
@@ -1,7 +1,7 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/common
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/common/sense
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/common/sense/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/common
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/common/sense.pm
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/common/sense.pod
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/common
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/common/sense
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/common/sense/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/common
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/common/sense.pm
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/common/sense.pod
 #usr/share/man/man3/common::sense.3
index bca1f467669f183132758b189748d3a1b943b6b2..64f2e4e3aec1666d23b43981fea674a09272d022 100644 (file)
@@ -1,8 +1,8 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Locale
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Locale/gettext.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Locale
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Locale/gettext
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Locale/gettext/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Locale/gettext/gettext.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Locale/gettext/gettext.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Locale
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Locale/gettext.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Locale
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Locale/gettext
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Locale/gettext/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Locale/gettext/gettext.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Locale/gettext/gettext.so
 #usr/share/man/man3/Locale::gettext.3
index eeac9f993661d3fe683bd8ba20bf1ed33fa3d086..3f5c668a7c33c0fed2e2ac9b23c3bbe47f37a1fd 100644 (file)
@@ -1,8 +1,8 @@
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Linux
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/Linux/Inotify2.pm
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Linux
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Linux/Inotify2
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Linux/Inotify2/.packlist
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Linux/Inotify2/Inotify2.bs
-usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/Linux/Inotify2/Inotify2.so
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Linux
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/Linux/Inotify2.pm
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Linux
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Linux/Inotify2
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Linux/Inotify2/.packlist
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Linux/Inotify2/Inotify2.bs
+usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/Linux/Inotify2/Inotify2.so
 #usr/share/man/man3/Linux::Inotify2.3
diff --git a/config/rootfiles/packages/pycurl b/config/rootfiles/packages/pycurl
deleted file mode 100644 (file)
index ddbe585..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-usr/lib/python2.7/site-packages/curl
-usr/lib/python2.7/site-packages/curl/__init__.py
-usr/lib/python2.7/site-packages/curl/__init__.pyc
-#usr/lib/python2.7/site-packages/pycurl-7.19.0-py2.7.egg-info
-usr/lib/python2.7/site-packages/pycurl.so
-#usr/share/doc/pycurl
-#usr/share/doc/pycurl/COPYING
-#usr/share/doc/pycurl/COPYING2
-#usr/share/doc/pycurl/ChangeLog
-#usr/share/doc/pycurl/INSTALL
-#usr/share/doc/pycurl/README
-#usr/share/doc/pycurl/TODO
-#usr/share/doc/pycurl/examples
-#usr/share/doc/pycurl/examples/basicfirst.py
-#usr/share/doc/pycurl/examples/file_upload.py
-#usr/share/doc/pycurl/examples/linksys.py
-#usr/share/doc/pycurl/examples/retriever-multi.py
-#usr/share/doc/pycurl/examples/retriever.py
-#usr/share/doc/pycurl/examples/sfquery.py
-#usr/share/doc/pycurl/examples/xmlrpc_curl.py
-#usr/share/doc/pycurl/html
-#usr/share/doc/pycurl/html/callbacks.html
-#usr/share/doc/pycurl/html/curlmultiobject.html
-#usr/share/doc/pycurl/html/curlobject.html
-#usr/share/doc/pycurl/html/curlshareobject.html
-#usr/share/doc/pycurl/html/pycurl.html
-#usr/share/doc/pycurl/tests
-#usr/share/doc/pycurl/tests/test.py
-#usr/share/doc/pycurl/tests/test_cb.py
-#usr/share/doc/pycurl/tests/test_debug.py
-#usr/share/doc/pycurl/tests/test_ftp.py
-#usr/share/doc/pycurl/tests/test_getinfo.py
-#usr/share/doc/pycurl/tests/test_gtk.py
-#usr/share/doc/pycurl/tests/test_internals.py
-#usr/share/doc/pycurl/tests/test_memleak.py
-#usr/share/doc/pycurl/tests/test_multi.py
-#usr/share/doc/pycurl/tests/test_multi2.py
-#usr/share/doc/pycurl/tests/test_multi3.py
-#usr/share/doc/pycurl/tests/test_multi4.py
-#usr/share/doc/pycurl/tests/test_multi5.py
-#usr/share/doc/pycurl/tests/test_multi6.py
-#usr/share/doc/pycurl/tests/test_multi_socket.py
-#usr/share/doc/pycurl/tests/test_multi_socket_select.py
-#usr/share/doc/pycurl/tests/test_multi_timer.py
-#usr/share/doc/pycurl/tests/test_multi_vs_thread.py
-#usr/share/doc/pycurl/tests/test_post.py
-#usr/share/doc/pycurl/tests/test_post2.py
-#usr/share/doc/pycurl/tests/test_post3.py
-#usr/share/doc/pycurl/tests/test_share.py
-#usr/share/doc/pycurl/tests/test_socketopen.py
-#usr/share/doc/pycurl/tests/test_stringio.py
-#usr/share/doc/pycurl/tests/test_xmlrpc.py
-#usr/share/doc/pycurl/tests/util.py
diff --git a/config/rootfiles/packages/pygpgme b/config/rootfiles/packages/pygpgme
deleted file mode 100644 (file)
index 83ffaf8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-usr/lib/python2.7/site-packages/gpgme
-usr/lib/python2.7/site-packages/gpgme/__init__.py
-usr/lib/python2.7/site-packages/gpgme/__init__.pyc
-usr/lib/python2.7/site-packages/gpgme/_gpgme.so
-usr/lib/python2.7/site-packages/gpgme/editutil.py
-usr/lib/python2.7/site-packages/gpgme/editutil.pyc
-#usr/lib/python2.7/site-packages/pygpgme-0.3-py2.7.egg-info
diff --git a/config/rootfiles/packages/python-lzma b/config/rootfiles/packages/python-lzma
deleted file mode 100644 (file)
index 21f647e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-usr/lib/python2.7/site-packages/liblzma.py
-usr/lib/python2.7/site-packages/liblzma.pyc
-usr/lib/python2.7/site-packages/lzma.py
-usr/lib/python2.7/site-packages/lzma.pyc
-usr/lib/python2.7/site-packages/lzma.so
diff --git a/config/rootfiles/packages/python-progressbar b/config/rootfiles/packages/python-progressbar
deleted file mode 100644 (file)
index 453f51d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-usr/lib/python2.7/site-packages/progressbar-2.2-py2.7.egg-info
-usr/lib/python2.7/site-packages/progressbar.py
-usr/lib/python2.7/site-packages/progressbar.pyc
index 52702076b5e3f34a1f4bc8f19dce0d399855cfaa..15ece028260dd79b33d21c42b72831c79ce1e1a4 100644 (file)
@@ -1,5 +1,5 @@
 etc/rc.d/init.d/rpcbind
-sbin/rpcbind
 sbin/rpcinfo
+usr/sbin/rpcbind
 #usr/share/man/man8/rpcbind.8
 #usr/share/man/man8/rpcinfo.8
index 0ef126e237eb8b22cf581c9bfaf7a8d9e929e982..48320f6b68661088fdfb2ec761c96a7d4f3c9bfa 100644 (file)
@@ -1,9 +1,9 @@
 usr/bin/speedtest
 usr/bin/speedtest-cli
 usr/lib/python3.8/site-packages/speedtest.py
-usr/lib/python3.8/site-packages/speedtest_cli-2.1.2-py3.8.egg-info
-usr/lib/python3.8/site-packages/speedtest_cli-2.1.2-py3.8.egg-info/PKG-INFO
-usr/lib/python3.8/site-packages/speedtest_cli-2.1.2-py3.8.egg-info/SOURCES.txt
-usr/lib/python3.8/site-packages/speedtest_cli-2.1.2-py3.8.egg-info/dependency_links.txt
-usr/lib/python3.8/site-packages/speedtest_cli-2.1.2-py3.8.egg-info/entry_points.txt
-usr/lib/python3.8/site-packages/speedtest_cli-2.1.2-py3.8.egg-info/top_level.txt
+usr/lib/python3.8/site-packages/speedtest_cli-2.1.3-py3.8.egg-info
+usr/lib/python3.8/site-packages/speedtest_cli-2.1.3-py3.8.egg-info/PKG-INFO
+usr/lib/python3.8/site-packages/speedtest_cli-2.1.3-py3.8.egg-info/SOURCES.txt
+usr/lib/python3.8/site-packages/speedtest_cli-2.1.3-py3.8.egg-info/dependency_links.txt
+usr/lib/python3.8/site-packages/speedtest_cli-2.1.3-py3.8.egg-info/entry_points.txt
+usr/lib/python3.8/site-packages/speedtest_cli-2.1.3-py3.8.egg-info/top_level.txt
index 7839297799e93d13cd02e3905b4cd57c60fd10f2..e9999dcf774b0514dff3d4639118a9924dba3f15 100644 (file)
@@ -1,14 +1,14 @@
-usr/bin/swatch
-#usr/lib/perl5/site_perl/5.30.0/Swatch
-usr/lib/perl5/site_perl/5.30.0/Swatch/Actions.pm
-usr/lib/perl5/site_perl/5.30.0/Swatch/Threshold.pm
-usr/lib/perl5/site_perl/5.30.0/Swatch/Throttle.pm
-#usr/lib/perl5/site_perl/5.30.0/auto/Swatch
-#usr/lib/perl5/site_perl/5.30.0/auto/Swatch/Actions
-usr/lib/perl5/site_perl/5.30.0/auto/Swatch/Actions/autosplit.ix
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/swatch
-#usr/lib/perl5/site_perl/5.30.0/xxxMACHINExxx-linux-thread-multi/auto/swatch/.packlist
-#usr/share/man/man1/swatch.1
-#usr/share/man/man3/Swatch::Actions.3
-#usr/share/man/man3/Swatch::Threshold.3
-#usr/share/man/man3/Swatch::Throttle.3
+usr/bin/swatchdog
+#usr/lib/perl5/site_perl/5.32.1/Swatchdog
+usr/lib/perl5/site_perl/5.32.1/Swatchdog/Actions.pm
+usr/lib/perl5/site_perl/5.32.1/Swatchdog/Threshold.pm
+usr/lib/perl5/site_perl/5.32.1/Swatchdog/Throttle.pm
+#usr/lib/perl5/site_perl/5.32.1/auto/Swatchdog
+#usr/lib/perl5/site_perl/5.32.1/auto/Swatchdog/Actions
+#usr/lib/perl5/site_perl/5.32.1/auto/Swatchdog/Actions/autosplit.ix
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/swatchdog
+#usr/lib/perl5/site_perl/5.32.1/xxxMACHINExxx-linux-thread-multi/auto/swatchdog/.packlist
+#usr/share/man/man1/swatchdog.1
+#usr/share/man/man3/Swatchdog::Actions.3
+#usr/share/man/man3/Swatchdog::Threshold.3
+#usr/share/man/man3/Swatchdog::Throttle.3
index 31642561bd3236d9babda44fa30beed457756de1..d38ecba1fd3d56e3ba7f7a1f702966960455a5f2 100644 (file)
@@ -1 +1,88 @@
 usr/bin/sysbench
+#usr/share/sysbench
+usr/share/sysbench/bulk_insert.lua
+usr/share/sysbench/oltp_common.lua
+usr/share/sysbench/oltp_delete.lua
+usr/share/sysbench/oltp_insert.lua
+usr/share/sysbench/oltp_point_select.lua
+usr/share/sysbench/oltp_read_only.lua
+usr/share/sysbench/oltp_read_write.lua
+usr/share/sysbench/oltp_update_index.lua
+usr/share/sysbench/oltp_update_non_index.lua
+usr/share/sysbench/oltp_write_only.lua
+usr/share/sysbench/select_random_points.lua
+usr/share/sysbench/select_random_ranges.lua
+#usr/share/sysbench/tests
+#usr/share/sysbench/tests/include
+usr/share/sysbench/tests/include/api_sql_common.sh
+usr/share/sysbench/tests/include/config.sh
+usr/share/sysbench/tests/include/drv_common.sh
+usr/share/sysbench/tests/include/inspect.lua
+usr/share/sysbench/tests/include/mysql_common.sh
+#usr/share/sysbench/tests/include/oltp_legacy
+usr/share/sysbench/tests/include/oltp_legacy/bulk_insert.lua
+usr/share/sysbench/tests/include/oltp_legacy/common.lua
+usr/share/sysbench/tests/include/oltp_legacy/delete.lua
+usr/share/sysbench/tests/include/oltp_legacy/insert.lua
+usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
+usr/share/sysbench/tests/include/oltp_legacy/oltp_simple.lua
+usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua
+usr/share/sysbench/tests/include/oltp_legacy/select.lua
+usr/share/sysbench/tests/include/oltp_legacy/select_random_points.lua
+usr/share/sysbench/tests/include/oltp_legacy/select_random_ranges.lua
+usr/share/sysbench/tests/include/oltp_legacy/update_index.lua
+usr/share/sysbench/tests/include/oltp_legacy/update_non_index.lua
+usr/share/sysbench/tests/include/pgsql_common.sh
+usr/share/sysbench/tests/include/script_bulk_insert_common.sh
+usr/share/sysbench/tests/include/script_oltp_common.sh
+usr/share/sysbench/tests/include/script_oltp_legacy_common.sh
+usr/share/sysbench/tests/include/script_select_random_common.sh
+usr/share/sysbench/tests/include/script_select_random_legacy_common.sh
+#usr/share/sysbench/tests/t
+usr/share/sysbench/tests/t/1st.t
+usr/share/sysbench/tests/t/api_basic.t
+usr/share/sysbench/tests/t/api_histogram.t
+usr/share/sysbench/tests/t/api_legacy_basic.t
+usr/share/sysbench/tests/t/api_legacy_rand.t
+usr/share/sysbench/tests/t/api_legacy_sql.t
+usr/share/sysbench/tests/t/api_rand.t
+usr/share/sysbench/tests/t/api_reports.t
+usr/share/sysbench/tests/t/api_sql_mysql.t
+usr/share/sysbench/tests/t/api_sql_pgsql.t
+usr/share/sysbench/tests/t/cmd_cleanup.t
+usr/share/sysbench/tests/t/cmd_help.t
+usr/share/sysbench/tests/t/cmd_prepare.t
+usr/share/sysbench/tests/t/cmd_run.t
+usr/share/sysbench/tests/t/cmdline.t
+usr/share/sysbench/tests/t/commands.t
+usr/share/sysbench/tests/t/drivers.t
+usr/share/sysbench/tests/t/drv_mysql.t
+usr/share/sysbench/tests/t/drv_pgsql.t
+usr/share/sysbench/tests/t/help_drv_mysql.t
+usr/share/sysbench/tests/t/help_drv_pgsql.t
+usr/share/sysbench/tests/t/opt_help.t
+usr/share/sysbench/tests/t/opt_histogram.t
+usr/share/sysbench/tests/t/opt_rate.t
+usr/share/sysbench/tests/t/opt_report_checkpoints.t
+usr/share/sysbench/tests/t/opt_report_interval.t
+usr/share/sysbench/tests/t/opt_version.t
+usr/share/sysbench/tests/t/script_bulk_insert_mysql.t
+usr/share/sysbench/tests/t/script_bulk_insert_pgsql.t
+usr/share/sysbench/tests/t/script_oltp_delete_mysql.t
+usr/share/sysbench/tests/t/script_oltp_delete_pgsql.t
+usr/share/sysbench/tests/t/script_oltp_help.t
+usr/share/sysbench/tests/t/script_oltp_insert_mysql.t
+usr/share/sysbench/tests/t/script_oltp_insert_pgsql.t
+usr/share/sysbench/tests/t/script_oltp_point_select_mysql.t
+usr/share/sysbench/tests/t/script_oltp_point_select_pgsql.t
+usr/share/sysbench/tests/t/script_oltp_read_write_mysql.t
+usr/share/sysbench/tests/t/script_oltp_read_write_pgsql.t
+usr/share/sysbench/tests/t/script_select_random_mysql.t
+usr/share/sysbench/tests/t/script_select_random_pgsql.t
+usr/share/sysbench/tests/t/test_cpu.t
+usr/share/sysbench/tests/t/test_fileio.t
+usr/share/sysbench/tests/t/test_memory.t
+usr/share/sysbench/tests/t/test_mutex.t
+usr/share/sysbench/tests/t/test_threads.t
+usr/share/sysbench/tests/t/tests.t
+usr/share/sysbench/tests/test_run.sh
diff --git a/config/rootfiles/packages/urlgrabber b/config/rootfiles/packages/urlgrabber
deleted file mode 100644 (file)
index a98c7b1..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-usr/bin/urlgrabber
-usr/lib/python2.7/site-packages/urlgrabber
-#usr/lib/python2.7/site-packages/urlgrabber-3.9.1-py2.7.egg-info
-usr/lib/python2.7/site-packages/urlgrabber/__init__.py
-usr/lib/python2.7/site-packages/urlgrabber/__init__.pyc
-usr/lib/python2.7/site-packages/urlgrabber/byterange.py
-usr/lib/python2.7/site-packages/urlgrabber/byterange.pyc
-usr/lib/python2.7/site-packages/urlgrabber/grabber.py
-usr/lib/python2.7/site-packages/urlgrabber/grabber.pyc
-usr/lib/python2.7/site-packages/urlgrabber/mirror.py
-usr/lib/python2.7/site-packages/urlgrabber/mirror.pyc
-usr/lib/python2.7/site-packages/urlgrabber/progress.py
-usr/lib/python2.7/site-packages/urlgrabber/progress.pyc
-#usr/share/doc/urlgrabber-3.9.1
-#usr/share/doc/urlgrabber-3.9.1/ChangeLog
-#usr/share/doc/urlgrabber-3.9.1/LICENSE
-#usr/share/doc/urlgrabber-3.9.1/README
-#usr/share/doc/urlgrabber-3.9.1/TODO
index 590479da7f1ede8e85180b1582805403d2655b4a..93c35b51ef0da39f6f40726cd86aecd96ad5768c 100644 (file)
@@ -667,7 +667,7 @@ usr/lib/samba/libldb-key-value-samba4.so
 usr/lib/samba/libldb-tdb-err-map-samba4.so
 usr/lib/samba/libldb-tdb-int-samba4.so
 usr/lib/samba/libldb.so.2
-usr/lib/samba/libldb.so.2.2.0
+usr/lib/samba/libldb.so.2.2.1
 usr/lib/samba/libldbsamba-samba4.so
 usr/lib/samba/liblibcli-lsa3-samba4.so
 usr/lib/samba/liblibcli-netlogon3-samba4.so
@@ -688,7 +688,7 @@ usr/lib/samba/libposix-eadb-samba4.so
 usr/lib/samba/libprinter-driver-samba4.so
 usr/lib/samba/libprinting-migrate-samba4.so
 usr/lib/samba/libpyldb-util.cpython-38-x86-64-linux-gnu.so.2
-usr/lib/samba/libpyldb-util.cpython-38-x86-64-linux-gnu.so.2.2.0
+usr/lib/samba/libpyldb-util.cpython-38-x86-64-linux-gnu.so.2.2.1
 usr/lib/samba/libpytalloc-util.cpython-38-x86-64-linux-gnu.so.2
 usr/lib/samba/libpytalloc-util.cpython-38-x86-64-linux-gnu.so.2.3.1
 usr/lib/samba/libregistry-samba4.so
@@ -711,7 +711,6 @@ usr/lib/samba/libshares-samba4.so
 usr/lib/samba/libsmb-transport-samba4.so
 usr/lib/samba/libsmbclient-raw-samba4.so
 usr/lib/samba/libsmbd-base-samba4.so
-usr/lib/samba/libsmbd-conn-samba4.so
 usr/lib/samba/libsmbd-shim-samba4.so
 usr/lib/samba/libsmbldaphelper-samba4.so
 usr/lib/samba/libsmbpasswdparser-samba4.so
index 4fc11fb33530491a56351839b9913f912174cbdf..bacf722ef96d62523ea0b5d2963e103c9d705c68 100644 (file)
@@ -101,7 +101,8 @@ case "${MODE}" in
                        #ip link set "${BRIDGE}" up
                fi
 
-               if grep -q "INTERFACE=${INTERFACE}" "/var/ipfire/wlanap/settings" 2>/dev/null; then
+               # Try setting wireless interfaces into master mode
+               if [ -d "/sys/class/net/${INTERFACE}/phy80211" ]; then
                        iw dev "${INTERFACE}" set type __ap
                fi
 
@@ -111,15 +112,6 @@ case "${MODE}" in
                ip link set dev "${INTERFACE}" up
                ;;
 
-       macvtap)
-               ADDRESS="$(</sys/class/net/${INTERFACE}/address)"
-               GENERATED_ADDRESS=$(random_mac_address)
-
-               ip link add link "${INTERFACE}" "${BRIDGE}" address "${ADDRESS}" type macvlan mode bridge
-               ip link set "${INTERFACE}" address "${GENERATED_ADDRESS}"
-               ip link set "${INTERFACE}" up
-               ;;
-
        "")
                exit 0
                ;;
index 71a25c317d64989e1728ffbb268ac5b5f5eec135..73e811e947b5db4c702c3a123515851c593a7db4 100644 (file)
@@ -58,36 +58,27 @@ for zone in ${ZONES}; do
        address="${zone}_MACADDR"
        device="${zone}_DEV"
        mode="${zone}_MODE"
+       slaves="${zone}_SLAVES"
 
-       # Skip if address or device is unset
-       [ -n "${!address}" -a -n "${!device}" ] || continue
-
-       # Compare MAC addresses
-       [ "${ADDRESS}" = "${!address,,}" ] || continue
+       # Return DEV when the address matches
+       if [ "${!address,,}" = "${ADDRESS,,}" ]; then
+               echo "${!device}"
+               exit 0
+       fi
 
        # If a matching interface has been found we will
        # print the name to which udev will rename it.
        case "${!mode}" in
                bridge)
-                       echo "${!device%0}phys0"
-                       ;;
-
-               macvtap)
-                       # MACVTAP mode doesn't work for WiFi devices
-                       if [ -d "/sys/class/net/${INTERFACE}/phy80211" ]; then
-                               logger -t network "MACVTAP mode is not supported for wireless devices"
-                               echo "${!device}"
-                       else
-                               echo "${!device%0}phys0"
-                       fi
-                       ;;
-
-               *)
-                       echo "${!device}"
+                       counter=0
+                       for slave in ${!slaves}; do
+                               if [ "${slave,,}" = "${ADDRESS,,}" ]; then
+                                       echo "${!device}p${counter}"
+                               fi
+                               (( counter += 1 ))
+                       done
                        ;;
        esac
-
-       exit 0
 done
 
 # If we get here we have not found a matching device,
index 8fa34fb4c151c378d670db344ca335f3a2b49d5b..4983e20c6b0b77aeac1767de49a468c10b38782d 100644 (file)
@@ -128,6 +128,7 @@ WARNING: translation string unused: backup password
 WARNING: translation string unused: backup sets
 WARNING: translation string unused: backup to floppy
 WARNING: translation string unused: bad characters in
+WARNING: translation string unused: bandwidth usage
 WARNING: translation string unused: behind a proxy
 WARNING: translation string unused: bitrate
 WARNING: translation string unused: bleeding rules
@@ -383,6 +384,7 @@ WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
 WARNING: translation string unused: inactive
+WARNING: translation string unused: incoming
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -532,6 +534,7 @@ WARNING: translation string unused: os level
 WARNING: translation string unused: other
 WARNING: translation string unused: our donors
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing
 WARNING: translation string unused: outgoing firewall
 WARNING: translation string unused: outgoing firewall add ip group
 WARNING: translation string unused: outgoing firewall add mac group
@@ -715,6 +718,7 @@ WARNING: translation string unused: test
 WARNING: translation string unused: test email could not be sent
 WARNING: translation string unused: test email was sent
 WARNING: translation string unused: the following update was successfully installed
+WARNING: translation string unused: theme
 WARNING: translation string unused: there are updates
 WARNING: translation string unused: there are updates available
 WARNING: translation string unused: this feature has been sponsored by
@@ -818,6 +822,7 @@ WARNING: translation string unused: vpn red name
 WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
+WARNING: translation string unused: week
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
@@ -843,6 +848,7 @@ WARNING: translation string unused: zoneconf val stp priority range error
 WARNING: translation string unused: zoneconf val stp zone mode error
 WARNING: translation string unused: zoneconf val vlan amount assignment error
 WARNING: translation string unused: zoneconf val vlan tag assignment error
+WARNING: translation string unused: zoneconf val vlan tag range error
 WARNING: translation string unused: zoneconf val zoneslave amount error
 WARNING: untranslated string: desired = Desired
 WARNING: untranslated string: disable = Disable
index 36ac62905c5d483c80ef4e6e8966aa0e7a2b31ac..4e6a201fd3b414002c229c5ca7e676e32200e875 100644 (file)
@@ -340,14 +340,13 @@ WARNING: untranslated string: backup from = Backup from
 WARNING: untranslated string: backupaddon = Addon Backup
 WARNING: untranslated string: backupprofile = In case reconnection fails, switch to profile
 WARNING: untranslated string: backups = backups
-WARNING: untranslated string: backupwarning = Please first restore your main backup and after this your addon backups. Please keep the original filename, given when you download.
+WARNING: untranslated string: backupwarning = Import your main backup first and then the backup(s) of the addon configuration(s).<br />Only the backed up addon configuration file(s) will be restored, not the installed addons!<br />Also make sure that the backups keep their original file names.
 WARNING: untranslated string: bad characters in script field = Bad characters in script field
 WARNING: untranslated string: bad characters in the telephone number field = Bad characters in the telephone number field.
 WARNING: untranslated string: bad destination range = The Destination port range has a first value that is greater than or equal to the second value.
 WARNING: untranslated string: bad ignore filter = Bad ignore filter:
 WARNING: untranslated string: bad return code = Helper program returned error code
 WARNING: untranslated string: bad source range = The Source port range has a first value that is greater than or equal to the second value.
-WARNING: untranslated string: bandwidth usage = bandwidth usage (external)
 WARNING: untranslated string: bandwitherror = You cannot change the bandwithsettings, with Qos being enabled. First disable Qos.<p>
 WARNING: untranslated string: bandwithsettings = Bandwithsettings
 WARNING: untranslated string: basic options = Basic Options
@@ -1049,7 +1048,6 @@ WARNING: untranslated string: ike lifetime should be between 1 and 24 hours = IK
 WARNING: untranslated string: imei = IMEI
 WARNING: untranslated string: imsi = IMSI
 WARNING: untranslated string: include logfiles = Include logfiles
-WARNING: untranslated string: incoming = incoming
 WARNING: untranslated string: incoming compression in bytes per second = Incoming Compression
 WARNING: untranslated string: incoming firewall access = Incoming Firewall Access
 WARNING: untranslated string: incoming overhead in bytes per second = Incoming Overhead
@@ -1375,7 +1373,6 @@ WARNING: untranslated string: other countries = Other countries
 WARNING: untranslated string: other login script = Other login script
 WARNING: untranslated string: otherip = other IP
 WARNING: untranslated string: otherport = other Port
-WARNING: untranslated string: outgoing = outgoing
 WARNING: untranslated string: outgoing compression in bytes per second = Outgoing compression
 WARNING: untranslated string: outgoing firewall access = Outgoing Firewall Access
 WARNING: untranslated string: outgoing firewall p2p allow = Using the P2P protocol is allowed
@@ -1676,7 +1673,6 @@ WARNING: untranslated string: template = Preset
 WARNING: untranslated string: template warning = You have two options to set up Qos. The First, you press the save button and generate the classes and rules on your own. The second, you press the preset button and classes and rules will be set up by a template.
 WARNING: untranslated string: ten minutes = 10 Minutes
 WARNING: untranslated string: the statistics were last updated at = The statistics were last updated at
-WARNING: untranslated string: theme = Theme
 WARNING: untranslated string: there was no file upload = There was no file upload.
 WARNING: untranslated string: thirty minutes = 30 Minutes
 WARNING: untranslated string: thursday = Thursday
@@ -2094,7 +2090,6 @@ WARNING: untranslated string: web server = Web Server
 WARNING: untranslated string: webradio playlist = Webradio Playlist
 WARNING: untranslated string: website = Website
 WARNING: untranslated string: wednesday = Wednesday
-WARNING: untranslated string: week = Week
 WARNING: untranslated string: weeks = Weeks
 WARNING: untranslated string: whois results from = WHOIS results from
 WARNING: untranslated string: winbind daemon = Winbind Daemon
index 0f7327184e612793173c451b23d625178389f36c..d9c512af45bab30d686115c6801cd6acff3f9490 100644 (file)
@@ -138,6 +138,7 @@ WARNING: translation string unused: backup protect key password
 WARNING: translation string unused: backup sets
 WARNING: translation string unused: backup to floppy
 WARNING: translation string unused: bad characters in
+WARNING: translation string unused: bandwidth usage
 WARNING: translation string unused: behind a proxy
 WARNING: translation string unused: bewan adsl pci st
 WARNING: translation string unused: bewan adsl usb
@@ -356,6 +357,7 @@ WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
 WARNING: translation string unused: inactive
+WARNING: translation string unused: incoming
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -499,6 +501,7 @@ WARNING: translation string unused: or
 WARNING: translation string unused: original
 WARNING: translation string unused: os level
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing
 WARNING: translation string unused: outgoing firewall
 WARNING: translation string unused: outgoing firewall mode0
 WARNING: translation string unused: outgoing firewall mode1
@@ -666,6 +669,7 @@ WARNING: translation string unused: test
 WARNING: translation string unused: test email could not be sent
 WARNING: translation string unused: test email was sent
 WARNING: translation string unused: the following update was successfully installed
+WARNING: translation string unused: theme
 WARNING: translation string unused: there are updates
 WARNING: translation string unused: there are updates available
 WARNING: translation string unused: this feature has been sponsored by
@@ -762,6 +766,7 @@ WARNING: translation string unused: vpn red name
 WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
+WARNING: translation string unused: week
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
index fa3bb886fa3095f6381ceae6f5a84090333f704a..e993c63134f62466c4c39a4a392b1d09cfa50b2c 100644 (file)
@@ -148,6 +148,7 @@ WARNING: translation string unused: backup protect key password
 WARNING: translation string unused: backup sets
 WARNING: translation string unused: backup to floppy
 WARNING: translation string unused: bad characters in
+WARNING: translation string unused: bandwidth usage
 WARNING: translation string unused: behind a proxy
 WARNING: translation string unused: bitrate
 WARNING: translation string unused: bleeding rules
@@ -411,6 +412,7 @@ WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
 WARNING: translation string unused: inactive
+WARNING: translation string unused: incoming
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -563,6 +565,7 @@ WARNING: translation string unused: os level
 WARNING: translation string unused: other
 WARNING: translation string unused: our donors
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing
 WARNING: translation string unused: outgoing firewall
 WARNING: translation string unused: outgoing firewall add ip group
 WARNING: translation string unused: outgoing firewall add mac group
@@ -751,6 +754,7 @@ WARNING: translation string unused: test
 WARNING: translation string unused: test email could not be sent
 WARNING: translation string unused: test email was sent
 WARNING: translation string unused: the following update was successfully installed
+WARNING: translation string unused: theme
 WARNING: translation string unused: there are updates
 WARNING: translation string unused: there are updates available
 WARNING: translation string unused: this feature has been sponsored by
@@ -858,6 +862,7 @@ WARNING: translation string unused: vpn red name
 WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
+WARNING: translation string unused: week
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
@@ -875,13 +880,15 @@ WARNING: translation string unused: zoneconf nic assignment
 WARNING: translation string unused: zoneconf nicmode bridge
 WARNING: translation string unused: zoneconf nicmode default
 WARNING: translation string unused: zoneconf nicmode macvtap
+WARNING: translation string unused: zoneconf stp enable
+WARNING: translation string unused: zoneconf stp priority
 WARNING: translation string unused: zoneconf val native assignment error
 WARNING: translation string unused: zoneconf val ppp assignment error
+WARNING: translation string unused: zoneconf val stp priority range error
+WARNING: translation string unused: zoneconf val stp zone mode error
 WARNING: translation string unused: zoneconf val vlan amount assignment error
 WARNING: translation string unused: zoneconf val vlan tag assignment error
 WARNING: translation string unused: zoneconf val zoneslave amount error
-WARNING: untranslated string: dhcp deny known clients: = Deny known clients:
-WARNING: untranslated string: dhcp valid range required when deny known clients checked = Valid range required when "Deny known clients:" is checked
 WARNING: untranslated string: fwhost cust locationgrp = unknown string
 WARNING: untranslated string: fwhost err hostip = unknown string
 WARNING: untranslated string: guardian block a host = unknown string
@@ -917,8 +924,3 @@ WARNING: untranslated string: pakfire ago = ago.
 WARNING: untranslated string: route config changed = unknown string
 WARNING: untranslated string: routing config added = unknown string
 WARNING: untranslated string: routing config changed = unknown string
-WARNING: untranslated string: token = Token:
-WARNING: untranslated string: token not set = No Token has been given.
-WARNING: untranslated string: updxlrtr passive mode = Delivery only/no download mode
-WARNING: untranslated string: wlan client encryption wpa3 = WPA3
-WARNING: untranslated string: wlan client management frame protection = Management Frame Protection
index b7ca1fbc323fd4d7e68f517e3bce4363d1546988..15ad4f8964039d9fd1f010d4643d6311c832b943 100644 (file)
@@ -122,6 +122,7 @@ WARNING: translation string unused: backup protect key password
 WARNING: translation string unused: backup sets
 WARNING: translation string unused: backup to floppy
 WARNING: translation string unused: bad characters in
+WARNING: translation string unused: bandwidth usage
 WARNING: translation string unused: behind a proxy
 WARNING: translation string unused: bewan adsl pci st
 WARNING: translation string unused: bewan adsl usb
@@ -389,6 +390,7 @@ WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
 WARNING: translation string unused: inactive
+WARNING: translation string unused: incoming
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -536,6 +538,7 @@ WARNING: translation string unused: os level
 WARNING: translation string unused: other
 WARNING: translation string unused: our donors
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing
 WARNING: translation string unused: outgoing firewall
 WARNING: translation string unused: outgoing firewall add ip group
 WARNING: translation string unused: outgoing firewall add mac group
@@ -724,6 +727,7 @@ WARNING: translation string unused: test
 WARNING: translation string unused: test email could not be sent
 WARNING: translation string unused: test email was sent
 WARNING: translation string unused: the following update was successfully installed
+WARNING: translation string unused: theme
 WARNING: translation string unused: there are updates
 WARNING: translation string unused: there are updates available
 WARNING: translation string unused: this feature has been sponsored by
@@ -831,6 +835,7 @@ WARNING: translation string unused: vpn red name
 WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
+WARNING: translation string unused: week
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
index 97cf4ab929f77dba586550085779878bc33f7f55..1a60d83a6389c6632a07dfe52af9121aecdc0f11 100644 (file)
@@ -121,6 +121,7 @@ WARNING: translation string unused: backup protect key password
 WARNING: translation string unused: backup sets
 WARNING: translation string unused: backup to floppy
 WARNING: translation string unused: bad characters in
+WARNING: translation string unused: bandwidth usage
 WARNING: translation string unused: behind a proxy
 WARNING: translation string unused: bewan adsl pci st
 WARNING: translation string unused: bewan adsl usb
@@ -386,6 +387,7 @@ WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
 WARNING: translation string unused: inactive
+WARNING: translation string unused: incoming
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -532,6 +534,7 @@ WARNING: translation string unused: os level
 WARNING: translation string unused: other
 WARNING: translation string unused: our donors
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing
 WARNING: translation string unused: outgoing firewall
 WARNING: translation string unused: outgoing firewall add ip group
 WARNING: translation string unused: outgoing firewall add mac group
@@ -718,6 +721,7 @@ WARNING: translation string unused: test
 WARNING: translation string unused: test email could not be sent
 WARNING: translation string unused: test email was sent
 WARNING: translation string unused: the following update was successfully installed
+WARNING: translation string unused: theme
 WARNING: translation string unused: there are updates
 WARNING: translation string unused: there are updates available
 WARNING: translation string unused: this feature has been sponsored by
@@ -825,6 +829,7 @@ WARNING: translation string unused: vpn red name
 WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
+WARNING: translation string unused: week
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
index 9f5ee89dada3f7d9104ed6632e793ebe54d42870..e0fb9fd5e3a5a5cc50751e5c671a8c478dac7f5d 100644 (file)
@@ -117,6 +117,7 @@ WARNING: translation string unused: backup protect key password
 WARNING: translation string unused: backup sets
 WARNING: translation string unused: backup to floppy
 WARNING: translation string unused: bad characters in
+WARNING: translation string unused: bandwidth usage
 WARNING: translation string unused: behind a proxy
 WARNING: translation string unused: bewan adsl pci st
 WARNING: translation string unused: bewan adsl usb
@@ -332,6 +333,7 @@ WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
 WARNING: translation string unused: inactive
+WARNING: translation string unused: incoming
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -472,6 +474,7 @@ WARNING: translation string unused: or
 WARNING: translation string unused: original
 WARNING: translation string unused: os level
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing
 WARNING: translation string unused: outgoing firewall
 WARNING: translation string unused: outgoing firewall add ip group
 WARNING: translation string unused: outgoing firewall add mac group
@@ -650,6 +653,7 @@ WARNING: translation string unused: test
 WARNING: translation string unused: test email could not be sent
 WARNING: translation string unused: test email was sent
 WARNING: translation string unused: the following update was successfully installed
+WARNING: translation string unused: theme
 WARNING: translation string unused: there are updates
 WARNING: translation string unused: there are updates available
 WARNING: translation string unused: this feature has been sponsored by
@@ -746,6 +750,7 @@ WARNING: translation string unused: vpn red name
 WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
+WARNING: translation string unused: week
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
index d1dc129730ea2b1cd14f6253a48d0fc74198b7d2..d5bdbe6589a637656d373da805f4c101a9ca068c 100644 (file)
@@ -117,6 +117,7 @@ WARNING: translation string unused: backup protect key password
 WARNING: translation string unused: backup sets
 WARNING: translation string unused: backup to floppy
 WARNING: translation string unused: bad characters in
+WARNING: translation string unused: bandwidth usage
 WARNING: translation string unused: behind a proxy
 WARNING: translation string unused: bewan adsl pci st
 WARNING: translation string unused: bewan adsl usb
@@ -329,6 +330,7 @@ WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
 WARNING: translation string unused: inactive
+WARNING: translation string unused: incoming
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -468,6 +470,7 @@ WARNING: translation string unused: or
 WARNING: translation string unused: original
 WARNING: translation string unused: os level
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing
 WARNING: translation string unused: outgoing firewall
 WARNING: translation string unused: outgoing firewall add ip group
 WARNING: translation string unused: outgoing firewall add mac group
@@ -646,6 +649,7 @@ WARNING: translation string unused: test
 WARNING: translation string unused: test email could not be sent
 WARNING: translation string unused: test email was sent
 WARNING: translation string unused: the following update was successfully installed
+WARNING: translation string unused: theme
 WARNING: translation string unused: there are updates
 WARNING: translation string unused: there are updates available
 WARNING: translation string unused: this feature has been sponsored by
@@ -742,6 +746,7 @@ WARNING: translation string unused: vpn red name
 WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
+WARNING: translation string unused: week
 WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
 WARNING: translation string unused: wins server
index b5d8ea54cc7efc2b0213bb480880c36d0ff05547..1445f864130348c22b9c14d295807b7954cd6b4e 100644 (file)
@@ -145,6 +145,7 @@ WARNING: translation string unused: backup protect key password
 WARNING: translation string unused: backup sets
 WARNING: translation string unused: backup to floppy
 WARNING: translation string unused: bad characters in
+WARNING: translation string unused: bandwidth usage
 WARNING: translation string unused: behind a proxy
 WARNING: translation string unused: bewan adsl pci st
 WARNING: translation string unused: bewan adsl usb
@@ -415,6 +416,7 @@ WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
 WARNING: translation string unused: inactive
+WARNING: translation string unused: incoming
 WARNING: translation string unused: incorrect password
 WARNING: translation string unused: info
 WARNING: translation string unused: insert floppy
@@ -565,6 +567,7 @@ WARNING: translation string unused: os level
 WARNING: translation string unused: other
 WARNING: translation string unused: our donors
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing
 WARNING: translation string unused: outgoing firewall
 WARNING: translation string unused: outgoing firewall add ip group
 WARNING: translation string unused: outgoing firewall add mac group
@@ -754,6 +757,7 @@ WARNING: translation string unused: test
 WARNING: translation string unused: test email could not be sent
 WARNING: translation string unused: test email was sent
 WARNING: translation string unused: the following update was successfully installed
+WARNING: translation string unused: theme
 WARNING: translation string unused: there are updates
 WARNING: translation string unused: there are updates available
 WARNING: translation string unused: this feature has been sponsored by
@@ -861,6 +865,7 @@ WARNING: translation string unused: vpn red name
 WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
+WARNING: translation string unused: week
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
index 3cd27772655046fe00857f8356d0bd0be35bdbfa..a390d1b0026218e8f67fe6ec76a3154b2aa90c20 100644 (file)
 < zoneconf val stp zone mode error
 < zoneconf val vlan amount assignment error
 < zoneconf val vlan tag assignment error
+< zoneconf val vlan tag range error
 < zoneconf val zoneslave amount error
 ############################################################################
 # Checking cgi-bin translations for language: fr                           #
 < ansi t1.483
 < bewan adsl pci st
 < bewan adsl usb
-< dhcp deny known clients:
-< dhcp valid range required when deny known clients checked
 < g.dtm
 < g.lite
-< token
-< token not set
-< updxlrtr passive mode
 < upload fcdsl.o
-< wlan client encryption wpa3
-< wlan client management frame protection
-< zoneconf stp enable
-< zoneconf stp priority
-< zoneconf val stp priority range error
-< zoneconf val stp zone mode error
+< zoneconf val vlan tag range error
 ############################################################################
 # Checking cgi-bin translations for language: it                           #
 ############################################################################
 < zoneconf val stp zone mode error
 < zoneconf val vlan amount assignment error
 < zoneconf val vlan tag assignment error
+< zoneconf val vlan tag range error
 < zoneconf val zoneslave amount error
 ############################################################################
 # Checking cgi-bin translations for language: nl                           #
 < zoneconf val stp zone mode error
 < zoneconf val vlan amount assignment error
 < zoneconf val vlan tag assignment error
+< zoneconf val vlan tag range error
 < zoneconf val zoneslave amount error
 ############################################################################
 # Checking cgi-bin translations for language: pl                           #
 < zoneconf val stp zone mode error
 < zoneconf val vlan amount assignment error
 < zoneconf val vlan tag assignment error
+< zoneconf val vlan tag range error
 < zoneconf val zoneslave amount error
 ############################################################################
 # Checking cgi-bin translations for language: ru                           #
 < zoneconf val stp zone mode error
 < zoneconf val vlan amount assignment error
 < zoneconf val vlan tag assignment error
+< zoneconf val vlan tag range error
 < zoneconf val zoneslave amount error
 ############################################################################
 # Checking cgi-bin translations for language: tr                           #
 < zoneconf val stp zone mode error
 < zoneconf val vlan amount assignment error
 < zoneconf val vlan tag assignment error
+< zoneconf val vlan tag range error
 < zoneconf val zoneslave amount error
index c2a9914f77de993e2bd282e7bbf0a42e953f1ec3..49f19209d1634ebaf8069e5a749640fb471f8595 100644 (file)
@@ -33,7 +33,7 @@ my %color = ();
 my %mainsettings = ();
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::showhttpheaders();
 &Header::openpage($Lang::tr{'status information'}, 1, '');
index cac4146ab94e59e5ab93e3c06ce763b5045435c7..683f8add41a429742d90b78c3f74b6f4fd87eec1 100644 (file)
@@ -42,7 +42,7 @@ my @backupisos = "";
 $a = new CGI;
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 $cgiparams{'ACTION'} = '';
 $cgiparams{'FILE'} = '';
index 8204eb7b3b87e7dc0e5079513564913eea876917..51c5d45f2a9bb6cedef74739d1f88f19ea87bebe 100755 (executable)
@@ -69,7 +69,7 @@ unless (-e $settingsfile)     { system("touch $settingsfile"); }
 &Header::getcgihash(\%cgiparams);
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 &General::readhash("$settingsfile", \%settings) if(-f $settingsfile);
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 
index 90aae52fbe0835421be74f51b091b1b52894fc2a..1393df65fd619a4da7e2cbcdb42d15b6354d0d05 100644 (file)
@@ -34,7 +34,7 @@ require '/var/ipfire/connscheduler/lib.pl';
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my $buttontext = $Lang::tr{'add'};
 my $hiddenvalue = 'add';
index edf59f49b7a2a6042e723ef7e9c475401e9bebd2..ccf74ef1a430a4e2e82a53fd1cd2def13ad42abc 100644 (file)
@@ -67,23 +67,23 @@ Christian Schmidt,
 Matthias Fischer,
 Alexander Marx,
 Peter Müller,
+Adolf Belka,
 Erik Kapfer,
 Jan Paul Tücking,
 Jonatan Schlag,
 Dirk Wagner,
 Marcel Lorenz,
-Adolf Belka,
 Alf Høgemark,
 Ben Schweikert,
+Daniel Weismüller,
 Peter Pfeiffer,
 Daniel Glanzmann,
-Daniel Weismüller,
 Heiner Schmeling,
 Stephan Feddersen,
+Leo-Andres Hofmann,
 Timo Eissler,
 Stéphane Pautrel,
 Jan Lentfer,
-Leo-Andres Hofmann,
 Marcus Scholz,
 Ersan Yildirim,
 Jörn-Ingo Weigert,
@@ -143,6 +143,7 @@ Roberto Peña,
 Stefan Ernst,
 Stefan Ferstl,
 Steffen Klammer,
+Thomas Cekal,
 Thomas Ebert,
 Timmothy Wilson,
 Umberto Parma
index 9b58db895ec1963fcbe720fd8b0d2d712395a341..7e4ddb5b78e9891e44530265ab794ae3a31a4a21 100644 (file)
@@ -37,7 +37,7 @@ undef (@dummy);
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 # Config file for basic configuration.
 my $settingsfile = "${General::swroot}/ddns/settings";
index 867614f2a7ccd26048f503b79f1c1acad4aa1ec0..dd379dc47caa0f79fa159e7cb6870405e20e1d85 100644 (file)
@@ -111,7 +111,7 @@ foreach my $itf (@ITFs) {
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
 &General::readhash("${General::swroot}/time/settings", \%timesettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 #Get GUI values
 &Header::getcgihash(\%dhcpsettings);
index 337166ccfd68fbae414af0f9d940669fa2047898..7dc11358223774a6f2cab732c473afd7f95f7080 100755 (executable)
@@ -65,7 +65,7 @@ my $check_servers;
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::showhttpheaders();
 &Header::getcgihash(\%cgiparams);
index ed373c09a453d8098527904d8d059f6fecff3147..749d1216aa7b103306819187b026537ad40423bf 100644 (file)
@@ -43,7 +43,7 @@ my $changed = 'no';
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::showhttpheaders();
 
index d7a9ca5d8951904ca5457827f56af977c771a73c..f8045db5a70cbcaba2a68d114b152e3ce34629f9 100644 (file)
@@ -45,7 +45,7 @@ if ( $querry[0] ne~ "") {
        &Header::openbigbox('100%', 'left');
 
        &Header::openbox('100%', 'center', $Lang::tr{'entropy'});
-       &Graphs::makegraphbox("entropy.cgi", "day");
+       &Graphs::makegraphbox("entropy.cgi", "entropy", "day");
        &Header::closebox();
 
        # Check for hardware support.
index 1483e779ff22ba7b8db2c2309f0dc5788e3b3b53..4f4d63cc8dd45666ba27aedb5206c86e898b398e 100644 (file)
@@ -99,7 +99,7 @@ my $checkorange='';
 my @protocols;
 &General::readhash("${General::swroot}/firewall/settings", \%fwdfwsettings);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 &General::readhash($fwoptions, \%optionsfw); 
 &General::readhash($ifacesettings, \%ifaces);
 &General::readhash("$configovpn", \%ovpnsettings);
@@ -1552,6 +1552,11 @@ sub newrule
                                $fwdfwsettings{'USE_NAT'}                               = $hash{$key}[28];
                                $fwdfwsettings{'nat'}                                   = $hash{$key}[31]; #changed order
                                $fwdfwsettings{$fwdfwsettings{'nat'}}   = $hash{$key}[29];
+                               #Fix BUG 12479
+                               #When copying a DNAT Rule, the sourceport has to be empty at this point.
+                               if($hash{$key}[14] eq 'cust_srv' and $hash{$key}[31] eq 'dnat'){
+                                       $hash{$key}[30] = '';
+                               }
                                $fwdfwsettings{'dnatport'}                              = $hash{$key}[30];
                                $fwdfwsettings{'LIMIT_CON_CON'}                 = $hash{$key}[32];
                                $fwdfwsettings{'concon'}                                = $hash{$key}[33];
index fe5117ae573dddee5062ec3ac08ea85c19712550..84b018459498ce91d09d787c986ab06bb949cdd0 100644 (file)
@@ -83,7 +83,7 @@ unless (-e $configsrvgrp) { system("touch $configsrvgrp"); }
 unless (-e $configlocationgrp) { system("touch $configlocationgrp"); }
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 &General::readhash("${General::swroot}/ethernet/settings", \%ownnet);
 &General::readhash("$configovpn", \%ovpnsettings);
 &General::readhasharray("$configipsec", \%ipsecconf);
diff --git a/html/cgi-bin/getrrdimage.cgi b/html/cgi-bin/getrrdimage.cgi
new file mode 100644 (file)
index 0000000..0caefe0
--- /dev/null
@@ -0,0 +1,245 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2005-2021  IPFire Team                                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+use strict;
+use URI;
+use GD;
+use GD::Text::Wrap;
+use experimental 'smartmatch';
+
+# debugging
+#use warnings;
+#use CGI::Carp 'fatalsToBrowser';
+
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+require "${General::swroot}/graphs.pl";
+
+# List of graph origins that getrrdimage.cgi can process directly
+# (unknown origins are forwarded to ensure compatibility)
+my @supported_origins = ("entropy.cgi", "hardwaregraphs.cgi", "media.cgi",
+       "memory.cgi","netexternal.cgi", "netinternal.cgi", "netother.cgi",
+       "netovpnrw.cgi", "netovpnsrv.cgi", "qos.cgi", "system.cgi");
+
+### Process GET parameters ###
+# URL format: /?origin=[graph origin cgi]&graph=[graph name]&range=[time range]
+my $uri = URI->new($ENV{'REQUEST_URI'});
+my %query = $uri->query_form;
+
+my $origin = lc $query{'origin'}; # lower case
+my $graph = $query{'graph'};
+my $range = lc $query{'range'}; # lower case
+
+# Check parameters
+unless(($origin =~ /^\w+?\.cgi$/) && ($graph =~ /^[\w-]+?$/) && ($range ~~ @Graphs::time_ranges)) {
+       # Send HTTP headers
+       _start_png_output();
+       
+       _print_error("URL parameters missing or malformed.");   
+       exit;
+}
+
+# Unsupported graph origin: Redirect request to the CGI specified in the "origin" parameter
+# This enables backwards compatibility with addons that use Graphs::makegraphbox to ouput their own graphs
+unless($origin ~~ @supported_origins) {
+       # Rewrite to old URL format: /[graph origin cgi]?[graph name]?[time range]
+       my $location = "https://$ENV{'SERVER_NAME'}:$ENV{'SERVER_PORT'}/cgi-bin/${origin}?${graph}?${range}";
+       
+       # Send HTTP redirect
+       print "Status: 302 Found\n";
+       print "Location: $location\n";
+       print "Content-type: text/html; charset=UTF-8\n";
+       print "\n"; # End of HTTP headers
+       
+       print "Unsupported origin, request redirected to '$location'";
+       exit;
+}
+
+### Create graphs ###
+# Send HTTP headers
+_start_png_output();
+
+# Graphs are first grouped by their origin.
+# This is because some graph categories require special parameter handling.
+my $graphstatus = '';
+if($origin eq "entropy.cgi") {                         ## entropy.cgi
+       $graphstatus = Graphs::updateentropygraph($range);
+# ------
+
+} elsif($origin eq "hardwaregraphs.cgi") {     ## hardwaregraphs.cgi
+       if($graph eq "hwtemp") {
+               $graphstatus = Graphs::updatehwtempgraph($range);
+       } elsif($graph eq "hwfan") {
+               $graphstatus = Graphs::updatehwfangraph($range);
+       } elsif($graph eq "hwvolt") {
+               $graphstatus = Graphs::updatehwvoltgraph($range);
+       } elsif($graph eq "thermaltemp") {
+               $graphstatus = Graphs::updatethermaltempgraph($range);
+       } elsif($graph =~ "sd?") {
+               $graphstatus = Graphs::updatehddgraph($graph, $range);
+       } elsif($graph =~ "nvme?") {
+               $graphstatus = Graphs::updatehddgraph($graph, $range);
+       } else {
+               $graphstatus = "Unknown graph name.";
+       }
+# ------
+
+} elsif($origin eq "media.cgi") {                      ## media.cgi
+       if ($graph =~ "sd?" || $graph =~ "mmcblk?" || $graph =~ "nvme?n?" || $graph =~ "xvd??" || $graph =~ "vd?" || $graph =~ "md*" ) {
+               $graphstatus = Graphs::updatediskgraph($graph, $range);
+       } else {
+               $graphstatus = "Unknown graph name.";
+       }
+# ------
+
+} elsif($origin eq "memory.cgi") {                     ## memory.cgi
+       if($graph eq "memory") {
+               $graphstatus = Graphs::updatememorygraph($range);
+       } elsif($graph eq "swap") {
+               $graphstatus = Graphs::updateswapgraph($range);
+       } else {
+               $graphstatus = "Unknown graph name.";
+       }
+# ------
+
+} elsif($origin eq "netexternal.cgi") {                ## netexternal.cgi
+       $graphstatus = Graphs::updateifgraph($graph, $range);
+# ------
+
+} elsif($origin eq "netinternal.cgi") {                ## netinternal.cgi
+       if ($graph =~ /wireless/){
+               $graph =~ s/wireless//g;
+               $graphstatus = Graphs::updatewirelessgraph($graph, $range);
+       } else {
+               $graphstatus = Graphs::updateifgraph($graph, $range);
+       }
+# ------
+
+} elsif($origin eq "netother.cgi") {           ## netother.cgi
+       if($graph eq "conntrack") {
+               $graphstatus = Graphs::updateconntrackgraph($range);
+       } elsif($graph eq "fwhits") {
+               $graphstatus = Graphs::updatefwhitsgraph($range);
+       } else {
+               $graphstatus = Graphs::updatepinggraph($graph, $range);
+       }
+# ------
+
+} elsif($origin eq "netovpnrw.cgi") {          ## netovpnrw.cgi
+       if($graph ne "UNDEF") {
+               $graphstatus = Graphs::updatevpngraph($graph, $range);
+       } else {
+               $graphstatus = "Unknown graph name.";
+       }
+# ------
+
+} elsif($origin eq "netovpnsrv.cgi") {         ## netovpnsrv.cgi
+       if ($graph =~ /ipsec-/){
+               $graph =~ s/ipsec-//g;
+               $graphstatus = Graphs::updateifgraph($graph, $range);
+       } else {
+               $graphstatus = Graphs::updatevpnn2ngraph($graph, $range);
+       }
+# ------
+
+} elsif($origin eq "qos.cgi") {                        ## qos.cgi
+       $graphstatus = Graphs::updateqosgraph($graph, $range);
+# ------
+
+} elsif($origin eq "services.cgi") {           ## services.cgi
+       if($graph eq "processescpu") {
+               $graphstatus = Graphs::updateprocessescpugraph($range);
+       } elsif($graph eq "processesmemory") {
+               $graphstatus = Graphs::updateprocessesmemorygraph($range);
+       } else {
+               $graphstatus = "Unknown graph name.";
+       }
+# ------
+
+} elsif($origin eq "system.cgi") {                     ## system.cgi
+       if($graph eq "cpu") {
+               $graphstatus = Graphs::updatecpugraph($range);
+       } elsif($graph eq "cpufreq") {
+               $graphstatus = Graphs::updatecpufreqgraph($range);
+       } elsif($graph eq "load") {
+               $graphstatus = Graphs::updateloadgraph($range);
+       } else {
+               $graphstatus = "Unknown graph name.";
+       }
+# ------
+
+} else {
+       $graphstatus = "Unknown graph origin.";
+}
+
+### Print error message ###
+# Add request parameters for debugging
+if($graphstatus) {
+       $graphstatus = "$graphstatus\n($origin, $graph, $range)";
+       _print_error($graphstatus);
+}
+
+###--- Internal functions ---###
+
+# Send HTTP headers and switch to binary output
+# (don't print any non-image data to STDOUT afterwards)
+sub _start_png_output {
+       print "Cache-Control: no-cache, no-store\n";
+       print "Content-Type: image/png\n";
+       print "\n"; # End of HTTP headers
+       binmode(STDOUT);
+}
+
+# Print error message to PNG output
+sub _print_error {
+       my ($message) = @_;
+       $message = "- Error -\n \n$message";
+
+       # Create new image with the same size as a graph
+       my $img = GD::Image->new($Graphs::image_size{'width'}, $Graphs::image_size{'height'});
+       $img->interlaced('true');
+
+       # Basic colors
+       my $color_background = $img->colorAllocate(255, 255, 255);
+       my $color_border = $img->colorAllocate(255, 0, 0);
+       my $color_text = $img->colorAllocate(0, 0, 0);
+
+       # Background and border
+       $img->setThickness(2);
+       $img->filledRectangle(0, 0, $img->width, $img->height, $color_background);
+       $img->rectangle(10, 10, $img->width - 10, $img->height - 10, $color_border);
+       
+       # Draw message with line-wrap
+       my $textbox = GD::Text::Wrap->new($img,
+               text => $message,
+               width => ($img->width - 50),
+               color => $color_text,
+               align => 'center',
+               line_space => 5,
+               preserve_nl => 1
+       );
+       $textbox->set_font(gdLargeFont);
+       $textbox->draw(25, 25);
+
+       # Get PNG output
+       print $img->png;
+}
index 7dc6b014928e7e66806b43dc347c02eb24ea89e6..fb16be00e9a27e2f99f42aa14bc50b4ca0f02a69 100644 (file)
@@ -60,7 +60,7 @@ our %netsettings = ();
 our %color = ();
 our %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 # File declarations.
 my $settingsfile = "${General::swroot}/guardian/settings";
index f06b0f9238bba29b17ecda2b1b10ded8199d5696..1b316a2a2187091452c4bacb1ffbbe56a9fcf5da 100644 (file)
@@ -88,7 +88,6 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}")
        $mainsettings{'WINDOWWITHHOSTNAME'} = $cgiparams{'WINDOWWITHHOSTNAME'};
        $mainsettings{'PPPUPDOWNBEEP'} = $cgiparams{'PPPUPDOWNBEEP'};
        $mainsettings{'SPEED'} = $cgiparams{'SPEED'};
-       $mainsettings{'THEME'} = $cgiparams{'theme'};
        $mainsettings{'REFRESHINDEX'} = $cgiparams{'REFRESHINDEX'};
        &General::writehash("${General::swroot}/main/settings", \%mainsettings);
        &Lang::reload($cgiparams{'lang'});
@@ -106,12 +105,6 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}")
                $cgiparams{'PPPUPDOWNBEEP'} = 'on';
        }
 
-       if ($mainsettings{'THEME'}) {
-               $cgiparams{'THEME'} = $mainsettings{'THEME'};
-       } else {
-               $cgiparams{'THEME'} = 'ipfire';
-       }
-
        if($mainsettings{'REFRESHINDEX'}) {
                $cgiparams{'REFRESHINDEX'} = $mainsettings{'REFRESHINDEX'};
        } else {
@@ -134,7 +127,6 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'restore defaults'}")
        $cgiparams{'PPPUPDOWNBEEP'} = 'on';
        $cgiparams{'REFRESHINDEX'} = 'off';
        $cgiparams{'SPEED'} = 'on';
-       $cgiparams{'THEME'} = 'ipfire';
 }
 
 $checked{'WINDOWWITHHOSTNAME'}{'off'} = '';
@@ -210,43 +202,6 @@ END
        ;
 }
 
-print <<END
-</select></td></tr>
-</table>
-END
-;
-&Header::closebox();
-&Header::openbox('100%','left',$Lang::tr{'theme'});
-print<<END;
-<table>
-<tr>
-    <td>&nbsp;</td>
-    <td><select name='theme'>
-END
-;
-
-my $dir = "/srv/web/ipfire/html/themes";
-local *DH;
-my ($item, $file);
-my @files;
-
-# Foreach directory create am theme entry to be selected by user
-
-opendir (DH, $dir);
-while ($file = readdir (DH)) {
-       next if ( $file =~ /^\./ );
-       push (@files, $file);
-}
-closedir (DH);
-
-foreach $item (sort (@files)) {
-       if ( "$mainsettings{'THEME'}" eq "$item" ) {
-               print "<option value='$item' selected='selected'>$item</option>\n";
-       } else {
-               print "<option value='$item'>$item</option>\n";
-       }
-}
-
 print <<END
 </select></td></tr>
 </table>
index 5c677d81592b4ad18d64a4166fd6d2f59bcb98fc..813d32f7b5b383368bee5c0e3755bf04a2af6c2f 100644 (file)
@@ -33,7 +33,7 @@ require "${General::swroot}/graphs.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my %sensorsettings = ();
 
index 1c9df5a62884abae74412969593501a11db3734c..d9e9cb0afae5a785bce1704af3b49bf6076241ae 100644 (file)
@@ -40,7 +40,7 @@ our $datafile = "${General::swroot}/main/hosts";              #(our: used in subroutine)
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 our %settings = ();
 #Settings1
index 83d5f52ba918be553e3a3d3fa0a7c504eaaeabd4..85c5ddd86604b7df6899390d6283639ec7fec4bf 100644 (file)
@@ -44,7 +44,7 @@ my %ignored=();
 
 # Read-in main settings, for language, theme and colors.
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 # Get the available network zones, based on the config type of the system and store
 # the list of zones in an array.
index fdf62361d26594f6c91579e02bd1348584aa183f..4ac237d0fe7c007376ac4c2cc8badfd311f837e1 100644 (file)
@@ -70,7 +70,7 @@ $pppsettings{'PROFILENAME'} = 'None';
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my $connstate = &Header::connectionstatus();
 
index 31b4a16d477ebeb863e2df8a1e35d82ae77a3e2b..fd490b08e50e343f1b8d4534516c4c70b9558258 100644 (file)
@@ -36,7 +36,7 @@ require "${General::swroot}/location-functions.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my %cgiparams=();
 
index 5bd70dfb5d9038234d0c930163f09b567eda9528..df3f397a6ab11a846856494de682061e03a5c584 100644 (file)
@@ -42,7 +42,7 @@ my %cgiparams = ();
 &General::readhash("$settingsfile", \%settings);
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::showhttpheaders();
 
index 361bf0432740e7b74b1395f1470fdca0e6efbcbd..e326d65c0ae06d2838b794f3e8050a39ba2534fe 100644 (file)
@@ -27,7 +27,7 @@ require "${General::swroot}/header.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 use POSIX();
 
index e3901b945d8b37b72f40557ea8b846435da46571..a55b805114195d44b78146cf11c7f75b338a1d03 100644 (file)
@@ -405,7 +405,7 @@ my $color=0;
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 if ($showpie != 2 && $pienumber <= 50 && $pienumber != 0) {
        my $mygraph = GD::Graph::pie->new(500, 350);
index 6de4081afbc64a5ed6b32e756620ff2c022424ef..4474a8c595fad8434c580465216b679be04cb421 100644 (file)
@@ -378,7 +378,7 @@ my $color=0;
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 if ($showpie != 2 && $pienumber <= 50 && $pienumber != 0) {
        my $mygraph = GD::Graph::pie->new(500, 350);
index 67fe6aa6e3875e050d29adf6b082dc4f248bc94f..bcaffad7040d6c1e77d9fecf7870dbdf2804fda3 100644 (file)
@@ -378,7 +378,7 @@ use GD::Graph::colour qw( :files );
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 if ($showpie != 2 && $pienumber <= 50 && $pienumber != 0) {
        my $mygraph = GD::Graph::pie->new(500, 350);
index 8918bc6da66e8e112412bf535e833744e28437d1..b9c19aa175ce57659725b7c767f023bf6515f57c 100644 (file)
@@ -25,7 +25,7 @@ require "${General::swroot}/header.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 use POSIX();
 
@@ -351,7 +351,7 @@ END
                print "target='_blank'>$sid</a></td>\n";
        } elsif ($sid >= 2000000 and $sid < 3000000) {
                # Link to emergingthreats if the rule sid is between 2000000 and 3000000.
-               print "<a href='http://doc.emergingthreats.net/$sid' ";
+               print "<a href='https://threatintel.proofpoint.com/sid/$sid' ";
                print "target='_blank'>$sid</a></td>\n";
        } else {
                # No external link for user defined rules
index 1fec05c35b084181802dece075b0f8358890c1a1..e467e1d2efdb8b6d6b89a27a9272a273a1a6202e 100644 (file)
@@ -22,7 +22,7 @@ require "${General::swroot}/header.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 use POSIX();
 
index a064893a1a5cc7b75880a8c3b5c40fac7b63cf7b..5e2c1ff49e09687feaf8529dfe64cf4a539230a9 100755 (executable)
@@ -34,7 +34,7 @@ require "${General::swroot}/header.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 # Path and file of the OVPN connections database.
 my $database = "/var/ipfire/ovpn/clients.db";
index 1d1844e7c4b0ffeee14f41a9cb6667a86d2cb532..8724768ea669ed2c17567038ccacabdad667b86b 100644 (file)
@@ -35,7 +35,7 @@ my $errormessage = '';
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my @shortmonths = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
        'Sep', 'Oct', 'Nov', 'Dec' );
index 2a246ec60e9fbe5a7c5af804057796ed7bc99c9b..f81994f870ccdd658c22cb764240ee99cd5ad00f 100644 (file)
@@ -218,7 +218,7 @@ if ($multifile) {
                                # extract ipv4 and ipv6 address
                                elsif (($_ =~ /SRC\=(([\d]{1,3})(\.([\d]{1,3})){3})/) or ($_ =~ /SRC\=(([0-9a-fA-F]{0,4})(\:([0-9a-fA-F]{0,4})){2,7})/)) {
                                        my $srcaddr=$1;
-                                       my $ccode = $gi->country_code_by_name($srcaddr);
+                                       my $ccode = &Location::Functions::lookup_country_code($srcaddr);
                                        if($ccode eq uc($country)){
                                                # or srcaddr matches country code
                                                $log[$lines] = $_;
index 221ed74ac6ef2574da7e2495e1e7298c70a6fe78..554169ab04bbdc8134fb2253b5ed6e008345dbc7 100644 (file)
@@ -24,7 +24,7 @@ require "${General::swroot}/header.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my $dbdir = "${General::swroot}/urlfilter/blacklists";
 my $logdir = "/var/log/squidGuard";
index 7865a1da694d187453e8589378e0e138c1b6b003..68c516660bf32c040e025fbe04972c78729e2ffd 100755 (executable)
@@ -43,7 +43,7 @@ my $errormessage='';
 #Read all parameters for site
 &Header::getcgihash(\%cgiparams);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 #Show Headers
 &Header::showhttpheaders();
index e22856f1f88130d94eaa0b46dbc3836807048f19..d476e074d63464ba14eb4fc7eeb0df3b8ca427c2 100644 (file)
@@ -33,7 +33,7 @@ my %color = ();
 my %mainsettings = ();
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::showhttpheaders();
 &Header::openpage($Lang::tr{'status information'}, 1, '');
index 5753bc301dfdcb7a74e7c543e077a9c0b30e27ce..f574729eda6da2520b4a644cffe600efc0cf073a 100644 (file)
@@ -33,7 +33,7 @@ require "${General::swroot}/graphs.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 #workaround to suppress a warning when a variable is used only once
 my @dummy = ( ${Header::colourred} );
index 1708b0f3210edb905df93b7565390c21cb56ef34..204365294e1cfa9446402e1f52c8805b4e514d7a 100644 (file)
@@ -33,7 +33,7 @@ require "${General::swroot}/graphs.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my @querry = split(/\?/,$ENV{'QUERY_STRING'});
 $querry[0] = '' unless defined $querry[0];
index 6cec8ff338c06e8458e77796e3d24e08ff53e10c..c8cfc4b115f12f25275c5adf804718e1baf1f116 100644 (file)
@@ -47,7 +47,7 @@ my $errormessage = "";
 my @songs;
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::showhttpheaders();
 
index 781633c1db8bd3b89999e99d912253221bfa81c5..a31502dd0cd1dc0923f37129471a55edc1aebc90 100644 (file)
@@ -38,7 +38,7 @@ my %mainsettings = ();
 my %netsettings=();
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my @graphs=();
 my %dhcpinfo=();
index 3f2fb56cced87df699dffc9b27b8118eb8ad3a06..3c2828fbffa667793e575f41e316cb0021d00415 100644 (file)
@@ -35,7 +35,7 @@ my %mainsettings = ();
 my %netsettings=();
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my @graphs=();
 my @wireless=();
index 6524ad5754bf9610ca5468c3b80b24c34a358e78..cbd2bc228853fddc539aa9e68208aeef4ae4fec3 100755 (executable)
@@ -33,7 +33,7 @@ require "${General::swroot}/graphs.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my @pings=();
 
index cae7770bb0f897b3a3a8aa8f258258373681551e..00ef353373a99963a7d9deb9a9af4b1a6076f423 100755 (executable)
@@ -33,7 +33,7 @@ require "${General::swroot}/graphs.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my @vpns=();
 
index 77c69cddb1faa906d378aec14666ff95479324ea..a53090f0f09a9fdc1eace5b6d8906692b122876a 100755 (executable)
@@ -33,7 +33,7 @@ require "${General::swroot}/graphs.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my %vpnsettings = ();
 &General::readhasharray("${General::swroot}/vpn/config", \%vpnsettings);
@@ -75,7 +75,7 @@ if ( $querry[0] ne ""){
        if (@vpns || %ipsecgraphs) {
                foreach my $name (sort keys %ipsecgraphs) {
                        &Header::openbox('100%', 'center', "$Lang::tr{'ipsec connection'}: $name");
-                       &Graphs::makegraphbox("netovpnsrv.cgi", $ipsecgraphs{$name}, "day");
+                       &Graphs::makegraphbox("netovpnsrv.cgi", "ipsec-$ipsecgraphs{$name}", "day");
                        &Header::closebox();
                }
 
index 68a70d14777f4d07711201e7f08b71c0d636eab6..b98d88529ae4a3813a2fc4eadcd56177a0cd8bd5 100644 (file)
@@ -47,7 +47,7 @@ undef (@dummy);
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 ###
 ### Initialize variables
index 04f13314244b5a1e5e42b9dc3aca8feecc729e7b..d14725504dff61078fe2fa74b93613d6dc604990 100644 (file)
@@ -41,7 +41,7 @@ my %color = ();
 my %mainsettings = ();
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::showhttpheaders();
 &Header::getcgihash(\%fwdfwsettings);
index dd96a92e9280d648dadf608f88bdb7412339ca80..a9e12d23c181a39b5ee1b5813d3de920661f7ff0 100644 (file)
@@ -49,7 +49,7 @@ sub refreshpage{&Header::openbox( 'Waiting', 1, "<meta http-equiv='refresh' cont
 &Header::getcgihash(\%cgiparams);
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::openpage($Lang::tr{'pakfire configuration'}, 1);
 &Header::openbigbox('100%', 'left', '', $errormessage);
index 4b9b7271beaa442101b16866c6d37b1f2b9db9ee..7597bfbc79f34f9392d3df84fcaef51d2696ddd1 100644 (file)
@@ -44,7 +44,7 @@ my $kernel=`/bin/uname -r | /usr/bin/tr -d '\012'`;
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::showhttpheaders();
 
index a63e1c2dfba67b463763bf091705f277698dbe67..b6d71db84d6ce2c46d9ad0fad5bf2590cd171e06 100644 (file)
@@ -39,7 +39,7 @@ my $https_port='444';
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my %proxysettings=();
 my %netsettings=();
index 8211a3ca0c8953c3e8f4a1afd93c30011e2239d9..1825aca118b86e57334e34d8f874496e5e6b7ab5 100644 (file)
@@ -109,7 +109,7 @@ $qossettings{'RED_DEV'} = `cat /var/ipfire/red/iface`;
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my @querry = split(/\?/,$ENV{'QUERY_STRING'});
 $querry[0] = '' unless defined $querry[0];
index 9e566201d80bc9d5346ae06eb2ebe2a75142ffcc..c76f5129ea862454eeaf41547600475487cdbe2d 100644 (file)
@@ -40,7 +40,7 @@ my $errormessage='';
 my $counter = 0;
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &Header::showhttpheaders();
 
index be21007fa837ee4857da4fea0cb93b6d14afafc7..d2d3bdd26b21b7f57a137321bf03fc753d815b5a 100644 (file)
@@ -40,7 +40,7 @@ our $datafile = "${General::swroot}/main/routing";            #(our: used in subroutine)
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 our %settings = ();
 
index 4e0f14a01e5ae2417ac6ff21fb3d09792630df32..72e8ac63e57b95ca9f707bbd073e1151625aa8db 100644 (file)
@@ -48,7 +48,7 @@ my %shares = &config("${General::swroot}/samba/shares");
 
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 ############################################################################################################################
 #################################### Initialisierung von Samba Variablen fr global Settings ###############################
index 36954ba70367c2ae51e4d6aefb1cf94311157bb0..38b89ef1e632afdba4a72c0d276358a94d82048d 100644 (file)
@@ -34,7 +34,7 @@ my %color = ();
 my %mainsettings = ();
 my %netsettings=();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 
 #workaround to suppress a warning when a variable is used only once
index 0548ddddaf98ae7a8600a1d75fcb7a6ec924d40e..67c4797364090ee2a16ba5e20081d35ffa53bc20 100644 (file)
@@ -33,7 +33,7 @@ require "${General::swroot}/graphs.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my @querry = split(/\?/,$ENV{'QUERY_STRING'});
 $querry[0] = '' unless defined $querry[0];
index ea340b6121cfdde5c8fc0d29ce7a5ebfb014167c..f39c0d8da0677110f2de3ab974e63974d911051a 100644 (file)
@@ -88,7 +88,7 @@ our %netsettings = ();
 our %color = ();
 our %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 our %settings = ();
 
index e19bea20a161acf28d449dbea7e3a5748cc06684..cafccf73fa39acd95912e25041fd0cc751391faa 100644 (file)
@@ -32,7 +32,7 @@ require "${General::swroot}/header.pl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my %cgiparams;
 my %pppsettings;
index c94c34ec1e6e8f7b4e607513bf798b7d8d549967..ec7b7522841344e4f688409ea02460418ae0d6d6 100644 (file)
@@ -103,7 +103,7 @@ my @metadata=();
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
 &General::readhash("${General::swroot}/proxy/settings", \%proxysettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 $xlratorsettings{'ACTION'} = '';
 $xlratorsettings{'ENABLE_LOG'} = 'off';
index db442e111d8f861211193976b1f6336acf4f14ac..f200f1002d20b12db6c2f9aa71ae17c3df9014f2 100644 (file)
@@ -54,7 +54,7 @@ my $errormessage = '';
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 
index d5f81cdc153b3236587721c3ca72986abeeda3d7..926f043b87a90db59b80f4456c45982e9463939b 100644 (file)
@@ -47,7 +47,7 @@ my $notice = "";
 my %mainsettings = ();
 my %color = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my %settings = (
        "ENABLE_SMT" => "auto",
index 1f7fde54a6e6681bb6247ea1553ad11e9906d60d..289dc224a8e56e63224abc4293c2a2c5931c449d 100644 (file)
@@ -51,7 +51,7 @@ our $datafile = "/var/ipfire/wakeonlan/clients.conf";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 my %netsettings = ();
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
index 63218a02112acc5d28bd9342abccf3a07ac0b9ae..a7a9881b84c8214cbae6b418dcc7078c3e1e8c27 100644 (file)
@@ -43,7 +43,7 @@ our $datafile = "${General::swroot}/ethernet/wireless";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 our %settings = ();
 our %netsettings = ();
index 575b696d7be5d80cc8001e102e6e980654aa8e76..01dcaeea28bc93c01b752ca5250d7a32d46ed54f 100644 (file)
@@ -54,7 +54,7 @@ my $country = '';
 my $txpower = '';
 
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 &General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
 
 $wlanapsettings{'APMODE'} = 'on';
index b90ea8a41fa2e7267c59148d74288c65b330b408..62f18e3086cfa1c66ad3be5366083ab6d9e7ae45 100644 (file)
@@ -195,17 +195,23 @@ foreach (@nics) {
 ### Evaluate POST parameters ###
 
 if ($cgiparams{"ACTION"} eq $Lang::tr{"save"}) {
-       my %VALIDATE_nic_check = ();
-       my $VALIDATE_error = "";
+       my %VALIDATE_nic_check = (); # array of flags (assigned, restricted/pppoe, vlan, ...) per NIC
+       my $VALIDATE_error = ""; # contains an error message if the config validation failed
 
        # Loop trough all known zones to ensure a complete configuration file is created
        foreach (@Network::known_network_zones) {
                my $uc = uc $_;
-               my $slave_string = "";
+               my $slave_string = ""; # list of interfaces attached to the bridge
                my $zone_mode = $cgiparams{"MODE $uc"};
                my $VALIDATE_vlancount = 0;
                my $VALIDATE_zoneslaves = 0;
 
+               # Each zone can contain up to one bridge and up to one VLAN,
+               # cache their mac addresses to prevent unnecessary changes
+               my $bridge_mac = $ethsettings{"${uc}_MACADDR"};
+               my $vlan_mac = $vlansettings{"${uc}_MAC_ADDRESS"};
+
+               # Clear old configuration
                $ethsettings{"${uc}_MACADDR"} = "";
                $ethsettings{"${uc}_MODE"} = "";
                $ethsettings{"${uc}_SLAVES"} = "";
@@ -236,23 +242,47 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{"save"}) {
                        next;
                }
 
+               # Zone in bridge mode: Always assign a MAC to the bridge
+               if($zone_mode eq "BRIDGE") {
+                       # Ensure that the bridge's cached MAC does not come from a real NIC
+                       # (this could happen if the zone was in default mode before)
+                       foreach (@nics) {
+                               my $nic_mac = $_->[0];
+                               if(Network::is_mac_equal($bridge_mac, $nic_mac)) {
+                                       $bridge_mac = "";
+                                       last;
+                               }
+                       }
+
+                       # Generate random MAC if none was configured
+                       if(! Network::valid_mac($bridge_mac)) {
+                               $bridge_mac = Network::random_mac();
+                       }
+
+                       # Assign the address to the bridge
+                       $ethsettings{"${uc}_MACADDR"} = $bridge_mac;
+               }
+
                foreach (@nics) {
                        my $mac = $_->[0];
                        my $nic_access = $cgiparams{"ACCESS $uc $mac"};
 
                        next unless ($nic_access);
 
+                       # This NIC is to be assigned: check preconditions
                        if ($nic_access ne "NONE") {
                                if ($VALIDATE_nic_check{"RESTRICT $mac"}) { # If this interface is already assigned to RED in PPP mode, throw an error
                                        $VALIDATE_error = $Lang::tr{"zoneconf val ppp assignment error"};
                                        last;
                                }
 
+                               # Enforce bridge mode when you try to assign multiple NICs to a zone
                                if ($zone_mode ne "BRIDGE" && $VALIDATE_zoneslaves > 0 && $nic_access ne "") {
                                        $VALIDATE_error = $Lang::tr{"zoneconf val zoneslave amount error"};
                                        last;
                                }
 
+                               # Mark this NIC as "accessed by zone"
                                $VALIDATE_nic_check{"ACC $mac"} = 1;
                                $VALIDATE_zoneslaves++;
                        }
@@ -265,6 +295,7 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{"save"}) {
 
                                $VALIDATE_nic_check{"NATIVE $mac"} = 1;
 
+                               # Zone in bridge mode: Add NIC to slave list. Otherwise access NIC directly
                                if ($zone_mode eq "BRIDGE") {
                                        $slave_string = "${slave_string}${mac} ";
                                } else {
@@ -279,22 +310,25 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{"save"}) {
                                }
 
                                $VALIDATE_nic_check{"VLAN $mac $vlan_tag"} = 1;
-
-                               if (! looks_like_number($vlan_tag)) {
-                                       last;
-                               }
-                               if ($vlan_tag < 1 || $vlan_tag > 4095) {
+                               
+                               # check VLAN tag range: 1..4094 (0, 4095 are reserved)
+                               unless (looks_like_number($vlan_tag) && ($vlan_tag >= 1) && ($vlan_tag <= 4094)) {
+                                       $VALIDATE_error = $Lang::tr{"zoneconf val vlan tag range error"};
                                        last;
                                }
 
-                               my $rnd_mac = &Network::random_mac();
+                               # Generate random MAC if none was configured
+                               if(! Network::valid_mac($vlan_mac)) {
+                                       $vlan_mac = Network::random_mac();
+                               }
 
                                $vlansettings{"${uc}_PARENT_DEV"} = $mac;
                                $vlansettings{"${uc}_VLAN_ID"} = $vlan_tag;
-                               $vlansettings{"${uc}_MAC_ADDRESS"} = $rnd_mac;
+                               $vlansettings{"${uc}_MAC_ADDRESS"} = $vlan_mac; # Generated MAC
 
+                               # Zone in bridge mode: Add VLAN to slave list
                                if ($zone_mode eq "BRIDGE") {
-                                       $slave_string = "${slave_string}${rnd_mac} ";
+                                       $slave_string = "${slave_string}${vlan_mac} ";
                                }
 
                                $VALIDATE_vlancount++; # We can't allow more than one VLAN per zone
@@ -311,8 +345,6 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{"save"}) {
                if ($zone_mode eq "BRIDGE") {
                        $ethsettings{"${uc}_MODE"} = "bridge";
                        $ethsettings{"${uc}_SLAVES"} = $slave_string;
-               } elsif ($zone_mode eq "MACVTAP") {
-                       $ethsettings{"${uc}_MODE"} = "macvtap";
                }
 
                # STP options
@@ -389,8 +421,6 @@ foreach (@zones) {
                $mode_selected{"DEFAULT"} = "selected";
        } elsif ($zone_mode eq "bridge") {
                $mode_selected{"BRIDGE"} = "selected";
-       } elsif ($zone_mode eq "macvtap") {
-               $mode_selected{"MACVTAP"} = "selected";
        }
 
        print <<END
@@ -398,7 +428,6 @@ foreach (@zones) {
                        <select name="MODE $uc" data-zone="$uc" onchange="changeZoneMode(this)">
                                <option value="DEFAULT" $mode_selected{"DEFAULT"}>$Lang::tr{"zoneconf nicmode default"}</option>
                                <option value="BRIDGE" $mode_selected{"BRIDGE"}>$Lang::tr{"zoneconf nicmode bridge"}</option>
-                               <option value="MACVTAP" $mode_selected{"MACVTAP"}>$Lang::tr{"zoneconf nicmode macvtap"}</option>
                        </select>
                </td>
 END
@@ -486,7 +515,7 @@ END
                                <option value="NATIVE" $access_selected{"NATIVE"}>$Lang::tr{"zoneconf access native"}</option>
                                <option value="VLAN" $access_selected{"VLAN"} $vlan_disabled>$Lang::tr{"zoneconf access vlan"}</option>
                        </select>
-                       <input type="number" class="vlanid" id="TAG-$uc-$mac" name="TAG $uc $mac" min="1" max="4095" value="$zone_vlan_id" required $field_disabled>
+                       <input type="number" class="vlanid" id="TAG-$uc-$mac" name="TAG $uc $mac" min="1" max="4094" value="$zone_vlan_id" required $field_disabled>
                </td>
 END
 ;
diff --git a/html/html/include/rrdimage.js b/html/html/include/rrdimage.js
new file mode 100644 (file)
index 0000000..e7ee4c7
--- /dev/null
@@ -0,0 +1,122 @@
+/*#############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+#############################################################################*/
+
+// "onclick" event handler for graph time range select button
+// buttonObj: reference to the button
+function rrdimage_selectRange(buttonObj) {
+       if(! (buttonObj && ('range' in buttonObj.dataset))) {
+               return; //required parameters are missing
+       }
+
+       // Get selected time range from button
+       const range = buttonObj.dataset.range;
+       
+       // Get surrounding div box and select new range 
+       let graphBox = $(buttonObj).closest('div');
+       _rrdimg_setRange(graphBox, range);
+}
+
+// Document loaded: Process all graphs, start reload timers
+$(function() {
+       $('div.rrdimage').each(function() {
+               let graphBox = $(this);
+               _rrdimg_setRange(graphBox, graphBox.data('defaultRange'), true);
+       });
+});
+
+//--- Internal functions ---
+
+// Set or update graph time range, start automatic reloading
+// graphBox: jQuery object, reference to graph div box
+// range: time range (day, hour, ...)
+// initMode: don't immediately reload graph, but force timers and attributes update
+function _rrdimg_setRange(graphBox, range, initMode = false) {
+       if(! ((graphBox instanceof jQuery) && (graphBox.length === 1))) {
+               return; //graphBox element missing
+       }
+
+       // Check range parameter, default to "day" on error
+       if(! ["hour", "day", "week", "month", "year"].includes(range)) {
+               range = "day";
+       }
+
+       // Check if the time range is changed
+       if((graphBox.data('range') !== range) || initMode) {
+               graphBox.data('range', range); //Store new range
+               
+               // Update button highlighting
+               graphBox.find('button').removeClass('selected');
+               graphBox.find(`button[data-range="${range}"]`).addClass('selected');
+       }
+
+       // Clear pending reload timer to prevent multiple image reloads
+       let timerId = graphBox.data('reloadTimer');
+       if(timerId !== undefined) {
+               window.clearInterval(timerId);
+               graphBox.removeData('reloadTimer');
+       }
+
+       // Determine auto reload interval (in seconds),
+       // interval = 0 disables auto reloading by default
+       let interval = 0;
+       switch(range) {
+               case 'hour':
+                       interval = 60;
+                       break;
+
+               case 'day':
+               case 'week':
+                       interval = 300;
+                       break;
+       }
+
+       // Start reload timer and store reference
+       if(interval > 0) {
+               timerId = window.setInterval(function(graphRef) {
+                       _rrdimg_reload(graphRef);
+               }, interval * 1000, graphBox);
+               graphBox.data('reloadTimer', timerId);
+       }
+
+       // Always reload image unless disabled by init mode
+       if(! initMode) {
+               _rrdimg_reload(graphBox);
+       }
+}
+
+// Reload graph image, add timestamp to prevent caching
+// graphBox: jQuery object (graph element must be valid)
+function _rrdimg_reload(graphBox) {
+       const origin = graphBox.data('origin');
+       const graph = graphBox.data('graph');   
+       const timestamp = Date.now();
+
+       // Get user selected range or fall back to default
+       let range = graphBox.data('range');
+       if(! range) {
+               range = graphBox.data('defaultRange');
+       }
+
+       // Generate new image URL with timestamp
+       const imageUrl = `/cgi-bin/getrrdimage.cgi?origin=${origin}&graph=${graph}&range=${range}&timestamp=${timestamp}`;
+
+       // Get graph image and set new URL
+       graphBox.children('img').first().attr('src', imageUrl);
+}
diff --git a/html/html/include/snortupdateutility.js b/html/html/include/snortupdateutility.js
deleted file mode 100644 (file)
index 1075051..0000000
+++ /dev/null
@@ -1,744 +0,0 @@
-/*
-File Info:     utility.js - JavaScript library
-
-Author:                Drew S. Dupont
-
-Date:          2/26/2003 - 8/12/2004 (or present day)
-
-Description:   Utility functions in JavaScript
-               Drew S. Dupont <dsdupont@alumni.indiana.edu>
-*/
-// Show/Hide HTML Span
-function showHideHTML(id, content) {
-       // Browser variables
-       var ie45, ns6, ns4, dom = false;
-
-       // Basic browser parse
-       if (navigator.appName == "Microsoft Internet Explorer") {
-               ie45 = parseInt(navigator.appVersion) >= 4;
-       } else if (navigator.appName == "Netscape") {
-               ns6 = parseInt(navigator.appVersion) >= 5;
-               ns4 = parseInt(navigator.appVersion) < 5;
-       }
-       dom = ie45 || ns6;
-
-       // Return if using an old Netscape browser
-       if(ns4) return;
-
-       // Check for type of call supported
-       el = document.all ? document.all[id] : dom ? document.getElementById(id) : document.layers[id];
-
-       // Check if content to be "switched" is ""
-       if (content == "") {
-               // Return old content and replace with ""
-               content = el.innerHTML;
-               el.innerHTML = "";
-       } else {
-               // Replace current content with new content and return ""
-               el.innerHTML = content;
-               content = "";
-       }
-
-       // Return content (either old or "")
-       return content;
-}
-
-// Check for special chars
-function checkForSpecialChars(field, alphaStart, specialCheckChars) {
-       // Local vars
-       var alphaStartChars = /^[a-zA-Z]/;
-       var noSpecialChars = /([^a-zA-Z0-9 _,?!':;\r\t\n\/\\\-\.#@]+)/;
-
-       // Check if should start with an alpha char
-       if (alphaStart) {
-               // Make sure starts with a alpha char
-               if (alphaStartChars.test(field.value)) {
-                       // Check for special chars
-                       if (noSpecialChars.test(field.value)) {
-                               // Return true
-                               return true;
-                       } else {
-                               // Check for specialCheckChars
-                               if (specialCheckChars && (specialCheckChars.test(field.value))) {
-                                       // Return true
-                                       return true;
-                               } else {
-                                       // Return false
-                                       return false;
-                               }
-                       }
-               } else {
-                       // Return true
-                       return true;
-               }
-       } else {
-               // Check if contains any special chars
-               if (noSpecialChars.test(field.value)) {
-                       // Return true
-                       return true;
-               } else {
-                       // Check for specialCheckChars
-                       if (specialCheckChars && (specialCheckChars.test(field.value))) {
-                               // Return true
-                               return true;
-                       } else {
-                               // Return false
-                               return false;
-                       }
-               }
-       }
-} // End checkForSpecialChars
-
-// Launch help
-function launchHelp(helpSrc) {
-       helpWindow = window.open(helpSrc, "helpWindow", "resizable=yes,menubar=no,statusbar=no,titlebar=no,scrollbars=yes,width=400,height=400")
-       helpWindow.moveTo(25, 25);
-       helpWindow.focus();
-}
-
-// Image On
-function imageOn(imageName)    {
-       document[imageName].src = eval(imageName + "_over.src");
-}
-
-// Image Off
-function imageOff(imageName) {
-       document[imageName].src = eval(imageName + ".src");
-}
-
-// Image Down
-function imageDown(imageName) {
-       document[imageName].src = eval(imageName + "_down.src");
-}
-
-// Image button On
-function imageButtonOn(item, imageName)        {
-       item.src = eval(imageName + "_over.src");
-}
-
-// Image button Off
-function imageButtonOff(item, imageName) {
-       item.src = eval(imageName + ".src");
-}
-
-// Image button Down
-function imageButtonDown(item, imageName) {
-       item.src = eval(imageName + "_down.src");
-}
-
-// changeStatus
-function changeStatus(message) {
-       // Set window status
-       window.status = message;
-
-       // Return true
-       return true;
-} // End changeStatus
-
-// isNumeric function
-function isNumeric(num) {
-       // Boolean var
-       var bolValidNum = true;
-       var digits = "1234567890";
-       var len = num.length;
-
-       // Loop over num
-       for (i = 0; i < len; ++i) {
-               numSub = num.substring(i, i + 1);
-
-               // Test for numeric match
-               if (digits.indexOf(numSub) == -1) {
-                       bolValidNum = false;
-               }
-       }
-
-       // Return boolean var
-       return bolValidNum;
-} // End isNumeric
-
-// Check for numeric and display nice error
-function checkNumeric(field, message) {
-       // Is it valid
-       if (!isNumeric(field.value)) {
-               alert(message);
-               field.focus();
-       }
-} // End checkNumeric
-
-// Function getInt which return numeric value of passed in string
-function getInt(str, i, minlength, maxlength) {
-       for (x = maxlength; x >= minlength; --x) {
-               var token = str.substring(i, i + x);
-
-               // Check for numeric
-               if (isNumeric(token)) {
-                       return token;
-               }
-       }
-
-       // Return null
-       return null;
-}
-
-// Function dateCheck, requires global err variable for passing error messages 
-// and requires the isNumeric function
-function dateCheck(date, humanname, dateFormat) {
-       // Date validation
-       var date_s = date;
-
-       // If no dateFormat, then set one
-       if (dateFormat == null) {
-               format = "mm/dd/yyyy";
-       } else {
-               format = dateFormat;
-       }
-
-       var date_err = 0; // Possible values are 0, 1
-       var date_year_err = 0; // Possible values are 0, 1
-       var date_month_err = 0; // Possible values are 1-12
-       var date_day_err = 0; // Possible values are 0, 1, 2, 3, 4
-       var i_date_s = 0;
-       var i_format = 0;
-       var err = "";
-       var c = "";
-       var token = "";
-       var token2 = "";
-       var x, y;
-       var year = 0;
-       var month = 0;
-       var date = 0;
-       var bYearProvided = false;
-       var MONTH_NAMES = new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
-
-       // Trim the leading spaces from the string
-       while (date_s.charAt(0) == ' ') {
-               date_s = date_s.slice(1);
-       }
-
-       while (i_format < format.length) {
-               // Get next token from format string
-               c = format.charAt(i_format);
-               token = "";
-
-               while ((format.charAt(i_format) == c) && (i_format < format.length)) {
-                       token += format.charAt(i_format);
-                       ++i_format;
-               }
-
-               // Extract contents of value based on format token
-               if ((token == "yyyy") || (token == "yy") || (token == "y")) {
-                       if (token == "yyyy") { x = 4; y = 4; } // 4-digit year
-                       if (token == "yy") { x = 2; y = 2; } // 2-digit year
-                       if (token == "y") { x = 2; y = 4; } // 2-or-4-digit year
-
-                       year = getInt(date_s, i_date_s, x, y);
-                       bYearProvided = true;
-
-                       if ((year == null) || (year.length != token.length)) {
-                               date_year_err = 1;
-                       }
-
-                       i_date_s += year.length;
-               } else {
-                       if (token == "mmm") { // Month name
-                               month = 0;
-
-                               for (var i = 0; i < MONTH_NAMES.length; ++i) {
-                                       var month_name = MONTH_NAMES[i];
-
-                                       if (date_s.substring(i_date_s, (i_date_s + month_name.length)).toLowerCase() == month_name.toLowerCase()) {
-                                               month = i + 1;
-
-                                               if (month > 12) {
-                                                       month -= 12;
-                                               }
-
-                                               i_date_s += month_name.length;
-                                               break;
-                                       }
-                               }
-
-                               if ((month == 0) || (month < 1) || (month > 12)) {
-                                       date_month_err = 1;
-                               }
-                       } else {
-                               if ((token == "mm") || (token == "m")) {
-                                       x = token.length; y = 2;
-                                       month = getInt(date_s, i_date_s, x, y);
-
-                                       if ((month == null) || (month < 1) || (month > 12)) {
-                                               date_month_err = 1;
-                                       }
-
-                                       i_date_s += month.length;
-                               } else {
-                                       if (token=="dd" || token=="d") {
-                                               x = token.length; y = 2;
-                                               date = getInt(date_s, i_date_s, x, y);
-
-                                               if ((date == null) || (date < 1) || (date > 31)) {
-                                                       date_day_err = 1;
-                                               }
-
-                                               i_date_s += date.length;
-                                       } else {
-                                               if (date_s.substring(i_date_s, (i_date_s + token.length)) != token) {
-                                                       date_err = 1;
-                                               } else {
-                                                       i_date_s += token.length;
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-
-       // If there are any trailing characters left in the date_s, it doesn't match
-       if (i_date_s != date_s.length) {
-               date_err = 1;
-       }
-
-       // Is date valid for month?
-       if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
-               if (date > 30) {
-                       date_day_err = 2;
-               }
-       } else {
-               if (month == 2) {
-                       // Check for leap year
-                       if ((((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0)) {
-                               // Leap year
-                               if (date > 29) {
-                                       date_day_err = 3
-                               }
-                       } else {
-                               if (date > 28) {
-                                       date_day_err = 4;
-                               }
-                       }
-               } else {
-                       if (date > 31) {
-                               date_day_err = 1;
-                       }
-               }
-       }
-
-       // Add to the error message, if needed
-       if (date_err != 0) {
-               err += "\n - The " + humanname + " must be a valid date in the format " + format + ".";
-       }
-
-       // Add to the error message, if needed
-       if (date_month_err != 0) {
-               err += "\n - The month must be between 1-12.";
-       }
-
-       // Add to the error message, if needed
-       if (date_year_err != 0) {
-               err += "\n - The " + humanname + " must have a valid year.";
-       }
-
-       // Add to the error message, if needed
-       if (date_day_err != 0) {
-               switch (date_day_err) {
-                       case 1:
-                               err += "\n - The month you entered in the " + humanname + " can only have between 1 and 31 days.";
-                               break;
-                       case 2:
-                               err += "\n - The month you entered in the " + humanname + " can only have between 1 and 30 days.";
-                               break;
-                       case 3:
-                               err += "\n - The month you entered in the " + humanname + " can only have between 1 and 29 days in a Leap Year.";
-                               break;
-                       default:
-                               err += "\n - The month you entered in the " + humanname + " can only have between 1 and 28 days in a non-Leap Year.";
-                               break;
-               }
-       }
-
-       return err;
-} // End dateCheck
-
-// Compares two MM/DD/YYY dates for less than (-1), equal to (0), or 
-// greater than (1)
-function dateCompare(date1, date2) {
-       var localDate1 = new Date(date1.substring(6,10), date1.substring(0,2), date1.substring(3,5));
-       var localDate2 = new Date(date2.substring(6,10), date2.substring(0,2), date2.substring(3,5));
-
-       // Greater than
-       if (localDate1.getTime() > localDate2.getTime()) {
-               return 1;
-       } else {
-               // Less than
-               if (localDate1.getTime() < localDate2.getTime()) {
-                       return -1;
-               } else {
-                       // Equal
-                       return 0;
-               }
-       }
-} // End dateCompare
-
-// All-purpose form validation script
-function checkForm(dataForm) {
-       var msg = "";
-       var stripBlanksStart = /^\s+/g;
-       var stripBlanksEnd = /\s+$/g;
-       var squeezeBlanks = /\s+/g;
-       var stripNonNumbers = /\D+/g;
-       var stripNotDollars = /[^0-9\.]/g;
-       var noSpaces = /\s+/g;
-       var allNumbers = /^\d+$/;
-       var zipCodeCheck = /^(\d{5})$|^(\d{5}-\d{4})$/;
-       var passwordNumbers = /\d{1,}/;
-       var passwordLetters = /\D{1,}/;
-       var emailPattern = /^[a-zA-Z0-9]([a-zA-Z0-9_\-\.]*)@([a-zA-Z0-9_\-\.]*)(\.[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,2})$/i;
-       var replaceSeps = /[-,\.\/]/g;
-       var time24Format = /^(([0-1]?\d)|(2[0-3])):[0-5]\d(:([0-5]\d))?/;
-       var time12Format = /^(\d|0\d|1[0-2]):[0-5]\d(:[0-5]\d)?( (A|P)\.?M\.?)?/;
-       var ipNetworkAddress = /^((\d{1,2}|[1]\d{2}|2[0-4]\d|25[0-5])(\.(\d{1,2}|[1]\d{2}|2[0-4]\d|25[0-5])){3}){1}((\/(0\.0\.0\.0|128\.0\.0\.0|192\.0\.0\.0|224\.0\.0\.0|240\.0\.0\.0|248\.0\.0\.0|252\.0\.0\.0|254\.0\.0\.0|(255\.(0\.0\.0|128\.0\.0|192\.0\.0|224\.0\.0|240\.0\.0|248\.0\.0|252\.0\.0|254\.0\.0|(255\.(0\.0|128\.0|192\.0|224\.0|240\.0|248\.0|252\.0|254\.0|(255\.(0|128|192|224|240|248|252|254|255))))))))|(\/(\d|[1-2]\d|3[0-2]))){0,1}$/;
-       var ipNetworkPort = /^(\d{1,4}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5]){1}((\:|\-)(\d{1,4}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])){0,1}$/;
-       var passwordLength = 6;
-       var error_fields = "";
-       var errors = "";
-
-       // Loop over form elements
-       for (var i = 0; i < dataForm.length; ++i) {
-               var element = dataForm.elements[i];
-
-               // Check for select box
-               if (element.selectbox) {
-                       // Check for required
-                       if (element.required) {
-                               // Check for value
-                               if (element.options[element.selectedIndex].value == "") {
-                                       error_fields += "\n - " + element.humanname + " requires a selection.";
-                               }
-                       }
-                       continue;
-               }
-
-               // Strip the leading and trailing blanks
-               element.value = element.value.replace(stripBlanksStart, '');
-               element.value = element.value.replace(stripBlanksEnd, '');
-
-               // If it is required and is empty, alert
-               if (element.required && (!element.value.length)) {
-                       error_fields += "\n - " + element.humanname + " is required.";
-                       continue;
-               } else {
-                       // If it isn't required and doesn't have any length, skip it
-                       if ((! element.required) && (! element.value.length)) {
-                               continue;
-                       }
-               }
-
-               // Check for special characters
-               if (element.checkspecialchars) {
-                       if (checkForSpecialChars(element, element.alphaStart, element.specialChars)) {
-                               error_fields += "\n - " + element.humanname + " contains invalid characters.";
-                               continue;
-                       }
-               }
-               
-               // Convert to uppercase if necessary
-               if (element.uppercase) {
-                       element.value = element.value.toUpperCase();
-               }
-
-               // Convert to uppercase if necessary
-               if (element.lowercase) {
-                       element.value = element.value.toLowerCase();
-               }
-
-               // UCFirst if necessary
-               if (element.ucfirst) {
-                       // Squeeze the blanks
-                       rs = element.value.replace(squeezeBlanks, ' ');
-                       dsegs = rs.split(' ');
-                       element.value = "";
-
-                       // Loop over chars
-                       for (j = 0; j < dsegs.length; ++j) {
-                               if (dsegs[j].length > 1) {
-                                       fl = dsegs[j].substr(0, 1);
-                                       fl = fl.toUpperCase();
-                                       rn = dsegs[j].substr(1);
-                                       rn = rn.toLowerCase();
-                                       dsegs[j] = fl + rn;
-                               }
-
-                               // Check for first value
-                               element.value = j ? element.value + ' ' + dsegs[j] : dsegs[j];
-                       }
-               }
-
-               // Check for equality test
-               if (element.equalto) {
-                       // Check for truevalue and use if found, otherwise use value
-                       var elementValue1 = element.truevalue ? element.truevalue : element.value;
-                       var elementValue2 = element.equaltovalue.truevalue ? element.equaltovalue.truevalue : element.equaltovalue.value;
-
-                       // Check for value equality
-                       if (elementValue1 != elementValue2) {
-                               error_fields +="\n - " + element.humanname + " is not the same as " + element.equaltovalue.humanname;
-                               continue;
-                       }
-               }
-
-               // Check for less than
-               if (element.lessthan) {
-                       // Check for truevalue and use if found, otherwise use value
-                       var elementValue1 = element.truevalue ? element.truevalue : element.value;
-                       var elementValue2 = element.lessthanvalue.truevalue ? element.lessthanvalue.truevalue : element.lessthanvalue.value;
-
-                       // Check for values
-                       if ((elementValue1 != '') && (elementValue2 != '')) {
-                               // Check for value less than
-                               if (elementValue1 >= elementValue2) {
-                                       error_fields +="\n - " + element.humanname + " must be less than " + element.lessthanvalue.humanname;
-                                       continue;
-                               }
-                       }
-               }
-
-               // Check for less than equalto
-               if (element.lessthanequalto) {
-                       // Check for truevalue and use if found, otherwise use value
-                       var elementValue1 = element.truevalue ? element.truevalue : element.value;
-                       var elementValue2 = element.lessthanequaltovalue.truevalue ? element.lessthanequaltovalue.truevalue : element.lessthanequaltovalue.value;
-
-                       // Check for values
-                       if ((elementValue1 != '') && (elementValue2 != '')) {
-                               // Check for value less than equalto
-                               if (elementValue1 > elementValue2) {
-                                       error_fields +="\n - " + element.humanname + " must be less than or equal to " + element.lessthanequaltovalue.humanname;
-                                       continue;
-                               }
-                       }
-               }
-
-               // Check for greater than
-               if (element.greaterthan) {
-                       // Check for truevalue and use if found, otherwise use value
-                       var elementValue1 = element.truevalue ? element.truevalue : element.value;
-                       var elementValue2 = element.greaterthanvalue.truevalue ? element.greaterthanvalue.truevalue : element.greaterthanvalue.value;
-
-                       // Check for values
-                       if ((elementValue1 != '') && (elementValue2 != '')) {
-                               // Check for value greater than
-                               if (elementValue1 <= elementValue2) {
-                                       error_fields +="\n - " + element.humanname + " must be greater than " + element.greaterthanvalue.humanname;
-                                       continue;
-                               }
-                       }
-               }
-
-               // Check for greater than equalto
-               if (element.greaterthanequalto) {
-                       // Check for truevalue and use if found, otherwise use value
-                       var elementValue1 = element.truevalue ? element.truevalue : element.value;
-                       var elementValue2 = element.greaterthanequaltovalue.truevalue ? element.greaterthanequaltovalue.truevalue : element.greaterthanequaltovalue.value;
-
-                       // Check for values
-                       if ((elementValue1 != '') && (elementValue2 != '')) {
-                               // Check for value greater than equalto
-                               if (elementValue1 < elementValue2) {
-                                       error_fields +="\n - " + element.humanname + " must be greater than or equal to " + element.greaterthanequaltovalue.humanname;
-                                       continue;
-                               }
-                       }
-               }
-
-               // Check a price (sort of)
-               if (element.price) {
-                       // Strip out currency stuff
-                       element.value = element.value.replace(stripNotDollars, '');
-                       continue;
-               }
-
-               // Check a telephone number
-               if (element.telephone) {
-                       // Strip out parens and spaces
-                       rs = element.value.replace(stripNonNumbers, '');
-
-                       if (rs.length == 7) {
-                               element.value = rs.substr(0, 3) + "-" + rs.substr(3, 4);
-                       } else {
-                               if (rs.length == 10) {
-                                       element.value = rs.substr(0, 3) + "-" + rs.substr(3, 3) + "-" + rs.substr(6, 4);
-                               } else { 
-                                       error_fields += "\n - " + element.humanname + " is an invalid telephone number.";
-                               }
-                       }
-                       continue;
-               }
-
-               // Check a zip code
-               if (element.zipcode) {
-                       if (!zipCodeCheck.test(element.value)) {
-                               error_fields +="\n - " + element.humanname + " is an invalid zipcode.";
-                       }
-                       continue;
-               }
-
-               // Check a password (sort of)
-               if (element.password) {
-                       if (element.value.length < passwordLength) {
-                               error_fields += "\n - " + element.humanname + " is too short";
-                               error_fields += "\n      Minimum length is " + passwordLength + " characters.";
-                               continue;
-                       }
-
-                       if (!passwordNumbers.test(element.value)) {
-                               error_fields += "\n - " + element.humanname + " must contain at least one number.";
-                               continue;
-                       }
-
-                       if (!passwordLetters.test(element.value)) {
-                               error_fields += "\n - " + element.humanname + " must contain at least one letter.";
-                               continue;
-                       }
-               }
-
-               // Check for all numbers
-               if (element.numeric) {
-                       if (!allNumbers.test(element.value)) {
-                               error_fields += "\n - " + element.humanname + " is not numeric.";
-                       }
-                       continue;
-               }
-
-               // Check an email address for validity
-               if (element.email) {
-                       element.value = element.value.replace(noSpaces, '');
-
-                       if (!emailPattern.test(element.value)) {
-                               error_fields += "\n - " + element.humanname + " is not a valid email address.";
-                       }
-                       continue;
-               }
-
-               // Check a date
-               if (element.date) {
-                       error_fields += dateCheck(element.value, element.humanname, element.format);
-                       continue;
-               }
-
-               // Check a time
-               if (element.time) {
-                       // Check for 24 hour time
-                       if (element.time24) {
-                               // Check for valid
-                               if (!time24Format.test(element.value)) {
-                                       error_fields += "\n - " + element.humanname + " is not a valid 24 hour time.";
-                               }
-                       } else {
-                               // Check for valid
-                               if (!time12Format.test(element.value)) {
-                                       error_fields += "\n - " + element.humanname + " is not a valid 12 hour time.";
-                               }
-                       }
-                       continue;
-               }
-
-               // Check the lengths
-               if (element.minlen && (element.value.length < element.minlen)) {
-                       error_fields += "\n - " + element.humanname + " is too short";
-                       error_fields += "\n      Minimum length is " + element.minlen + " characters.";
-                       continue;
-               }
-
-               if (element.maxlen && (element.value.length > element.maxlen)) {
-                       error_fields +="\n - " + element.humanname + " is too long";
-                       error_fields +="\n      Maximum length is " + element.maxlen + " characters.";
-                       continue;
-               }
-
-               // Check for ip/network address
-               if (element.ipnetworkaddress) {
-                       if (!ipNetworkAddress.test(element.value)) {
-                               error_fields +="\n - " + element.humanname + " is not a valid ip/network address";
-                       }
-                       continue;
-               }
-
-               // Check for ip/network port
-               if (element.ipnetworkport) {
-                       if (!ipNetworkPort.test(element.value)) {
-                               error_fields +="\n - " + element.humanname + " is not a valid ip/network port";
-                       } else {
-                               var searchChar = "";
-                               var portArray = "";
-
-                               if (element.value.indexOf(":") > -1) {
-                                       searchChar = ":";
-                               } else if (element.value.indexOf("-") > -1) {
-                                       searchChar = "-";
-                               }
-                               
-                               if (searchChar != '') {
-                                       portArray = element.value.split(searchChar);
-
-                                       if (portArray.length == 2) {
-                                               if (parseInt(portArray[0]) > parseInt(portArray[1])) {
-                                                       error_fields +="\n - " + element.humanname + " can not have a start port greater than an end port";
-                                               }
-                                       }
-                               }
-                       }
-                       continue;
-               }
-       }
-
-       // Check for any errors
-       if (error_fields == "") {
-               return true;
-       } else {
-               msg = "The following fields have errors:\n";
-               msg += error_fields;
-               alert(msg);
-               return false;
-       }
-}
-
-// Clear data
-function clearData(field, data) {
-       // Check if they equal
-       if (field.value == data) {
-               // Clear data
-               field.value = '';
-       }
-}
-
-// Set empty data
-function setEmptyData(field, data) {
-       // Check if they equal
-       if (! field.value.length) {
-               // Clear data
-               field.value = data;
-       }
-}
-
-// Trim whitespace from beginning and end
-function trim(data) {
-       var objRegExp = /^(\s*)$/;
-
-       // Check for all spaces
-       if (objRegExp.test(data)) {
-               data = data.replace(objRegExp, '');
-
-               if (data.length == 0)
-                       return data;
-       }
-
-       // Check for leading & trailing spaces
-       objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
-
-       if (objRegExp.test(data)) {
-               // Remove leading and trailing whitespace characters
-               data = data.replace(objRegExp, '$2');
-       }
-
-       return data;
-}
diff --git a/html/html/themes/darkdos/images/IPFire.png b/html/html/themes/darkdos/images/IPFire.png
deleted file mode 100644 (file)
index ec56b7a..0000000
Binary files a/html/html/themes/darkdos/images/IPFire.png and /dev/null differ
diff --git a/html/html/themes/darkdos/images/b1.gif b/html/html/themes/darkdos/images/b1.gif
deleted file mode 100644 (file)
index 123ff91..0000000
Binary files a/html/html/themes/darkdos/images/b1.gif and /dev/null differ
diff --git a/html/html/themes/darkdos/images/b2.gif b/html/html/themes/darkdos/images/b2.gif
deleted file mode 100644 (file)
index 0172874..0000000
Binary files a/html/html/themes/darkdos/images/b2.gif and /dev/null differ
diff --git a/html/html/themes/darkdos/images/b3.gif b/html/html/themes/darkdos/images/b3.gif
deleted file mode 100644 (file)
index 8c8fba3..0000000
Binary files a/html/html/themes/darkdos/images/b3.gif and /dev/null differ
diff --git a/html/html/themes/darkdos/images/b4.gif b/html/html/themes/darkdos/images/b4.gif
deleted file mode 100644 (file)
index 5964fa7..0000000
Binary files a/html/html/themes/darkdos/images/b4.gif and /dev/null differ
diff --git a/html/html/themes/darkdos/images/b5.gif b/html/html/themes/darkdos/images/b5.gif
deleted file mode 100644 (file)
index a032242..0000000
Binary files a/html/html/themes/darkdos/images/b5.gif and /dev/null differ
diff --git a/html/html/themes/darkdos/images/b6.gif b/html/html/themes/darkdos/images/b6.gif
deleted file mode 100644 (file)
index ed1781c..0000000
Binary files a/html/html/themes/darkdos/images/b6.gif and /dev/null differ
diff --git a/html/html/themes/darkdos/images/spacer.gif b/html/html/themes/darkdos/images/spacer.gif
deleted file mode 100644 (file)
index 5bfd67a..0000000
Binary files a/html/html/themes/darkdos/images/spacer.gif and /dev/null differ
diff --git a/html/html/themes/darkdos/include/colors.txt b/html/html/themes/darkdos/include/colors.txt
deleted file mode 100644 (file)
index 6efefc5..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-color1=#CD0000
-color2=#FF0000
-color3=#CD0000
-color4=#FA1818
-color5=#CD0000
-color6=#FF0000
-color7=#FF2424
-color8=#FF5050
-color9=#EE0F0F
-color10=#EE0000
-color11=#0000FF
-color12=#00FF00
-color13=#FF0000
-color14=#F32020
-color15=#CCCCCC
-color16=#40E0D0
-color17=#90EE90
-color18=#F4A460
-color19=#EAE9EE
-color20=#1C1C1C
-color21=#CD6600
-color22=#4F4F4F
-color23=#FF00FF
-color24=#6464FF
-color25=#FF6464
diff --git a/html/html/themes/darkdos/include/functions.pl b/html/html/themes/darkdos/include/functions.pl
deleted file mode 100644 (file)
index ed3f546..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-#!/usr/bin/perl
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-sub showmenu() {
-    print <<EOF
-               <div id="menu">
-                       <ul>
-EOF
-;
-    foreach my $k1 ( sort keys %$menu ) {
-       if (! $menu->{$k1}{'enabled'}) {
-           next;
-       }
-       my $link = getlink($menu->{$k1});
-       if ($link eq '') {
-           next;
-       }
-       if (! is_menu_visible($link)) {
-           next;
-       }
-       if ($menu->{$k1}->{'selected'}) {
-           print "<li><a href=\"$link\" class=\"active\">$menu->{$k1}{'caption'}</a></li>";
-       } else {
-           print "<li><a href=\"$link\">$menu->{$k1}{'caption'}</a></li>";
-       }
-    }
-    print <<EOF
-                       </ul>
-               </div>
-EOF
-;    
-}
-
-sub getselected($) {
-    my $root = shift;
-    if (!$root) {
-       return 0;
-    }
-
-    foreach my $item (%$root) {
-       if ($root->{$item}{'selected'}) {
-           return $root->{$item};
-       }
-    }
-}
-
-sub showsubsection($$) {
-    my $root = shift;
-
-    if (! $root) {
-       return;
-    }
-    my $selected = getselected($root);
-    if (! $selected) {
-       return;
-    }
-    my $submenus = $selected->{'subMenu'};
-    if (! $submenus) {
-       return;
-    }
-
-    print <<EOF
-       <h4><span>Side</span>menu</h4>
-       <ul class="links">
-EOF
-;
-    foreach my $item (sort keys %$submenus) {
-       my $hash = $submenus->{$item};
-       if (! $hash->{'enabled'}) {
-           next;
-       }
-       my $link = getlink($hash);
-       if ($link eq '') {
-           next;
-       }
-       if (! is_menu_visible($link)) {
-           next;
-       }
-       if ($hash->{'selected'}) {
-           print '<li class="selected">';
-       } else {
-           print '<li>';
-       }
-
-       print "<a href=\"$link\">$hash->{'caption'}</a></li>";
-    }
-
-    print <<EOF
-       </ul>
-EOF
-;
-}
-
-
-sub showsubsubsection($) {
-    my $root = shift;
-    if (!$root) {
-       return;
-    }
-    my $selected = getselected($root);
-    if (! $selected) {
-       return
-    }
-    if (! $selected->{'subMenu'}) {
-       return
-    }
-
-    showsubsection($selected->{'subMenu'}, 'menu-subtop');
-}
-
-sub openpage {
-    my $title = shift;
-    my $boh = shift;
-    my $extrahead = shift;
-
-    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
-    &General::readhash("${swroot}/main/settings", \%settings);
-    &genmenu();
-
-    my $h2 = gettitle($menu);
-
-    $title = "-= IPFire - $title =-";
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
-    }
-
-    print <<END
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml'>
-<head>
-               <title>$title</title>
-    $extrahead
-    <link rel="shortcut icon" href="/favicon.ico" />
-    <link rel="stylesheet" type="text/css" href="/themes/darkdos/include/style.css" />
-    <script language="javascript" type="text/javascript">
-      
-        function swapVisibility(id) {
-            el = document.getElementById(id);
-            if(el.style.display != 'block') {
-                el.style.display = 'block'
-            }
-            else {
-                el.style.display = 'none'
-            }
-        }
-    </script>
-END
-;
-if ($settings{'SPEED'} ne 'off') {
-print <<END
-    <script type="text/javascript" src="/include/jquery.js"></script>
-    <script type="text/javascript">
-        var t_current;
-        var t_last;
-        var rxb_current;
-        var rxb_last;
-        var txb_current;
-        var txb_last;
-                               function refreshInetInfo() {
-                                               \$.ajax({
-                                                               url: '/cgi-bin/speed.cgi',
-                                                                                       success: function(xml){
-                                                                                       t_current = new Date();
-                                                                                       var t_diff = t_current - t_last;
-                                                                                       t_last = t_current;
-                               
-                                                                                       rxb_current = \$("rxb",xml).text();
-                                                                                       var rxb_diff = rxb_current - rxb_last;
-                                                                                       rxb_last = rxb_current;
-                               
-                                                                                       var rx_kbs = rxb_diff/t_diff;
-                                                                                       rx_kbs = Math.round(rx_kbs*10)/10;
-                               
-                                                                                       txb_current = \$("txb",xml).text();
-                                                                                       var txb_diff = txb_current - txb_last;
-                                                                                       txb_last = txb_current;
-                               
-                                                                                       var tx_kbs = txb_diff/t_diff;
-                                                                                       tx_kbs = Math.round(tx_kbs*10)/10;
-                               
-                                                                                       \$("#rx_kbs").text(rx_kbs + ' kb/s');
-                                                                                       \$("#tx_kbs").text(tx_kbs + ' kb/s');
-                                                                                       }
-                                                               });
-                                                               window.setTimeout("refreshInetInfo()", 3000);
-                                               }
-                                               \$(document).ready(function(){
-                                               refreshInetInfo();
-                               });
-    </script>
-  </head>
-  <body>
-END
-;
-}
-else {
-print "</head>\n<body>";}
-print <<END
-<!-- IPFIRE HEADER -->
-
-<div id="header">
-
-       <div id="header_inner" class="fixed">
-
-               <div id="logo">
-END
-;
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        print "<h1><span>$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}</span></h1><br />"; 
-    } else {
-                               print "<h1><span><a href='https://www.ipfire.org' style='text-decoration: none;'>-= IPFire =-</a></span></h1><br />";
-               }
-               print <<END
-                       <h2>+ $h2 +</h2>
-               </div>
-
-END
-;
-       &showmenu();
-
-print <<END    
-       </div>
-</div>
-
-<div id="main">
-       <div id="main_inner" class="fixed">
-               <div id="primaryContent_2columns">
-                       <div id="columnA_2columns">
-END
-;
-}
-
-sub openpagewithoutmenu {
-    my $title = shift;
-    my $boh = shift;
-    my $extrahead = shift;
-
-    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
-    &General::readhash("${swroot}/main/settings", \%settings);
-    &genmenu();
-
-    my $h2 = gettitle($menu);
-
-    $title = "-= IPFire - $title =-";
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
-    }
-
-    print <<END
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml'>
-<head>
-               <title>$title</title>
-               $extrahead
-END
-;
-    if ($settings{'FX'} ne 'off') {
-    print <<END
-    <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5,Transition=12)" />
-    <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5,Transition=12)" />
-END
-;
-    }
-    print <<END
-    <link rel="shortcut icon" href="/favicon.ico" />
-    <link rel="stylesheet" type="text/css" href="/include/style.css" />
-    <script language="javascript" type="text/javascript">
-      
-        function swapVisibility(id) {
-            el = document.getElementById(id);
-           if(el.style.display != 'block') {
-               el.style.display = 'block'
-           }
-           else {
-               el.style.display = 'none'
-           }
-        }
-    </script>
-
-  </head>
-  <body>
-<!-- IPFIRE HEADER -->
-
-<div id="header">
-
-       <div id="header_inner" class="fixed">
-
-               <div id="logo">
-                       <h1><span>-= IPFire =-</span></h1>
-                       <h2>+ $h2 +</h2>
-               </div>  
-       </div>
-</div>
-
-<div id="main">
-       <div id="main_inner" class="fixed">
-               <div id="primaryContent_2columns">
-                       <div id="columnA_2columns">
-END
-;
-}
-
-sub closepage () {
-       my $status = &connectionstatus();
-       my $uptime = `/usr/bin/uptime|cut -d \" \" -f 4-`;
-       $uptime =~ s/year(s|)/$Lang::tr{'year'}/;
-       $uptime =~ s/month(s|)/$Lang::tr{'month'}/;
-       $uptime =~ s/day(s|)/$Lang::tr{'day'}/;
-       $uptime =~ s/user(s|)/$Lang::tr{'user'}/;
-       $uptime =~ s/load average/$Lang::tr{'uptime load average'}/;     
-                               
-    print <<END
-                       </div>
-               </div>
-
-               <div id="secondaryContent_2columns">
-               
-                       <div id="columnC_2columns">
-END
-;
-    &showsubsection($menu);
-    &showsubsubsection($menu);
-
-       print <<END
-                               </div>
-                       </div>
-                       <br class="clear" />    
-                       <div id="footer" class="fixed">
-                               <b>Status:</b> $status <b>Uptime:</b> $uptime
-END
-;
-if ($settings{'SPEED'} ne 'off') {
-print <<END                        
-                        <br />
-                                <b>$Lang::tr{'bandwidth usage'}:</b>
-                               $Lang::tr{'incoming'}: <span id="rx_kbs"></span>&nbsp;$Lang::tr{'outgoing'}: <span id="tx_kbs"></span>
-
-END
-;
-}
-print <<END
-                </div>
-        </div>
-</div>
-</body>
-</html>
-END
-;
-}
-
-sub openbigbox
-{
-}
-
-sub closebigbox
-{
-}
-
-sub openbox
-{
-       $width = $_[0];
-       $align = $_[1];
-       $caption = $_[2];
-
-       print <<END
-<!-- openbox -->
-       <div class="post" align="$align">
-END
-;
-
-       if ($caption) { print "<h3>$caption</h3>\n"; } else { print "&nbsp;"; }
-}
-
-sub closebox
-{
-       print <<END
-       </div>
-       <br class="clear" />
-       <!-- closebox -->
-END
-;
-}
-
-1;
diff --git a/html/html/themes/darkdos/include/style.css b/html/html/themes/darkdos/include/style.css
deleted file mode 100644 (file)
index b885067..0000000
+++ /dev/null
@@ -1,473 +0,0 @@
-/*darkdos theme by d4rkd0s*/
-
-/* This controls the width of the fluid width layouts */
-
-div.fluid
-{
-width: 90% !important;
-}
-
-/* This controls the width of the fixed width layouts */
-
-div.fixed
-{
-width: 950px !important;
-}
-
-/* Basic Stuff */
-
-*
-{
-margin: 0em;
-padding: 0em;
-}
-
-body
-{
-background-color: #000000;
-color: rgb(255,128,0); 
-font-size: 10pt;
-font-family: "trebuchet ms", helvetica, sans-serif;
-}
-
-h1,h2,h3,h4,h5,h6
-{
-background-color: #000000;
-font-weight: normal;
-letter-spacing: -1px;
-text-transform: lowercase;
-text-align: left;
-}
-
-h3,h4,h5,h6
-{
-background-color: #000000;
-color: silver;
-}
-
-h1 span
-{
-font-weight: bold;
-color: rgb(255,58,58); 
-}
-
-h3 span
-{
-background-color: #000000;
-font-weight: bold;
-}
-
-h4 span
-{
-background-color: #000000;
-font-weight: bold;
-}
-
-br.clear
-{
-background-color: #000000;
-clear: both;
-}
-
-img
-{
-}
-
-img.floatTL
-{
-float: left;
-margin-right: 1.5em;
-margin-bottom: 1.5em;
-margin-top: 0.5em;
-}
-
-a
-{
-text-decoration: underline;
-color: white;
-}
-
-a:hover
-{
-text-decoration: none;
-}
-
-ul.links
-{
-list-style: none;
-}
-
-ul.links li
-{
-line-height: 2em;
-}
-
-ul.links li.first
-{
-}
-
-p
-{
-line-height: 1.8em;
-}
-
-/* Header */
-
-#header
-{
-width:100%;
-height:100px;
-background: #000000 url('/themes/darkdos/images/b1.gif') repeat-x;
-}
-
-#header_inner
-{
-position: relative;
-width: 700px;
-height:110px;
-margin: 0 auto;
-}
-
-/* Logo */
-
-#logo
-{
-position: absolute;
-bottom: 0.6em;
-}
-
-#logo h1
-{
-display: inline;
-color: #fff;
-font-size: 2.6em;
-}
-
-#logo h2
-{
-display: inline;
-padding-left: 0.5em;
-color: white;
-font-size: 1.0em;
-}
-
-/* Menu */
-
-#menu
-{
-position: absolute;
-right: 0em;
-bottom: 0em;
-}
-
-#menu ul
-{
-list-style: none;
-}
-
-#menu li
-{
-float: left;
-}
-
-#menu li a
-{
-margin-left: 0.5em;
-display: block;
-padding: 1.1em 1.4em 1.0em 1.4em;
-background: url('/themes/darkdos/images/b4.gif') repeat-x;
-border: solid 1px #fff;
-color: #616161;
-font-weight: bold;
-font-size: 1.0em;
-text-transform: lowercase;
-text-decoration: none;
-}
-
-#menu li a.active
-{
-background: url('/themes/darkdos/images/b3.gif') repeat-x;
-color: #fff;
-border: solid 1px silver;
-}
-
-/* Main */
-
-#main
-{
-background: #000000 url('/themes/darkdos/images/b2.gif') 0px 1px repeat-x;
-}
-
-#main_inner p
-{
-text-align: justify;
-margin-bottom: 2.0em;
-}
-
-#main_inner ul
-{
-margin-bottom: 2.0em;
-}
-
-#main_inner
-{
-position: relative;
-width: 950px;
-margin: 0 auto;
-padding-top: 3.5em;
-}
-
-#main_inner h3,h4
-{
-border-bottom: dotted 1px #E1E1E1;
-position: relative;
-padding-bottom: 0.4em;
-}
-
-#main_inner h3
-{
-font-size: 2.1em;
-padding-bottom: 0.1em;
-}
-
-#main_inner h4
-{
-font-size: 1.2em;
-padding-bottom: 0.175em;
-margin-bottom: 1.4em;
-margin-top: 0.95em;
-}
-
-#main_inner .post
-{
-position: relative;
-}
-
-#main_inner .post h3
-{
-position: relative;
-font-size: 1.7em;
-padding-bottom: 0.4em;
-}
-
-#main_inner .post ul.post_info
-{
-list-style: none;
-position: absolute;
-top: 3em;
-font-size: 0.8em;
-}
-
-#main_inner .post ul.post_info li
-{
-background-position: 0em 0.2em;
-background-repeat: no-repeat;
-display: inline;
-padding-left: 18px;
-}
-
-#main_inner .post ul.post_info li.date
-{
-background-image: url('/themes/darkdos/images/b5.gif');
-}
-
-#main_inner .post ul.post_info li.comments
-{
-background-image: url('/themes/darkdos/images/b6.gif');
-margin-left: 1.1em;
-}
-
-/* Footer */
-
-#footer
-{
-width: 950px;
-margin: 0 auto;
-text-align: center;
-clear: both;
-border-top: dotted 1px #E1E1E1;
-margin-top: 1.0em;
-margin-bottom: 1.0em;
-padding-top: 1.0em;
-text-transform: lowercase;
-}
-
-/* Search */
-
-select
-{
-margin: 0.2em;
-background-color: rgb(255,58,58); color:black; border:1px solid silver;
-}
-
-textarea
-{
-margin: 0.2em;
-background-color: rgb(255,58,58); color:black; border:1px solid silver;
-}
-
-checkbox
-{
-margin: 0.2em;
-background-color: rgb(255,58,58); color:black; border:1px solid silver;
-}
-
-radio
-{
-margin: 0.2em;
-background-color: rgb(255,58,58); color:black; border:1px solid silver;
-}
-
-input
-{
-margin: 0.2em;
-background-color: rgb(255,58,58); color:black; border:1px solid silver;
-}
-
-input.button
-{
-background: #CA2F2F url('/themes/darkdos/images/b3.gif') repeat-x;
-color: #fff;
-border: solid 1px #2941BC;
-font-weight: bold;
-text-transform: lowercase;
-font-size: 0.8em;
-height: 2.0em;
-}
-
-input.text
-{
-border: solid 1px #F1F1F1;
-font-size: 1.0em;
-padding: 0.25em 0.25em 0.25em 0.25em;
-}
-
-#search
-{
-position: relative;
-width: 100%;
-margin-bottom: 2.0em;
-}
-
-#search input.text
-{
-position: absolute;
-top: 0em;
-left: 0em;
-width: 9.5em;
-}
-
-#search input.button
-{
-position: absolute;
-top: 0em;
-right: 0em;
-min-width: 2.0em;
-max-width: 2.5em;
-}
-
-table.fw-nat tbody tr td {
-       height: 2.25em;
-}
-
-/* LAYOUT - 3 COLUMNS */
-
-       /* Primary content */
-       
-       #primaryContent_3columns
-       {
-       position: relative;
-       margin-right: 34em;
-       }
-       
-       #columnA_3columns
-       {
-       position: relative;
-       float: left;
-       width: 100%;
-       margin-right: -34em;
-       padding-right: 2em;
-       }
-       
-       /* Secondary Content */
-       
-       #secondaryContent_3columns
-       {
-       float: right;
-       }
-       
-       #columnB_3columns
-       {
-       width: 13.0em;
-       float: left;
-       padding: 0em 2em 0.5em 2em;
-       border-left: dotted 1px #E1E1E1;
-       }
-       
-       #columnC_3columns
-       {
-       width: 13.0em;
-       float: left;
-       padding: 0em 0em 0.5em 2em;
-       border-left: dotted 1px #E1E1E1;
-       }
-       
-/* LAYOUT - 2 COLUMNS */
-
-       /* Primary content */
-       
-       #primaryContent_2columns
-       {
-       position: relative;
-       margin-right: 17em;
-       }
-       
-       #columnA_2columns
-       {
-       position: relative;
-       float: left;
-       width: 100%;
-       margin-right: -17em;
-       padding-right: 2em;
-       }
-       
-       /* Secondary Content */
-       
-       #secondaryContent_2columns
-       {
-       float: right;
-       }
-       
-       #columnC_2columns
-       {
-       width: 13.0em;
-       float: left;
-       padding: 0em 0em 0.5em 2em;
-       border-left: dotted 1px #E1E1E1;
-       }
-
-/* LAYOUT - COLUMNLESS */
-
-       /* Primary content */
-       
-       #primaryContent_columnless
-       {
-       position: relative;
-       }
-       
-       #columnA_columnless
-       {
-       position: relative;
-       width: 100%;
-       }
-
-/* FOOTER      COLORIZE BANDWIDTH */
-
-#rx_kbs { color: green; }
-
-#tx_kbs { color: red; }
-
-iframe.graph {
-       width: 100%;
-       min-height: 300px;
-}
diff --git a/html/html/themes/ipfire-legacy/images/n1.gif b/html/html/themes/ipfire-legacy/images/n1.gif
deleted file mode 100644 (file)
index 6eb5161..0000000
Binary files a/html/html/themes/ipfire-legacy/images/n1.gif and /dev/null differ
diff --git a/html/html/themes/ipfire-legacy/images/n2.gif b/html/html/themes/ipfire-legacy/images/n2.gif
deleted file mode 100644 (file)
index b92a19d..0000000
Binary files a/html/html/themes/ipfire-legacy/images/n2.gif and /dev/null differ
diff --git a/html/html/themes/ipfire-legacy/images/n3.gif b/html/html/themes/ipfire-legacy/images/n3.gif
deleted file mode 100644 (file)
index 6627c91..0000000
Binary files a/html/html/themes/ipfire-legacy/images/n3.gif and /dev/null differ
diff --git a/html/html/themes/ipfire-legacy/images/n4.gif b/html/html/themes/ipfire-legacy/images/n4.gif
deleted file mode 100644 (file)
index 8698525..0000000
Binary files a/html/html/themes/ipfire-legacy/images/n4.gif and /dev/null differ
diff --git a/html/html/themes/ipfire-legacy/images/n5.gif b/html/html/themes/ipfire-legacy/images/n5.gif
deleted file mode 100644 (file)
index a032242..0000000
Binary files a/html/html/themes/ipfire-legacy/images/n5.gif and /dev/null differ
diff --git a/html/html/themes/ipfire-legacy/images/n6.gif b/html/html/themes/ipfire-legacy/images/n6.gif
deleted file mode 100644 (file)
index ed1781c..0000000
Binary files a/html/html/themes/ipfire-legacy/images/n6.gif and /dev/null differ
diff --git a/html/html/themes/ipfire-legacy/images/spacer.gif b/html/html/themes/ipfire-legacy/images/spacer.gif
deleted file mode 100644 (file)
index 5bfd67a..0000000
Binary files a/html/html/themes/ipfire-legacy/images/spacer.gif and /dev/null differ
diff --git a/html/html/themes/ipfire-legacy/include/colors.txt b/html/html/themes/ipfire-legacy/include/colors.txt
deleted file mode 100644 (file)
index 6d7dd1c..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-color1=#CD5B45
-color2=#EE6A50
-color3=#FF7256
-color4=#EE9572
-color5=#FFA07A
-color6=#CDAF95
-color7=#EECBAD
-color8=#FFDAB9
-color9=#FFE4C4
-color10=#FFCCCC
-color11=#0000FF
-color12=#00FF00
-color13=#FF0000
-color14=#FFD700
-color15=#CCCCCC
-color16=#40E0D0
-color17=#90EE90
-color18=#F4A460
-color19=#EAE9EE
-color20=#D6D6D6
-color21=#FFFFFF
-color22=#F0F0F0
-color23=#FF00FF
-color24=#6464FF
-color25=#FF6464
diff --git a/html/html/themes/ipfire-legacy/include/functions.pl b/html/html/themes/ipfire-legacy/include/functions.pl
deleted file mode 100644 (file)
index 26a8763..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-#!/usr/bin/perl
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-sub showmenu() {
-    print <<EOF
-                <div id="menu">
-                        <ul>
-EOF
-;
-    foreach my $k1 ( sort keys %$menu ) {
-        if (! $menu->{$k1}{'enabled'}) {
-            next;
-        }
-        my $link = getlink($menu->{$k1});
-        if ($link eq '') {
-            next;
-        }
-        if (! is_menu_visible($link)) {
-            next;
-        }
-        if ($menu->{$k1}->{'selected'}) {
-            print "<li><a href=\"$link\" class=\"active\">$menu->{$k1}{'caption'}</a></li>";
-        } else {
-            print "<li><a href=\"$link\">$menu->{$k1}{'caption'}</a></li>";
-        }
-    }
-    print <<EOF
-                        </ul>
-                </div>
-EOF
-;    
-}
-
-sub getselected($) {
-    my $root = shift;
-    if (!$root) {
-        return 0;
-    }
-
-    foreach my $item (%$root) {
-        if ($root->{$item}{'selected'}) {
-            return $root->{$item};
-        }
-    }
-}
-
-sub showsubsection($$) {
-    my $root = shift;
-
-    if (! $root) {
-        return;
-    }
-    my $selected = getselected($root);
-    if (! $selected) {
-        return;
-    }
-    my $submenus = $selected->{'subMenu'};
-    if (! $submenus) {
-        return;
-    }
-
-    print <<EOF
-        <h4><span>Side</span>menu</h4>
-        <ul class="links">
-EOF
-;
-    foreach my $item (sort keys %$submenus) {
-        my $hash = $submenus->{$item};
-        if (! $hash->{'enabled'}) {
-            next;
-        }
-        my $link = getlink($hash);
-        if ($link eq '') {
-            next;
-        }
-        if (! is_menu_visible($link)) {
-            next;
-        }
-        if ($hash->{'selected'}) {
-            print '<li class="selected">';
-        } else {
-            print '<li>';
-        }
-
-        print "<a href=\"$link\">$hash->{'caption'}</a></li>";
-    }
-
-    print <<EOF
-        </ul>
-EOF
-;
-}
-
-
-sub showsubsubsection($) {
-    my $root = shift;
-    if (!$root) {
-        return;
-    }
-    my $selected = getselected($root);
-    if (! $selected) {
-        return
-    }
-    if (! $selected->{'subMenu'}) {
-        return
-    }
-
-    showsubsection($selected->{'subMenu'}, 'menu-subtop');
-}
-
-sub openpage {
-    my $title = shift;
-    my $boh = shift;
-    my $extrahead = shift;
-
-    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
-    &General::readhash("${swroot}/main/settings", \%settings);
-    &genmenu();
-
-    my $h2 = gettitle($menu);
-
-    $title = "IPFire - $title";
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
-    }
-
-    print <<END
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml'>
-<head>
-               <title>$title</title>
-    $extrahead
-    <link rel="shortcut icon" href="/favicon.ico" />
-    <link rel="stylesheet" type="text/css" href="/themes/ipfire-legacy/include/style.css" />
-    <script language="javascript" type="text/javascript">
-      
-        function swapVisibility(id) {
-            el = document.getElementById(id);
-            if(el.style.display != 'block') {
-                el.style.display = 'block'
-            }
-            else {
-                el.style.display = 'none'
-            }
-        }
-    </script>
-END
-;
-if ($settings{'SPEED'} ne 'off') {
-print <<END
-    <script type="text/javascript" src="/include/jquery.js"></script>
-    <script type="text/javascript">
-        var t_current;
-        var t_last;
-        var rxb_current;
-        var rxb_last;
-        var txb_current;
-        var txb_last;
-       function refreshInetInfo() {
-               \$.ajax({
-                       url: '/cgi-bin/speed.cgi',
-                        success: function(xml){
-                        t_current = new Date();
-                        var t_diff = t_current - t_last;
-                        t_last = t_current;
-
-                        rxb_current = \$("rxb",xml).text();
-                        var rxb_diff = rxb_current - rxb_last;
-                        rxb_last = rxb_current;
-
-                        var rx_kbs = rxb_diff/t_diff;
-                        rx_kbs = Math.round(rx_kbs*10)/10;
-
-                        txb_current = \$("txb",xml).text();
-                        var txb_diff = txb_current - txb_last;
-                        txb_last = txb_current;
-
-                        var tx_kbs = txb_diff/t_diff;
-                        tx_kbs = Math.round(tx_kbs*10)/10;
-
-                        \$("#rx_kbs").text(rx_kbs + ' kb/s');
-                        \$("#tx_kbs").text(tx_kbs + ' kb/s');
-                        }
-               });
-                window.setTimeout("refreshInetInfo()", 3000);
-       }
-       \$(document).ready(function(){
-               refreshInetInfo();
-       });
-    </script>
-  </head>
-  <body>
-END
-;
-}
-else {
-print "</head><body>";}
-print <<END
-<!-- IPFIRE HEADER -->
-
-<div id="header">
-
-        <div id="header_inner" class="fixed">
-
-                <div id="logo">
-END
-;
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        print "<h1><span>$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}</span></h1><br />"; 
-    } else {
-                                print "<h1><span><a href='https://www.ipfire.org' style='text-decoration: none;'>IPFire</a></span></h1><br />";
-                }
-                print <<END
-                        <h2>$h2</h2>
-                </div>
-
-END
-;
-        &showmenu();
-
-print <<END     
-        </div>
-</div>
-
-<div id="main">
-        <div id="main_inner" class="fixed">
-                <div id="primaryContent_2columns">
-                        <div id="columnA_2columns">
-END
-;
-}
-
-sub openpagewithoutmenu {
-    my $title = shift;
-    my $boh = shift;
-    my $extrahead = shift;
-
-    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
-    &General::readhash("${swroot}/main/settings", \%settings);
-    &genmenu();
-
-    my $h2 = gettitle($menu);
-
-    $title = "IPFire - $title";
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
-    }
-
-    print <<END
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml'>
-<head>
-               <title>$title</title>
-               $extrahead
-END
-;
-    if ($settings{'FX'} ne 'off') {
-    print <<END
-    <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5,Transition=12)" />
-    <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5,Transition=12)" />
-END
-;
-    }
-    print <<END
-    <link rel="shortcut icon" href="/favicon.ico" />
-    <link rel="stylesheet" type="text/css" href="/include/style.css" />
-    <script language="javascript" type="text/javascript">
-      
-        function swapVisibility(id) {
-            el = document.getElementById(id);
-            if(el.style.display != 'block') {
-                el.style.display = 'block'
-            }
-            else {
-                el.style.display = 'none'
-            }
-        }
-    </script>
-
-  </head>
-  <body>
-<!-- IPFIRE HEADER -->
-
-<div id="header">
-
-        <div id="header_inner" class="fixed">
-
-                <div id="logo">
-                        <h1><span>IPFire</span></h1>
-                        <h2>$h2</h2>
-                </div>  
-        </div>
-</div>
-
-<div id="main">
-        <div id="main_inner" class="fixed">
-                <div id="primaryContent_2columns">
-                        <div id="columnA_2columns">
-END
-;
-}
-
-sub closepage () {
-       my $status = &connectionstatus();
-       my $uptime = `/usr/bin/uptime|cut -d \" \" -f 4-`;
-       $uptime =~ s/year(s|)/$Lang::tr{'year'}/;
-       $uptime =~ s/month(s|)/$Lang::tr{'month'}/;
-       $uptime =~ s/day(s|)/$Lang::tr{'day'}/;
-       $uptime =~ s/user(s|)/$Lang::tr{'user'}/;
-       $uptime =~ s/load average/$Lang::tr{'uptime load average'}/;     
-                               
-    print <<END
-                        </div>
-                </div>
-
-                <div id="secondaryContent_2columns">
-                
-                        <div id="columnC_2columns">
-END
-;
-    &showsubsection($menu);
-    &showsubsubsection($menu);
-
-        print <<END                     
-                               </div>
-            </div>
-            <br class="clear" />    
-                       <div id="footer" class="fixed">
-                               <b>Status:</b> $status <b>Uptime:</b> $uptime
-END
-;
-if ($settings{'SPEED'} ne 'off') {
-print <<END                        
-                        <br />
-                                <b>$Lang::tr{'bandwidth usage'}:</b>
-                               $Lang::tr{'incoming'}: <span id="rx_kbs"></span>&nbsp;$Lang::tr{'outgoing'}: <span id="tx_kbs"></span>
-
-END
-;
-}
-print <<END
-                </div>
-        </div>
-</div>
-</body>
-</html>
-END
-;
-}
-
-sub openbigbox
-{
-}
-
-sub closebigbox
-{
-}
-
-sub openbox
-{
-        $width = $_[0];
-        $align = $_[1];
-        $caption = $_[2];
-
-        print <<END
-<!-- openbox -->
-        <div class="post" align="$align">
-END
-;
-
-        if ($caption) { print "<h3>$caption</h3>\n"; } else { print "&nbsp;"; }
-}
-
-sub closebox
-{
-        print <<END
-        </div>
-        <br class="clear" />
-        <!-- closebox -->
-END
-;
-}
-
-1;
diff --git a/html/html/themes/ipfire-legacy/include/style.css b/html/html/themes/ipfire-legacy/include/style.css
deleted file mode 100644 (file)
index 2e9ea92..0000000
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
-
-       Nonzero1.0 by nodethirtythree design
-       http://www.nodethirtythree.com
-       missing in a maze
-
-*/
-
-/* This controls the width of the fluid width layouts */
-
-div.fluid
-{
-width: 90% !important;
-}
-
-/* This controls the width of the fixed width layouts */
-
-div.fixed
-{
-width: 950px !important;
-}
-
-/* Basic Stuff */
-
-*
-{
-margin: 0em;
-padding: 0em;
-}
-
-body
-{
-background-color: #fff;
-color: #585858;
-font-size: 9pt;
-font-family: "trebuchet ms", helvetica, sans-serif;
-}
-
-h1,h2,h3,h4,h5,h6
-{
-font-weight: normal;
-letter-spacing: -1px;
-text-transform: lowercase;
-text-align: left;
-}
-
-h3,h4,h5,h6
-{
-color: #66000F;
-}
-
-h1 span
-{
-font-weight: bold;
-}
-
-h3 span
-{
-font-weight: bold;
-}
-
-h4 span
-{
-font-weight: bold;
-}
-
-br.clear
-{
-clear: both;
-}
-
-img
-{
-padding: 3px;
-#border: solid 1px #e1e1e1;
-}
-
-img.floatTL
-{
-float: left;
-margin-right: 1.5em;
-margin-bottom: 1.5em;
-margin-top: 0.5em;
-}
-
-a
-{
-text-decoration: underline;
-color: #D90000;
-}
-
-a:hover
-{
-text-decoration: none;
-}
-
-ul.links
-{
-list-style: none;
-}
-
-ul.links li
-{
-line-height: 2em;
-}
-
-ul.links li.first
-{
-}
-
-p
-{
-line-height: 1.8em;
-}
-
-/* Header */
-
-#header
-{
-width:100%;
-height:122px;
-background: #440000 url('../images/n1.gif') repeat-x;
-}
-
-#header_inner
-{
-position: relative;
-width: 950px;
-height:122px;
-margin: 0 auto;
-}
-
-/* Logo */
-
-#logo
-{
-position: absolute;
-bottom: 0.6em;
-}
-
-#logo h1
-{
-display: inline;
-color: #fff;
-font-size: 2.6em;
-}
-
-#logo h2
-{
-display: inline;
-padding-left: 0.5em;
-color: #E5CCD0;
-font-size: 1.0em;
-}
-
-/* Menu */
-
-#menu
-{
-position: absolute;
-right: 0em;
-bottom: 0em;
-}
-
-#menu ul
-{
-list-style: none;
-}
-
-#menu li
-{
-float: left;
-}
-
-#menu li a
-{
-margin-left: 0.5em;
-display: block;
-padding: 1.1em 1.4em 1.0em 1.4em;
-background: #fff url('../images/n4.gif') repeat-x;
-border: solid 1px #fff;
-color: #616161;
-font-weight: bold;
-font-size: 1.0em;
-text-transform: lowercase;
-text-decoration: none;
-}
-
-#menu li a.active
-{
-background: #CA2F2F url('../images/n3.gif') repeat-x;
-color: #fff;
-border: solid 1px #A94B4B;
-}
-
-/* Main */
-
-#main
-{
-background: #fff url('../images/n2.gif') 0px 1px repeat-x;
-}
-
-#main_inner p
-{
-text-align: justify;
-margin-bottom: 2.0em;
-}
-
-#main_inner ul
-{
-margin-bottom: 2.0em;
-}
-
-#main_inner
-{
-position: relative;
-width: 950px;
-margin: 0 auto;
-padding-top: 3.5em;
-}
-
-#main_inner h3,h4
-{
-border-bottom: dotted 1px #E1E1E1;
-position: relative;
-}
-
-#main_inner h3
-{
-font-size: 2.1em;
-padding-bottom: 0.1em;
-margin-bottom: 0.8em;
-}
-
-#main_inner h4
-{
-font-size: 1.2em;
-padding-bottom: 0.175em;
-margin-bottom: 1.4em;
-margin-top: 0.95em;
-}
-
-#main_inner .post
-{
-position: relative;
-}
-
-#main_inner .post h3
-{
-position: relative;
-font-size: 1.7em;
-padding-bottom: 0.4em;
-}
-
-#main_inner .post ul.post_info
-{
-list-style: none;
-position: absolute;
-top: 3em;
-font-size: 0.8em;
-}
-
-#main_inner .post ul.post_info li
-{
-background-position: 0em 0.2em;
-background-repeat: no-repeat;
-display: inline;
-padding-left: 18px;
-}
-
-#main_inner .post ul.post_info li.date
-{
-background-image: url('../images/n5.gif');
-}
-
-#main_inner .post ul.post_info li.comments
-{
-background-image: url('../images/n6.gif');
-margin-left: 1.1em;
-}
-
-/* Footer */
-
-#footer
-{
-width: 950px;
-margin: 0 auto;
-text-align: center;
-clear: both;
-border-top: dotted 1px #E1E1E1;
-margin-top: 1.0em;
-margin-bottom: 1.0em;
-padding-top: 1.0em;
-text-transform: lowercase;
-}
-
-/* Search */
-
-input
-{
-margin: 0.2em;
-}
-
-input.button
-{
-background: #CA2F2F url('../images/n3.gif') repeat-x;
-color: #fff;
-border: solid 1px #A94B4B;
-font-weight: bold;
-text-transform: lowercase;
-font-size: 0.8em;
-height: 2.0em;
-}
-
-input.text
-{
-border: solid 1px #F1F1F1;
-font-size: 1.0em;
-padding: 0.25em 0.25em 0.25em 0.25em;
-}
-
-#search
-{
-position: relative;
-width: 100%;
-margin-bottom: 2.0em;
-}
-
-#search input.text
-{
-position: absolute;
-top: 0em;
-left: 0em;
-width: 9.5em;
-}
-
-#search input.button
-{
-position: absolute;
-top: 0em;
-right: 0em;
-min-width: 2.0em;
-max-width: 2.5em;
-}
-
-table.fw-nat tbody tr td {
-       height: 2.25em;
-}
-
-/* LAYOUT - 3 COLUMNS */
-
-       /* Primary content */
-       
-       #primaryContent_3columns
-       {
-       position: relative;
-       margin-right: 34em;
-       }
-       
-       #columnA_3columns
-       {
-       position: relative;
-       float: left;
-       width: 100%;
-       margin-right: -34em;
-       padding-right: 2em;
-       }
-       
-       /* Secondary Content */
-       
-       #secondaryContent_3columns
-       {
-       float: right;
-       }
-       
-       #columnB_3columns
-       {
-       width: 13.0em;
-       float: left;
-       padding: 0em 2em 0.5em 2em;
-       border-left: dotted 1px #E1E1E1;
-       }
-       
-       #columnC_3columns
-       {
-       width: 13.0em;
-       float: left;
-       padding: 0em 0em 0.5em 2em;
-       border-left: dotted 1px #E1E1E1;
-       }
-       
-/* LAYOUT - 2 COLUMNS */
-
-       /* Primary content */
-       
-       #primaryContent_2columns
-       {
-       position: relative;
-       margin-right: 17em;
-       }
-       
-       #columnA_2columns
-       {
-       position: relative;
-       float: left;
-       width: 100%;
-       margin-right: -17em;
-       padding-right: 2em;
-       }
-       
-       /* Secondary Content */
-       
-       #secondaryContent_2columns
-       {
-       float: right;
-       }
-       
-       #columnC_2columns
-       {
-       width: 13.0em;
-       float: left;
-       padding: 0em 0em 0.5em 2em;
-       border-left: dotted 1px #E1E1E1;
-       }
-
-/* LAYOUT - COLUMNLESS */
-
-       /* Primary content */
-       
-       #primaryContent_columnless
-       {
-       position: relative;
-       }
-       
-       #columnA_columnless
-       {
-       position: relative;
-       width: 100%;
-       }
-
-/* FOOTER      COLORIZE BANDWIDTH */
-
-#rx_kbs { color: green; }
-
-#tx_kbs { color: red; }
-
-iframe.graph {
-       min-height: 285px;
-       width: 750px;
-}
diff --git a/html/html/themes/ipfire/include/css/style-rounded.css b/html/html/themes/ipfire/include/css/style-rounded.css
deleted file mode 100644 (file)
index 886d61f..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-
-.bigbox {
-       margin-top: 1em;
-       border-radius: 8px 8px 8px 8px;
-       -webkit-border-radius: 8px 8px 8px 8px;
-}
-
-#main_inner .post {
-       border-radius: 8px 8px 8px 8px;
-       -webkit-border-radius: 8px 8px 8px 8px;
-}
-
-#cssmenu a {
-       border-radius: 8px 8px 8px 8px;
-       -webkit-border-radius: 8px 8px 8px 8px;
-}
-
-#cssmenu .has-sub ul li a {
-       border-radius: 7px 7px 7px 7px;
-}
-
-#cssmenu .has-sub ul li:hover a {
-       box-shadow: inset 0  5px 1px rgba(0, 0, 0, 0.15);
-       -webkit-box-shadow: inset 0  5px 1px rgba(0, 0, 0, 0.15);
-}
-
-/* Table */
-/* when using class='bordered' after tabletag */
-
-.tbl th:first-child {
-       -moz-border-radius: 6px 0 0 0;
-       -webkit-border-radius: 6px 0 0 0;
-       border-radius: 6px 0 0 0;
-}
-
-.tbl th:last-child {
-       -moz-border-radius: 0 6px 0 0;
-       -webkit-border-radius: 0 6px 0 0;
-       border-radius: 0 6px 0 0;
-}
-
-.tbl th:only-child {
-       -moz-border-radius: 6px 6px 0 0;
-       -webkit-border-radius: 6px 6px 0 0;
-       border-radius: 6px 6px 0 0;
-}
-
-.tbl tr:first-child td:first-child {
-       -moz-border-radius: 6px 0 0 0;
-       -webkit-border-radius: 6px 0 0 0;
-       border-radius: 6px 0 0 0;
-}
-
-.tbl tr:first-child td:last-child {
-       -moz-border-radius: 0 6px 0 0;
-       -webkit-border-radius: 0 6px 0 0;
-       border-radius: 0 6px 0 0;
-}
-
-.tbl tr:first-child td:only-child {
-       -moz-border-radius: 6px 6px 0 0;
-       -webkit-border-radius: 6px 6px 0 0;
-       border-radius: 6px 6px 0 0;
-}
-
-.tbl tr:last-child td:first-child {
-       -moz-border-radius: 0 0 0 6px;
-       -webkit-border-radius: 0 0 0 6px;
-       border-radius: 0 0 0 6px;
-}
-
-.tbl tr:last-child td:last-child {
-       -moz-border-radius: 0 0 6px 0;
-       -webkit-border-radius: 0 0 6px 0;
-       border-radius: 0 0 6px 0;
-}
-
-.tbl tr:last-child td:only-child {
-       -moz-border-radius: 0 0 6px 6px;
-       -webkit-border-radius: 0 0 6px 6px;
-       border-radius: 0 0 6px 6px;
-}
index 9421fc111ea612c59c4e59c36e5bc775cc0211ea..10644a9f822d8c0bd026a2d5c921ea992924a13b 100644 (file)
@@ -328,7 +328,38 @@ table.fw-nat tbody tr td {
        height: 2.25em;
 }
 
-iframe.graph {
-       width: 100%;
-       min-height: 300px;
+/* RRD graph images */
+
+div.rrdimage > ul {
+       list-style-type: none;
+       margin: 0;
+       display: flex;
+       justify-content: center;
+}
+.rrdimage li:not(:first-child)::before {
+       content: "-";
+       padding: 0 0.3em;
+}
+
+.rrdimage button {
+       padding: 0.3em;
+       font-weight: 700;
+       color: #d90000; /* link color */
+       border: none;
+       background: none;
+       cursor: pointer;
+       text-decoration: underline;
+}
+.rrdimage button:focus {
+       outline: none;
+       box-shadow: none;
+}
+.rrdimage button.selected {
+       background-color: rgba(135, 203, 0, 0.2);
+}
+
+div.rrdimage > img {
+       box-sizing: border-box;
+       max-width: 100%;
+       min-height: 290px;
 }
index 9aec77497b886941de0a8213d8408f5c1a38e360..9f12bbe5907a6861f9e2c685fb3184e153e01176 100644 (file)
@@ -114,10 +114,6 @@ sub openpage {
                $headline =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}";
        }
 
-       my @stylesheets = ("style.css");
-       if ($THEME_NAME eq "ipfire-rounded") {
-               push(@stylesheets, "style-rounded.css");
-       }
 
 print <<END;
 <!DOCTYPE html>
@@ -128,6 +124,7 @@ print <<END;
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <link rel="shortcut icon" href="/favicon.ico" />
        <script type="text/javascript" src="/include/jquery.js"></script>
+       <script src="/include/rrdimage.js"></script>
 
        <script type="text/javascript">
                function swapVisibility(id) {
@@ -136,9 +133,9 @@ print <<END;
        </script>
 END
 
-       foreach my $stylesheet (@stylesheets) {
-               print "<link href=\"/themes/ipfire/include/css/$stylesheet\" rel=\"stylesheet\" type=\"text/css\" />\n";
-       }
+
+print "<link href=\"/themes/ipfire/include/css/style.css\" rel=\"stylesheet\" type=\"text/css\" />\n";
+
 
 if ($settings{'SPEED'} ne 'off') {
 print <<END
diff --git a/html/html/themes/maniac/images/IPFire.png b/html/html/themes/maniac/images/IPFire.png
deleted file mode 100644 (file)
index ec56b7a..0000000
Binary files a/html/html/themes/maniac/images/IPFire.png and /dev/null differ
diff --git a/html/html/themes/maniac/images/b1.gif b/html/html/themes/maniac/images/b1.gif
deleted file mode 100644 (file)
index 27e0051..0000000
Binary files a/html/html/themes/maniac/images/b1.gif and /dev/null differ
diff --git a/html/html/themes/maniac/images/b2.gif b/html/html/themes/maniac/images/b2.gif
deleted file mode 100644 (file)
index 2ae47ed..0000000
Binary files a/html/html/themes/maniac/images/b2.gif and /dev/null differ
diff --git a/html/html/themes/maniac/images/b3.gif b/html/html/themes/maniac/images/b3.gif
deleted file mode 100644 (file)
index fd3c7d0..0000000
Binary files a/html/html/themes/maniac/images/b3.gif and /dev/null differ
diff --git a/html/html/themes/maniac/images/b4.gif b/html/html/themes/maniac/images/b4.gif
deleted file mode 100644 (file)
index 70337c1..0000000
Binary files a/html/html/themes/maniac/images/b4.gif and /dev/null differ
diff --git a/html/html/themes/maniac/images/b5.gif b/html/html/themes/maniac/images/b5.gif
deleted file mode 100644 (file)
index a032242..0000000
Binary files a/html/html/themes/maniac/images/b5.gif and /dev/null differ
diff --git a/html/html/themes/maniac/images/b6.gif b/html/html/themes/maniac/images/b6.gif
deleted file mode 100644 (file)
index ed1781c..0000000
Binary files a/html/html/themes/maniac/images/b6.gif and /dev/null differ
diff --git a/html/html/themes/maniac/images/spacer.gif b/html/html/themes/maniac/images/spacer.gif
deleted file mode 100644 (file)
index 5bfd67a..0000000
Binary files a/html/html/themes/maniac/images/spacer.gif and /dev/null differ
diff --git a/html/html/themes/maniac/include/colors.txt b/html/html/themes/maniac/include/colors.txt
deleted file mode 100644 (file)
index 39961e3..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-color1=#CD3700
-color2=#FF4500
-color3=#CD6600
-color4=#FF7F00
-color5=#CD8500
-color6=#FFA500
-color7=#FF7F24
-color8=#FFA54F
-color9=#EEAD0E
-color10=#EEC900
-color11=#0000FF
-color12=#00FF00
-color13=#FF0000
-color14=#FFD700
-color15=#CCCCCC
-color16=#40E0D0
-color17=#90EE90
-color18=#F4A460
-color19=#EAE9EE
-color20=#1C1C1C
-color21=#CD6600
-color22=#4F4F4F
-color23=#FF00FF
-color24=#6464FF
-color25=#FF6464
diff --git a/html/html/themes/maniac/include/functions.pl b/html/html/themes/maniac/include/functions.pl
deleted file mode 100644 (file)
index 1c0aea1..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-#!/usr/bin/perl
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-sub showmenu() {
-    print <<EOF
-               <div id="menu">
-                       <ul>
-EOF
-;
-    foreach my $k1 ( sort keys %$menu ) {
-       if (! $menu->{$k1}{'enabled'}) {
-           next;
-       }
-       my $link = getlink($menu->{$k1});
-       if ($link eq '') {
-           next;
-       }
-       if (! is_menu_visible($link)) {
-           next;
-       }
-       if ($menu->{$k1}->{'selected'}) {
-           print "<li><a href=\"$link\" class=\"active\">$menu->{$k1}{'caption'}</a></li>";
-       } else {
-           print "<li><a href=\"$link\">$menu->{$k1}{'caption'}</a></li>";
-       }
-    }
-    print <<EOF
-                       </ul>
-               </div>
-EOF
-;    
-}
-
-sub getselected($) {
-    my $root = shift;
-    if (!$root) {
-       return 0;
-    }
-
-    foreach my $item (%$root) {
-       if ($root->{$item}{'selected'}) {
-           return $root->{$item};
-       }
-    }
-}
-
-sub showsubsection($$) {
-    my $root = shift;
-
-    if (! $root) {
-       return;
-    }
-    my $selected = getselected($root);
-    if (! $selected) {
-       return;
-    }
-    my $submenus = $selected->{'subMenu'};
-    if (! $submenus) {
-       return;
-    }
-
-    print <<EOF
-       <h4><span>Side</span>menu</h4>
-       <ul class="links">
-EOF
-;
-    foreach my $item (sort keys %$submenus) {
-       my $hash = $submenus->{$item};
-       if (! $hash->{'enabled'}) {
-           next;
-       }
-       my $link = getlink($hash);
-       if ($link eq '') {
-           next;
-       }
-       if (! is_menu_visible($link)) {
-           next;
-       }
-       if ($hash->{'selected'}) {
-           print '<li class="selected">';
-       } else {
-           print '<li>';
-       }
-
-       print "<a href=\"$link\">$hash->{'caption'}</a></li>";
-    }
-
-    print <<EOF
-       </ul>
-EOF
-;
-}
-
-
-sub showsubsubsection($) {
-    my $root = shift;
-    if (!$root) {
-       return;
-    }
-    my $selected = getselected($root);
-    if (! $selected) {
-       return
-    }
-    if (! $selected->{'subMenu'}) {
-       return
-    }
-
-    showsubsection($selected->{'subMenu'}, 'menu-subtop');
-}
-
-sub openpage {
-    my $title = shift;
-    my $boh = shift;
-    my $extrahead = shift;
-
-    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
-    &General::readhash("${swroot}/main/settings", \%settings);
-    &genmenu();
-
-    my $h2 = gettitle($menu);
-
-    $title = "-= IPFire - $title =-";
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
-    }
-
-    print <<END
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml'>
-<head>
-               <title>$title</title>
-    $extrahead
-    <link rel="shortcut icon" href="/favicon.ico" />
-    <link rel="stylesheet" type="text/css" href="/themes/maniac/include/style.css" />
-    <script type="text/javascript">
-      
-        function swapVisibility(id) {
-            el = document.getElementById(id);
-            if(el.style.display != 'block') {
-                el.style.display = 'block'
-            }
-            else {
-                el.style.display = 'none'
-            }
-        }
-    </script>
-END
-;
-if ($settings{'SPEED'} ne 'off') {
-print <<END
-    <script type="text/javascript" src="/include/jquery.js"></script>
-    <script type="text/javascript">
-        var t_current;
-        var t_last;
-        var rxb_current;
-        var rxb_last;
-        var txb_current;
-        var txb_last;
-                               function refreshInetInfo() {
-                                               \$.ajax({
-                                                               url: '/cgi-bin/speed.cgi',
-                                                                                       success: function(xml){
-                                                                                       t_current = new Date();
-                                                                                       var t_diff = t_current - t_last;
-                                                                                       t_last = t_current;
-                               
-                                                                                       rxb_current = \$("rxb",xml).text();
-                                                                                       var rxb_diff = rxb_current - rxb_last;
-                                                                                       rxb_last = rxb_current;
-                               
-                                                                                       var rx_kbs = rxb_diff/t_diff;
-                                                                                       rx_kbs = Math.round(rx_kbs*10)/10;
-                               
-                                                                                       txb_current = \$("txb",xml).text();
-                                                                                       var txb_diff = txb_current - txb_last;
-                                                                                       txb_last = txb_current;
-                               
-                                                                                       var tx_kbs = txb_diff/t_diff;
-                                                                                       tx_kbs = Math.round(tx_kbs*10)/10;
-                               
-                                                                                       \$("#rx_kbs").text(rx_kbs + ' kb/s');
-                                                                                       \$("#tx_kbs").text(tx_kbs + ' kb/s');
-                                                                                       }
-                                                               });
-                                                               window.setTimeout("refreshInetInfo()", 3000);
-                                               }
-                                               \$(document).ready(function(){
-                                               refreshInetInfo();
-                               });
-    </script>
-  </head>
-  <body>
-END
-;
-}
-else {
-print "</head>\n<body>";}
-print <<END
-<!-- IPFIRE HEADER -->
-
-<div id="header">
-
-       <div id="header_inner" class="fixed">
-
-               <div id="logo">
-END
-;
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        print "<h1><span>$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}</span></h1><br />"; 
-    } else {
-                               print "<h1><span><a href='https://www.ipfire.org' style='text-decoration: none;'>-= IPFire =-</a></span></h1><br />";
-               }
-               print <<END
-                       <h2>+ $h2 +</h2>
-               </div>
-
-END
-;
-       &showmenu();
-
-print <<END    
-       </div>
-</div>
-
-<div id="main">
-       <div id="main_inner" class="fixed">
-               <div id="primaryContent_2columns">
-                       <div id="columnA_2columns">
-END
-;
-}
-
-sub openpagewithoutmenu {
-    my $title = shift;
-    my $boh = shift;
-    my $extrahead = shift;
-
-    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
-    &General::readhash("${swroot}/main/settings", \%settings);
-    &genmenu();
-
-    my $h2 = gettitle($menu);
-
-    $title = "-= IPFire - $title =-";
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
-    }
-
-    print <<END
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml'>
-<head>
-               <title>$title</title>
-               $extrahead
-END
-;
-    if ($settings{'FX'} ne 'off') {
-    print <<END
-    <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5,Transition=12)" />
-    <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5,Transition=12)" />
-END
-;
-    }
-    print <<END
-    <link rel="shortcut icon" href="/favicon.ico" />
-    <link rel="stylesheet" type="text/css" href="/include/style.css" />
-    <script type="text/javascript">
-      
-        function swapVisibility(id) {
-            el = document.getElementById(id);
-           if(el.style.display != 'block') {
-               el.style.display = 'block'
-           }
-           else {
-               el.style.display = 'none'
-           }
-        }
-    </script>
-
-  </head>
-  <body>
-<!-- IPFIRE HEADER -->
-
-<div id="header">
-
-       <div id="header_inner" class="fixed">
-
-               <div id="logo">
-                       <h1><span>-= IPFire =-</span></h1>
-                       <h2>+ $h2 +</h2>
-               </div>  
-       </div>
-</div>
-
-<div id="main">
-       <div id="main_inner" class="fixed">
-               <div id="primaryContent_2columns">
-                       <div id="columnA_2columns">
-END
-;
-}
-
-sub closepage () {
-       my $status = &connectionstatus();
-       my $uptime = `/usr/bin/uptime|cut -d \" \" -f 4-`;
-       $uptime =~ s/year(s|)/$Lang::tr{'year'}/;
-       $uptime =~ s/month(s|)/$Lang::tr{'month'}/;
-       $uptime =~ s/day(s|)/$Lang::tr{'day'}/;
-       $uptime =~ s/user(s|)/$Lang::tr{'user'}/;
-       $uptime =~ s/load average/$Lang::tr{'uptime load average'}/;     
-                               
-    print <<END
-                       </div>
-               </div>
-
-               <div id="secondaryContent_2columns">
-               
-                       <div id="columnC_2columns">
-END
-;
-    &showsubsection($menu);
-    &showsubsubsection($menu);
-
-       print <<END
-                               </div>
-                       </div>
-                       <br class="clear" />    
-                       <div id="footer" class="fixed">
-                               <b>Status:</b> $status <b>Uptime:</b> $uptime
-END
-;
-if ($settings{'SPEED'} ne 'off') {
-print <<END                        
-                        <br />
-                                <b>$Lang::tr{'bandwidth usage'}:</b>
-                               $Lang::tr{'incoming'}: <span id="rx_kbs"></span>&nbsp;$Lang::tr{'outgoing'}: <span id="tx_kbs"></span>
-
-END
-;
-}
-print <<END
-                </div>
-        </div>
-</div>
-</body>
-</html>
-END
-;
-}
-
-sub openbigbox
-{
-}
-
-sub closebigbox
-{
-}
-
-sub openbox
-{
-       $width = $_[0];
-       $align = $_[1];
-       $caption = $_[2];
-
-       print <<END
-<!-- openbox -->
-       <div class="post" align="$align">
-END
-;
-
-       if ($caption) { print "<h3>$caption</h3>\n"; } else { print "&nbsp;"; }
-}
-
-sub closebox
-{
-       print <<END
-       </div>
-       <br class="clear" />
-       <!-- closebox -->
-END
-;
-}
-
-1;
diff --git a/html/html/themes/maniac/include/style.css b/html/html/themes/maniac/include/style.css
deleted file mode 100644 (file)
index 27d3982..0000000
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
-
-       Nonzero1.0 by nodethirtythree design
-       http://www.nodethirtythree.com
-       missing in a maze
-
-*/
-
-/* This controls the width of the fluid width layouts */
-
-div.fluid
-{
-width: 90% !important;
-}
-
-/* This controls the width of the fixed width layouts */
-
-div.fixed
-{
-width: 950px !important;
-}
-
-/* Basic Stuff */
-
-*
-{
-margin: 0em;
-padding: 0em;
-}
-
-body
-{
-background-color: #000000;
-color: rgb(255,128,0); 
-font-size: 9pt;
-font-family: "trebuchet ms", helvetica, sans-serif;
-}
-
-h1,h2,h3,h4,h5,h6
-{
-background-color: #000000;
-font-weight: normal;
-letter-spacing: -1px;
-text-transform: lowercase;
-text-align: left;
-}
-
-h3,h4,h5,h6
-{
-background-color: #000000;
-color: silver;
-}
-
-h1 span
-{
-font-weight: bold;
-color: rgb(255,128,0); 
-}
-
-h3 span
-{
-background-color: #000000;
-font-weight: bold;
-}
-
-h4 span
-{
-background-color: #000000;
-font-weight: bold;
-}
-
-br.clear
-{
-background-color: #000000;
-clear: both;
-}
-
-img
-{
-}
-
-img.floatTL
-{
-float: left;
-margin-right: 1.5em;
-margin-bottom: 1.5em;
-margin-top: 0.5em;
-}
-
-a
-{
-text-decoration: underline;
-color: white;
-}
-
-a:hover
-{
-text-decoration: none;
-}
-
-ul.links
-{
-list-style: none;
-}
-
-ul.links li
-{
-line-height: 2em;
-}
-
-ul.links li.first
-{
-}
-
-p
-{
-line-height: 1.8em;
-}
-
-/* Header */
-
-#header
-{
-width:100%;
-height:100px;
-background: #000000 url('/themes/maniac/images/b1.gif') repeat-x;
-}
-
-#header_inner
-{
-position: relative;
-width: 700px;
-height:110px;
-margin: 0 auto;
-}
-
-/* Logo */
-
-#logo
-{
-position: absolute;
-bottom: 0.6em;
-}
-
-#logo h1
-{
-display: inline;
-color: #fff;
-font-size: 2.6em;
-}
-
-#logo h2
-{
-display: inline;
-padding-left: 0.5em;
-color: white;
-font-size: 1.0em;
-}
-
-/* Menu */
-
-#menu
-{
-position: absolute;
-right: 0em;
-bottom: 0em;
-}
-
-#menu ul
-{
-list-style: none;
-}
-
-#menu li
-{
-float: left;
-}
-
-#menu li a
-{
-margin-left: 0.5em;
-display: block;
-padding: 1.1em 1.4em 1.0em 1.4em;
-background: url('/themes/maniac/images/b4.gif') repeat-x;
-border: solid 1px #fff;
-color: #616161;
-font-weight: bold;
-font-size: 1.0em;
-text-transform: lowercase;
-text-decoration: none;
-}
-
-#menu li a.active
-{
-background: url('/themes/maniac/images/b3.gif') repeat-x;
-color: #fff;
-border: solid 1px silver;
-}
-
-/* Main */
-
-#main
-{
-background: #000000 url('/themes/maniac/images/b2.gif') 0px 1px repeat-x;
-}
-
-#main_inner p
-{
-text-align: justify;
-margin-bottom: 2.0em;
-}
-
-#main_inner ul
-{
-margin-bottom: 2.0em;
-}
-
-#main_inner
-{
-position: relative;
-width: 950px;
-margin: 0 auto;
-padding-top: 3.5em;
-}
-
-#main_inner h3,h4
-{
-border-bottom: dotted 1px #E1E1E1;
-position: relative;
-padding-bottom: 0.4em;
-}
-
-#main_inner h3
-{
-font-size: 2.1em;
-padding-bottom: 0.1em;
-}
-
-#main_inner h4
-{
-font-size: 1.2em;
-padding-bottom: 0.175em;
-margin-bottom: 1.4em;
-margin-top: 0.95em;
-}
-
-#main_inner .post
-{
-position: relative;
-}
-
-#main_inner .post h3
-{
-position: relative;
-font-size: 1.7em;
-padding-bottom: 0.4em;
-}
-
-#main_inner .post ul.post_info
-{
-list-style: none;
-position: absolute;
-top: 3em;
-font-size: 0.8em;
-}
-
-#main_inner .post ul.post_info li
-{
-background-position: 0em 0.2em;
-background-repeat: no-repeat;
-display: inline;
-padding-left: 18px;
-}
-
-#main_inner .post ul.post_info li.date
-{
-background-image: url('/themes/maniac/images/b5.gif');
-}
-
-#main_inner .post ul.post_info li.comments
-{
-background-image: url('/themes/maniac/images/b6.gif');
-margin-left: 1.1em;
-}
-
-/* Footer */
-
-#footer
-{
-width: 950px;
-margin: 0 auto;
-text-align: center;
-clear: both;
-border-top: dotted 1px #E1E1E1;
-margin-top: 1.0em;
-margin-bottom: 1.0em;
-padding-top: 1.0em;
-text-transform: lowercase;
-}
-
-/* Search */
-
-select
-{
-margin: 0.2em;
-background-color: rgb(255,128,0); color:black; border:1px solid silver;
-}
-
-textarea
-{
-margin: 0.2em;
-background-color: rgb(255,128,0); color:black; border:1px solid silver;
-}
-
-checkbox
-{
-margin: 0.2em;
-background-color: rgb(255,128,0); color:black; border:1px solid silver;
-}
-
-radio
-{
-margin: 0.2em;
-background-color: rgb(255,128,0); color:black; border:1px solid silver;
-}
-
-input
-{
-margin: 0.2em;
-background-color: rgb(255,128,0); color:black; border:1px solid silver;
-}
-
-input.button
-{
-background: #CA2F2F url('/themes/maniac/images/b3.gif') repeat-x;
-color: #fff;
-border: solid 1px #2941BC;
-font-weight: bold;
-text-transform: lowercase;
-font-size: 0.8em;
-height: 2.0em;
-}
-
-input.text
-{
-border: solid 1px #F1F1F1;
-font-size: 1.0em;
-padding: 0.25em 0.25em 0.25em 0.25em;
-}
-
-#search
-{
-position: relative;
-width: 100%;
-margin-bottom: 2.0em;
-}
-
-#search input.text
-{
-position: absolute;
-top: 0em;
-left: 0em;
-width: 9.5em;
-}
-
-#search input.button
-{
-position: absolute;
-top: 0em;
-right: 0em;
-min-width: 2.0em;
-max-width: 2.5em;
-}
-
-table.fw-nat tbody tr td {
-       height: 2.25em;
-}
-
-/* LAYOUT - 3 COLUMNS */
-
-       /* Primary content */
-       
-       #primaryContent_3columns
-       {
-       position: relative;
-       margin-right: 34em;
-       }
-       
-       #columnA_3columns
-       {
-       position: relative;
-       float: left;
-       width: 100%;
-       margin-right: -34em;
-       padding-right: 2em;
-       }
-       
-       /* Secondary Content */
-       
-       #secondaryContent_3columns
-       {
-       float: right;
-       }
-       
-       #columnB_3columns
-       {
-       width: 13.0em;
-       float: left;
-       padding: 0em 2em 0.5em 2em;
-       border-left: dotted 1px #E1E1E1;
-       }
-       
-       #columnC_3columns
-       {
-       width: 13.0em;
-       float: left;
-       padding: 0em 0em 0.5em 2em;
-       border-left: dotted 1px #E1E1E1;
-       }
-       
-/* LAYOUT - 2 COLUMNS */
-
-       /* Primary content */
-       
-       #primaryContent_2columns
-       {
-       position: relative;
-       margin-right: 17em;
-       }
-       
-       #columnA_2columns
-       {
-       position: relative;
-       float: left;
-       width: 100%;
-       margin-right: -17em;
-       padding-right: 2em;
-       }
-       
-       /* Secondary Content */
-       
-       #secondaryContent_2columns
-       {
-       float: right;
-       }
-       
-       #columnC_2columns
-       {
-       width: 13.0em;
-       float: left;
-       padding: 0em 0em 0.5em 2em;
-       border-left: dotted 1px #E1E1E1;
-       }
-
-/* LAYOUT - COLUMNLESS */
-
-       /* Primary content */
-       
-       #primaryContent_columnless
-       {
-       position: relative;
-       }
-       
-       #columnA_columnless
-       {
-       position: relative;
-       width: 100%;
-       }
-
-/* FOOTER      COLORIZE BANDWIDTH */
-
-#rx_kbs { color: green; }
-
-#tx_kbs { color: red; }
-
-iframe.graph {
-       width: 100%;
-       min-height: 300px;
-}
index 6a8133807cdee287cbdf1705c568ace05b4384ea..95af3155b572d807f73c50ba0123c36f9480291c 100644 (file)
 'backupaddon' => 'Add-On-Sicherung',
 'backupprofile' => 'Falls die Wiederverbindung scheitert, auf dieses Profil umschalten',
 'backups' => 'Sicherungen',
-'backupwarning' => 'Bitte stellen Sie zuerst Ihre Hauptsicherung wieder her und anschließend die der Add-Ons. Achten Sie darauf, dass die Sicherungen ihre originalen Dateinamen behalten.',
+'backupwarning' => 'Spielen Sie zuerst Ihre Hauptsicherung und anschließend die Sicherung(en) der Addon-Konfiguration(en) ein.<br />Es werden lediglich die gesicherten Konfigurationsdatei(en) der Addons, nicht die installierten Addons wiederhergestellt!<br />Achten Sie außerdem darauf, dass die Sicherungen ihre originalen Dateinamen behalten.',
 'bad characters in' => 'Ungültige Zeichen in ',
 'bad characters in script field' => 'Nicht erlaubte Zeichen im Skriptnamen',
 'bad characters in the telephone number field' => 'Nicht erlaubte(s) Zeichen im Feld Telefonnummer.',
 'tor traffic read written' => 'Gesamter Traffic (empfangen/gesendet)',
 'tor use exit nodes' => 'Nur diese Exitknoten benutzen (ein Fingerabdruck pro Zeile)',
 'tor use guard nodes' => 'Nur diese Guardknoten benutzen (ein Fingerabdruck pro Zeile)',
-'total connection time' => 'Gesammte Verbindungszeit',
+'total connection time' => 'Gesamte Verbindungszeit',
 'total hits for log section' => 'Gesamte Treffer für Protokollsektion',
 'traffic back' => 'Zurück',
 'traffic calc time' => 'Berechnungszeitpunkt',
 'zoneconf val stp zone mode error' => 'STP kann nur aktiviert werden, wenn sich die Zone im Brückenmodus befindet',
 'zoneconf val vlan amount assignment error' => 'Pro Zone kann nur ein VLAN verwendet werden.',
 'zoneconf val vlan tag assignment error' => 'Pro Netzwerkkarte kann derselbe VLAN-Tag nur einmal verwendet werden.',
+'zoneconf val vlan tag range error' => 'VLAN-Tag muss im Bereich 1-4094 liegen.',
 'zoneconf val zoneslave amount error' => 'Wenn eine Zone nicht im Brückenmodus ist, kann ihr nur eine Netzwerkkarte zugewiesen werden.',
 );
 
index 8f7e0c2cf137e19086030533df49250cce9a552c..dc1fd8d67b3067c4eacf03dd4f2a43a59bf94dc7 100644 (file)
 'backupaddon' => 'Addon Backup',
 'backupprofile' => 'In case reconnection fails, switch to profile',
 'backups' => 'backups',
-'backupwarning' => 'Please first restore your main backup and after this your addon backups. Please keep the original filename, given when you download.',
+'backupwarning' => 'Import your main backup first and then the backup(s) of the addon configuration(s).<br />Only the backed up addon configuration file(s) will be restored, not the installed addons!<br />Also make sure that the backups keep their original file names.',
 'bad characters in' => 'Bad characters in ',
 'bad characters in script field' => 'Bad characters in script field',
 'bad characters in the telephone number field' => 'Bad characters in the telephone number field.',
 'zoneconf val stp zone mode error' => 'STP can only be enabled if the zone is in bridge mode',
 'zoneconf val vlan amount assignment error' => 'A zone cannot have more than one VLAN assigned.',
 'zoneconf val vlan tag assignment error' => 'You cannot use the same VLAN tag more than once per NIC.',
+'zoneconf val vlan tag range error' => 'VLAN tag must be in the range of 1-4094.',
 'zoneconf val zoneslave amount error' => 'A zone that is not in bridge mode can\'t have more than one NIC assigned',
 );
 
index 8c744c3c463e559e633287ed189cc9d77e681fb3..c9a7496bc0b662cdfb36ae857c5535341a83b4a0 100644 (file)
 'backupaddon' => 'Addon Backup',
 'backupprofile' => 'En caso de fallo en la reconexión, cambie de perfil.',
 'backups' => 'respaldos',
-'backupwarning' => 'Por favor primer restaure su respaldo principal y después de eso el respaldo de los addons. Por favor mantenga el nombre original que recibió al descargarlos.',
+'backupwarning' => 'Importe primero su copia de seguridad principal y luego la(s) copia(s) de seguridad de la(s) configuración(es) de los addon(es).<br />Sólo se restaurarán los archivos de configuración de los addons de los que se ha hecho copia de seguridad, no los addons instalados.<br />Asegúrese también de que las copias de seguridad mantienen sus nombres de archivo originales.',
 'bad characters in' => 'Caracteres equivocados en',
 'bad characters in script field' => 'Caracteres equivocados en el campo script',
 'bad characters in the telephone number field' => 'Caracteres equivocados en el campo número telefónico.',
index dff8b601150e8273322ba19f1d9c4a4f9814052a..30110947724660c92aeea192bc01193fc972dbdf 100644 (file)
 'The destination IP address is invalid.' => 'L\'adresse IP de destination n\'est pas valide.',
 'The source IP address is invalid.' => 'L\'adresse IP source n\'est pas valide.',
 'Utilization on' => 'Utilisation active',
-'Verbose' => 'Verbeux :',
+'Verbose' => 'Détaillé :',
 'WakeOnLan' => 'Réveil via le réseau',
 'Weekly' => 'Hebdomadaire',
 'a ca certificate with this name already exists' => 'Un certificat de CA avec ce nom existe déjà.',
 'advanced' => 'Avancé',
 'advanced server' => 'Options avancées du serveur',
 'advproxy AUTH always required' => 'Exiger l\'authentification pour un accès sans restriction des adresses sources ',
-'advproxy AUTH auth cache TTL' => 'Cache d\'authentification TTL (en minutes) ',
-'advproxy AUTH global settings' => 'Paramètres d\'authentification global',
+'advproxy AUTH auth cache TTL' => 'Cache authentification TTL (en minutes) ',
+'advproxy AUTH global settings' => 'Paramètres authentification global',
 'advproxy AUTH limit of IP addresses' => 'Limite d\'adresses IP par utilisateur ',
 'advproxy AUTH method' => 'Méthode d\'authentification',
 'advproxy AUTH method ident' => 'identd',
 'advproxy AUTH no auth' => 'Domaines sans authentification (un par ligne) ',
 'advproxy AUTH number of auth processes' => 'Nombre de processus d\'authentification ',
 'advproxy AUTH realm' => 'Invite du domaine d\'authentification ',
-'advproxy AUTH user IP cache TTL' => 'Cache utilisateur/IP TTL (en minutes)',
+'advproxy AUTH user IP cache TTL' => 'Cache utilisateur / IP TTL (en minutes) ',
 'advproxy IDENT authorized users' => 'Utilisateurs autorisés (un par ligne)',
 'advproxy IDENT aware hosts' => 'Identification des hôtes courants (un par ligne) ',
 'advproxy IDENT identd settings' => 'Paramètres communs identd',
 'advproxy log query' => 'Termes de recherche en rapports ',
 'advproxy log settings' => 'Configuration des rapports',
 'advproxy log useragent' => 'Rapport des robots (de recherche) ',
-'advproxy max download size' => 'Volume de téléchargement maximal (Ko) ',
-'advproxy max size' => 'Volume d\'objet maximal (Ko) ',
-'advproxy max upload size' => 'Volume d\'envoi maximal (Ko) ',
+'advproxy max download size' => 'Volume de téléchargement max. (Ko) ',
+'advproxy max size' => 'Volume d\'objet max. (Ko) ',
+'advproxy max upload size' => 'Volume d\'envoi max. (Ko) ',
 'advproxy memory replacement policy' => 'Politique de remplacement de mémoire ',
-'advproxy min size' => 'Volume d\'objet minimal (Ko) ',
+'advproxy min size' => 'Volume d\'objet min. (Ko) ',
 'advproxy mode allow' => 'Autorisé',
 'advproxy mode deny' => 'Interdit',
 'advproxy monday' => 'Lun',
 'authentication' => 'Authentification :',
 'automatic' => 'Automatique',
 'autonomous system' => 'Système autonome',
-'available updates' => 'Mises à jour disponibles :',
+'available updates' => 'Mises à jour disponibles ',
 'average' => 'Moyenne',
 'avoid dod' => 'Ne pas utiliser cette option avec connexion à la demande ! Principalement utilisée si votre IPFire se trouve derrière un routeur. Votre IP ROUGE doit être au coeur de l\'un des trois numéros de réseau réservés, par exemple 10 / 8, 172.16/12, 192.168/16',
 'back' => 'Retour',
 'backupaddon' => 'Sauvegarde additionnelle',
 'backupprofile' => 'Dans le cas ou la reconnexion échouerait, changer de profil ',
 'backups' => 'Sauvegardes',
-'backupwarning' => 'Veuillez restaurer votre sauvegarde principale et ensuite vos sauvegardes additionnelles. Veuillez conserver le nom de fichier fourni lors du téléchargement.',
+'backupwarning' => 'Importez d\'abord votre sauvegarde principale, puis la ou les sauvegardes de la ou des configurations des addons.<br />Seuls les fichiers de configuration d\'addons sauvegardés seront restaurés, pas les addons installés!.<br />Assurez-vous également que les sauvegardes conservent leurs noms de fichiers originaux.',
 'bad characters in' => 'Mauvais caractères dans ',
 'bad characters in script field' => 'Mauvais caractères dans le champ de script',
 'bad characters in the telephone number field' => 'Mauvais caractères dans le champ du numéro de téléphone',
 'demon login script' => 'Script de login du service',
 'deprecated fs warn' => 'Système de fichiers obsolète ! Le nouveau noyau supprime le support. Sauvegarde et reformatage !',
 'description' => 'Description',
-'desired' => 'Voulu',
+'desired' => 'Souhaité',
 'dest ip and port' => 'IP Dest.:Port',
 'destination' => 'Destination',
 'destination ip' => 'IP de destination',
 'dhcp bootp pxe data' => 'Saisissez une donnée bootp pxe optionnelle pour ce bail fixe',
 'dhcp configuration' => 'Configuration DHCP',
 'dhcp create fixed leases' => 'Créer des baux fixes',
+'dhcp deny known clients:' => 'Refuser les clients connus :',
 'dhcp dns enable update' => 'Activer mise à jour DNS (RFC2136) :',
 'dhcp dns key name' => 'Nom clé ',
 'dhcp dns update' => 'Mise à jour DNS',
 'dhcp server disabled on blue interface' => 'Serveur DHCP arrete sur l\'interface BLEUE',
 'dhcp server enabled' => 'Serveur DHCP demarre. Redemarrage.',
 'dhcp server enabled on blue interface' => 'Serveur DHCP demarre sur l\'interface BLEUE',
+'dhcp valid range required when deny known clients checked' => 'Plage valide requise lorsque "Refuser les clients connus" est coché',
 'dhcp-options' => 'Options Push DHCP',
 'dial' => 'Connexion',
 'dial profile' => 'Contact avec le profil',
 'fireinfo not submitted' => 'Votre profil n\'est pas soumis au service Fireinfo.',
 'fireinfo not submitted button' => 'Oui, je souhaite envoyer mes infos de profil à Fireinfo',
 'fireinfo pakfire version' => 'Version Pakfire ',
-'fireinfo please enable' => 'Veuillez activer le service Fireinfo.',
+'fireinfo please enable' => 'Veuillez s\'il vous plait activer le service Fireinfo.',
 'fireinfo settings' => 'Paramètre Fireinfo',
 'fireinfo system version' => 'Versions du système',
 'fireinfo why descr1' => 'Il est très important pour le développement d\'IPFire que vous activiez ce',
 'manual' => 'Manuel',
 'manual control and status' => 'Contrôle manuel et statut :',
 'manually' => 'Manuellement',
-'map to guest' => 'Carte de l\'utilisateur',
+'map to guest' => 'Bascule vers Invité',
 'march' => 'Mars',
 'marked' => 'Marque',
 'masquerade blue' => 'Masque réseau BLEU',
 'printing options' => 'Options d\'impression',
 'priority' => 'Priorité',
 'processes' => 'Processus',
-'processor vulnerability mitigations' => 'Atténuation de la vulnérabilité du processeur',
+'processor vulnerability mitigations' => 'Modération de la vulnérabilité du processeur',
 'profile' => 'Profil',
 'profile deleted' => 'Profil supprimé : ',
 'profile has errors' => 'Le profil de connexion contient des erreurs',
 'resetglobals' => 'Réinitialiser les paramètres globaux',
 'resetpolicy' => 'Réinitialiser la politique par défaut',
 'resetshares' => 'réinitialiser les partages ?',
-'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections' => 'La réinitialisation de la configuration VPN va supprimer le CA root, le certificat hôte et tous les certificats basés sur les connexions ',
+'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections' => 'La réinitialisation de la configuration VPN va supprimer le CA root, le CA hôte et tous les certificats basés sur les connexions ',
 'restart' => 'Relancer',
 'restart ovpn server' => 'Relancer le serveur OpenVPN',
 'restore' => 'Restauration',
 'ssh passwords' => 'Autoriser l\'authentification par mot de passe',
 'ssh port' => 'Définir le port SSH à 22 (par défaut 222)',
 'ssh portfw' => 'Autoriser le transfert TCP',
-'ssh tempstart15' => 'Arrêter le service SSH dans 15 mns',
-'ssh tempstart30' => 'Arrêter le service SSH dans 30 mns',
+'ssh tempstart15' => 'Arrêt du service SSH dans 15 mns',
+'ssh tempstart30' => 'Arrêt du service SSH dans 30 mns',
 'ssh username' => 'Nom d\'utilisateur',
 'ssh1 disabled' => 'SSHv1 est désactivé, la version 2 du client est requise.',
 'ssh1 enabled' => 'SSHv1 est activé, les anciens clients sont supportés.',
 'to warn email bad' => 'L\'adresse email de destination n\'est pas valide',
 'toggle' => 'pause/reprise',
 'toggle enable disable' => 'Activer ou désactiver',
+'token' => 'Jeton :',
+'token not set' => 'Aucun jeton n\'a été donné.',
 'tone' => 'Tonalité',
 'tone dial' => 'DTMF :',
 'too long 80 char max' => ' est trop long, le maximum autorisé est de 80 caractères',
 'updxlrtr not accessed' => 'utilisés la dernière fois depuis',
 'updxlrtr not enabled' => 'La mise à jour de l\'accélérateur n\'est pas activée sur la page web du proxy',
 'updxlrtr other' => 'Autre',
+'updxlrtr passive mode' => 'Activer le mode passif (bloque l\'ajout de nouveaux fichiers dans le cache) ',
 'updxlrtr pending downloads' => 'Téléchargements en cours',
 'updxlrtr performance options' => 'Options de performance',
 'updxlrtr progress' => 'En cours',
 'wlan client encryption wep' => 'WEP',
 'wlan client encryption wpa' => 'WPA',
 'wlan client encryption wpa2' => 'WPA2',
+'wlan client encryption wpa3' => 'WPA3',
 'wlan client group cipher' => 'Chiffrer groupe',
 'wlan client group key algorithm' => 'GKA',
 'wlan client identity' => 'Identité ',
 'wlan client invalid key length' => 'Longueur de clé invalide.',
+'wlan client management frame protection' => 'Protection du cadre de gestion',
 'wlan client method' => 'Méthode',
 'wlan client new entry' => 'Créer une nouvelle configuration de client sans fil',
 'wlan client new network' => 'Nouveau réseau',
 'wlanap link dhcp' => 'Configuration DHCP du réseau local sans fil',
 'wlanap link wireless' => 'Activer les clients LAN sans fil',
 'wlanap management frame protection' => 'Protection des trames de gestion (802.11w)',
-'wlanap neighbor scan' => 'Balayage des réseaux proches',
+'wlanap neighbor scan' => 'Balayage réseaux proches',
 'wlanap neighbor scan warning' => 'Attention ! La désactivation peut enfreindre les règles réglementaires !',
 'wlanap no interface' => 'L\'interface choisie n\'est pas une carte LAN sans fil !',
 'wlanap none' => 'aucun',
 'wlanap notifications' => 'Notifications',
 'wlanap select interface' => 'Veuillez choisir l\'interface réseau sans fil.',
 'wlanap ssid' => 'SSID',
-'wlanap verbose' => 'Verbeux',
+'wlanap verbose' => 'Détaillé',
 'wlanap warnings' => 'Alertes',
 'wlanap wlan card' => 'Carte WLan',
 'wlanap wlan services' => 'Services WLan',
 'zoneconf nicmode default' => 'Défaut',
 'zoneconf nicmode macvtap' => 'MacVTap',
 'zoneconf notice reboot' => 'Veuillez redémarrer pour appliquer vos changements.',
+'zoneconf stp enable' => 'Activer STP',
+'zoneconf stp priority' => 'Priorité de pont',
 'zoneconf title' => 'Configuration des zones',
 'zoneconf val native assignment error' => 'Une carte réseau ne peut pas être utilisée nativement par davantage qu\'une zone.',
 'zoneconf val ppp assignment error' => 'La carte réseau utilisée pour ROUGE en mode PPP ne peut être utilisée par une autre zone.',
+'zoneconf val stp priority range error' => 'La priorité du pont STP doit être comprise entre 1 et 65535',
+'zoneconf val stp zone mode error' => 'STP ne peut être activé que si la zone est en mode pont',
 'zoneconf val vlan amount assignment error' => 'Une zone ne peut pas avoir plus d\'un VLAN attribué.',
 'zoneconf val vlan tag assignment error' => 'Vous ne pouvez pas utiliser le même label VLAN plus d\'une fois par carte réseau.',
 'zoneconf val zoneslave amount error' => 'Une zone qui n\'est pas en mode pont ne peut pas avoir plus d\'une carte réseau assignée',
index 4841d00176efb7d0067e323b5a13d40e985c69d8..e82ecfd3549f0b88c50199c915e8431ee24874e0 100644 (file)
 'backupaddon' => 'Addon Backup',
 'backupprofile' => 'In case reconnection fails, switch to profile',
 'backups' => 'Backups',
-'backupwarning' => 'Per favore prima di ripristinare il backup del sistema e/o il backup addon, Si prega di mantenere il nome del file originale di quando &eacute; stato scaricato.',
+'backupwarning' => 'Importa prima il tuo backup principale e poi il/i backup della/e configurazione/i degli addon.<br />Solo i file di configurazione addon di cui è stato fatto il backup saranno ripristinati, non gli addon installati!<br />Assicurati anche che i backup mantengano i nomi originali dei file.',
 'bad characters in' => 'Bad characters in ',
 'bad characters in script field' => 'Bad characters in script field',
 'bad characters in the telephone number field' => 'Bad characters in the telephone number field.',
index 18103d37c152adf188ca0718376b90eeb4a86f99..55927839ea4f103dd85e190a11b2fe5043a289d0 100644 (file)
 'backupaddon' => 'Back-up toevoeging',
 'backupprofile' => 'In geval het opnieuw verbinden mislukt, schakel dan over naar profiel',
 'backups' => 'back-ups',
-'backupwarning' => 'Zet a.u.b. eerst uw hoofdback-ups terug en daarna de toevoegde back-ups. Gebruik de originele bestandsnaam die u gebruikt heeft voor de download.',
+'backupwarning' => 'Importeer eerst uw hoofdback-up en dan de back-up(en) van de addon configuratie(s).<br />Alleen de configuratiebestanden van de addons waarvan een backup is gemaakt worden hersteld, niet de geïnstalleerde addons!<br />Zorg er ook voor dat de back-ups hun oorspronkelijke bestandsnamen behouden.',
 'bad characters in' => 'Ongeldige tekens in ',
 'bad characters in script field' => 'Ongeldige tekens in scriptveld',
 'bad characters in the telephone number field' => 'Ongeldige tekens in telefoonnummerveld',
index d163287788c0001b1b609927a80ba7886fd25df4..147db051cc4060f5bf4cb6fd1b7d0d295b4b26b3 100644 (file)
 'backupaddon' => 'Kopia dodatków',
 'backupprofile' => 'Jeżeli ponowne połączenie nie powiedzie się przełącz na profil',
 'backups' => 'kopie',
-'backupwarning' => 'Najpierw należy przywrócić kopię podstawową, a następnie kopię dodatków. Proszę nie zmieniać nazwy pobranych plików z kopiami.',
+'backupwarning' => 'Najpierw zaimportuj główną kopię zapasową, a następnie kopie zapasowe konfiguracji dodatków.<br />Tylko kopie zapasowe plików konfiguracyjnych dodatków zostaną przywrócone, a nie zainstalowane dodatki!<br />Upewnij się również, że kopie zapasowe zachowują oryginalne nazwy plików.',
 'bad characters in' => 'Niepoprawny znak w ',
 'bad characters in script field' => 'Niepoprawny znak w polu skryptu',
 'bad characters in the telephone number field' => 'Niepoprawny znak w polu z numerem telefonu.',
index 58581d3532906a1dbc1c5e85a5efffd352c2aa04..0d986135d5c9f527e1af50039c62ca9609146d07 100644 (file)
 'backupaddon' => 'Резервная копия аддонов',
 'backupprofile' => 'Если не получается переподключиться, укажите другой профиль',
 'backups' => 'Резервные копии',
-'backupwarning' => 'Ð\9fожалÑ\83йÑ\81Ñ\82а, Ñ\81пеÑ\80ва Ð²Ð¾Ñ\81Ñ\81Ñ\82ановиÑ\82е Ñ\80езеÑ\80внÑ\83Ñ\8e ÐºÐ¾Ð¿Ð¸Ñ\8e Ñ\81иÑ\81Ñ\82емÑ\8b, Ð° Ð·Ð°Ñ\82ем Ð°Ð´Ð´Ð¾Ð½Ñ\8b. <br> Ð\9fожалÑ\83йÑ\81Ñ\82а Ñ\81оÑ\85Ñ\80аниÑ\82е Ð¾Ñ\80игиналÑ\8cное Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñ\84айла, ÐºÐ¾Ñ\82оÑ\80ое Ð±Ñ\8bло Ð¿Ñ\80и Ñ\81каÑ\87ивании.',
+'backupwarning' => 'СнаÑ\87ала Ð¸Ð¼Ð¿Ð¾Ñ\80Ñ\82иÑ\80Ñ\83йÑ\82е Ð¾Ñ\81новнÑ\83Ñ\8e Ñ\80езеÑ\80внÑ\83Ñ\8e ÐºÐ¾Ð¿Ð¸Ñ\8e, Ð° Ð·Ð°Ñ\82ем Ñ\80езеÑ\80внÑ\83Ñ\8e ÐºÐ¾Ð¿Ð¸Ñ\8e ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии (ов) Ð½Ð°Ð´Ñ\81Ñ\82Ñ\80ойки.<br />ТолÑ\8cко Ð·Ð°Ñ\80езеÑ\80виÑ\80ованнÑ\8bе Ñ\84айлÑ\8b ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии Ð½Ð°Ð´Ñ\81Ñ\82Ñ\80ойки Ð±Ñ\83дÑ\83Ñ\82 Ð²Ð¾Ñ\81Ñ\81Ñ\82ановленÑ\8b, Ð½Ðµ Ñ\83Ñ\81Ñ\82ановленнÑ\8bе Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ\8f!<br />Также Ñ\83бедиÑ\82еÑ\81Ñ\8c, Ñ\87Ñ\82о Ð² Ñ\80езеÑ\80внÑ\8bÑ\85 ÐºÐ¾Ð¿Ð¸Ñ\8fÑ\85 Ñ\81оÑ\85Ñ\80аненÑ\8b Ð¸Ñ\81Ñ\85однÑ\8bе Ð¸Ð¼ÐµÐ½Ð° Ñ\84айлов.',
 'bad characters in' => 'Неправильные символы в ',
 'bad characters in script field' => 'Неправильные символы в поле скрипта',
 'bad characters in the telephone number field' => 'Неправильные символы в поле телефонного номера.',
index 14de385c119a72c32a9168ec4bf3d2b8c8a4ca6f..36c4782d67b6f207d0509cb99a732d82b2b5552c 100644 (file)
 'backupaddon' => 'Eklentiyi yedekle',
 'backupprofile' => 'Yeniden bağlanma başarısız durumda. Profile geçin',
 'backups' => 'Yedekler',
-'backupwarning' => 'Eklenti yedeklemesi için lütfen önce geri yükleme yedeklemesi oluşturun. İndirme zamanı verilen orjinal dosya ile devam edin.',
+'backupwarning' => 'Önce ana yedeğinizi ve ardından eklenti yapılandırmasının yedeklerini içe aktarın.<br />Yalnızca yedeklenen eklenti yapılandırma dosyaları geri yüklenecek, yüklü eklentiler  değil!<br />Ayrıca yedeklerin orijinal dosya adlarını koruduğundan emin olun.',
 'bad characters in' => 'Yablış karakterler ',
 'bad characters in script field' => 'Komut alanındaki yanlış karakterler',
 'bad characters in the telephone number field' => 'Telefon numarası alanındaki yanlış karakterler.',
index ee3dc2365cf987e53b8dd3deed956e1d7c9b97e9..eadbbc408184304234eb80825acc22bba6b90b19 100644 (file)
@@ -35,7 +35,9 @@ unexport BUILD_ARCH BUILD_PLATFORM BUILDTARGET CROSSTARGET TOOLCHAIN TOOLS_DIR
 unexport XZ_OPT
 
 PARALLELISM = $(shell echo $$( \
-       if [ -n "$(MAX_PARALLELISM)" ] && [ $(MAX_PARALLELISM) -lt $(DEFAULT_PARALLELISM) ]; then \
+       if [ -n "$(MAX_PARALLELISM)" ] && [ $(MAX_PARALLELISM) -lt 1 ]; then \
+               echo 1 ; \
+       elif [ -n "$(MAX_PARALLELISM)" ] && [ $(MAX_PARALLELISM) -lt $(DEFAULT_PARALLELISM) ]; then \
                echo $(MAX_PARALLELISM); \
        else \
                echo $(DEFAULT_PARALLELISM); \
index 5cdc2155d2fe86cc422d178f28972070e7de34d3..e2fabe873785bc12cc131c52e03ca52b23c720d7 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2020  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.25
+VER        = 1.30
 
 THISAPP    = Net-DNS-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 5c0d1a6de317993e146ce6d37c897be5
+$(DL_FILE)_MD5 = 2d0751f5f1a92e4cc95835cd4b9a1d8e
 
 install : $(TARGET)
 
diff --git a/lfs/acl b/lfs/acl
index 5cf262ef98ec596db6416f1770c543a78b506d1c..cecdb8334520235bd6391d7902ba735ac83122e9 100644 (file)
--- a/lfs/acl
+++ b/lfs/acl
 
 include Config
 
-VER        = 2.2.53
+VER        = 2.3.1
 
 THISAPP    = acl-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 007aabf1dbb550bcddde52a244cd1070
+$(DL_FILE)_MD5 = 95ce715fe09acca7c12d3306d0f076b2
 
 install : $(TARGET)
 
index e1edd6076ffc90eec6689e0839a78083954403f2..6c8db290c8b816181b566b6bdb0e9f4bf5a6faa3 100644 (file)
--- a/lfs/attr
+++ b/lfs/attr
 
 include Config
 
-VER        = 2.4.48
+VER        = 2.5.1
 
 THISAPP    = attr-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = bc1e5cb5c96d99b24886f1f527d3bb3d
+$(DL_FILE)_MD5 = e459262266bbd82b3dd348fc8cc68a6d
 
 install : $(TARGET)
 
@@ -69,7 +69,7 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        $(UPDATE_AUTOMAKE)
        cd $(DIR_APP) && ./configure
        cd $(DIR_APP) && make
diff --git a/lfs/backports b/lfs/backports
deleted file mode 100644 (file)
index 0ad9b0c..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VERSUFIX   = ipfire$(KCFG)
-
-VER        = 4.2.6-1
-
-THISAPP    = backports-$(VER)
-DL_FILE    = $(THISAPP).tar.xz
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX)
-
-#ifeq "$(BUILD_PLATFORM)" "arm"
-CFLAGS   += -fno-PIC
-#endif
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 3f978eb56473d9289cf21ebbcb5aa80b
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       $(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-
-       # remove replaced kernel modules
-       rm -rf /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
-       rm -rf /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/media
-
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-3.18.1-1-ipfire-build.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-4.2.6-1-grsecurity.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-4.2.6-1-add_usbnet_modules.patch
-ifeq "$(BUILD_ARCH)" "x86_64"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-3.18.1-1_no_dma_sgtable_on_x86_64.patch
-endif
-
-       # DVB patches
-       cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/v4l-dvb_fix_tua6034_pll.patch
-
-       # Wlan patches
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-iwlwifi-noibss_only_on_radar_chan.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-3.18.1-1_rt2x00usb_suppress_queue_warnings.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-4.2.6-1-mt7601_upstream_fixes.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-3.18.1-1_add_libertas_uap.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-4.2.6-1_ath10k_remove_logspam.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-4.2.6-1-ath9k_add_missing_mask_init.patch
-
-       # smsc mac address patch for pandaboard and raspberry pi
-ifeq "$(KCFG)" "-multi"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch
-endif
-ifeq "$(KCFG)" "-rpi"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch
-endif
-
-       # Patches form stable linux updates
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports/backports-linux-upstream-1.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports/backports-linux-upstream-2.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports/backports-linux-upstream-3.patch
-
-       # generate config
-       cd $(DIR_APP) && make KLIB=/lib/modules/$(KVER)-$(VERSUFIX)/ allmodconfig
-
-       # Disable some settings
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_CFG80211_DEVELOPER_WARNINGS=y/# CPTCFG_CFG80211_DEVELOPER_WARNINGS is not set/g" .config
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_CFG80211_INTERNAL_REGDB=y/# CPTCFG_CFG80211_INTERNAL_REGDB is not set/g" .config
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_CFG80211_DEFAULT_PS=y/# CPTCFG_CFG80211_DEFAULT_PS is not set/g" .config
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_NFC=m/# CPTCFG_NFC is not set/g" .config
-
-ifeq "$(BUILD_ARCH)" "x86_64"
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_LIBERTAS_UAP=m/# CPTCFG_LIBERTAS_UAP is not set/g" .config
-endif
-
-       # Disable some modules (build fail/missing symbols)
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_VIDEO_AM437X_VPFE=m/# CPTCFG_VIDEO_AM437X_VPFE is not set/g" .config
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_VIDEO_VIA_CAMERA=m/# CPTCFG_VIDEO_VIA_CAMERA is not set/g" .config
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_VIDEO_XILINX=m/# CPTCFG_VIDEO_XILINX is not set/g" .config
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_IR_SUNXI=m/# CPTCFG_IR_SUNXI is not set/g" .config
-       cd $(DIR_APP) && sed -i -e "s/CPTCFG_BT_6LOWPAN=m/# CPTCFG_BT_6LOWPAN is not set/g" .config
-
-       # Disable DEBUG
-       cd $(DIR_APP) && sed -i -e "s/.*DEBUG=y/# & is not set/g" .config
-       cd $(DIR_APP) && sed -i -e "s/.*DEBUGFS=y/# & is not set/g" .config
-       cd $(DIR_APP) && sed -i -e "s/=y is not set/ is not set/g" .config
-
-       cd $(DIR_APP) && make $(MAKETUNING) KLIB=/lib/modules/$(KVER)-$(VERSUFIX)/ install
-
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
index 592d61ed298eaac667e4bd7816cf8d65b738fb60..c0c7c5ebfeb59a6c3dff784794016cb55cc9810a 100644 (file)
--- a/lfs/bind
+++ b/lfs/bind
@@ -25,7 +25,7 @@
 
 include Config
 
-VER        = 9.11.28
+VER        = 9.11.29
 
 THISAPP    = bind-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 59aa4d7be438b2c8103811d18f318c82
+$(DL_FILE)_MD5 = 439d5491dfea08be032a1f9ca5a54faa
 
 install : $(TARGET)
 
index 9c65723f552313261f570e5498b486cf069b4690..3a2681406570167812aac6ba48b7cc5e81b02aee 100644 (file)
--- a/lfs/bison
+++ b/lfs/bison
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.7.1
+VER        = 3.7.6
 
 THISAPP    = bison-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -45,7 +45,7 @@ objects =$(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e7c8c321351ebdf70f5f0825f3faaee2
+$(DL_FILE)_MD5 = d61aa92e3562cb7292b004ce96173cf7
 
 install : $(TARGET)
 
index da20ce68cc19f045fc998f6987009d65a28de7c5..9c6f9c5a4d70b3e00f0fefd90e6ecf56f39551b4 100644 (file)
--- a/lfs/bzip2
+++ b/lfs/bzip2
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.0.6
+VER        = 1.0.8
 
 THISAPP    = bzip2-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -47,7 +47,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 00b516f4704d4a7cb50a1d97e6e8e15b
+$(DL_FILE)_MD5 = 67e051268d0c475ea773822f7500d0e5
 
 install : $(TARGET)
 
index 2c4d6a6bac22483c7c30c4af6f1cb828f2e19027..e36b4003d76cb392697f0444f13a07f18f43475a 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2020  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.103.1
+VER        = 0.103.2
 
 THISAPP    = clamav-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = clamav
-PAK_VER    = 54
+PAK_VER    = 55
 
 DEPS       =
 
@@ -50,7 +50,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = f895e9a261937ed91f5cb3ead4791555
+$(DL_FILE)_MD5 = 508e6988e2937985e702cc3a2202b6e7
 
 install : $(TARGET)
 
index 76ac3e6fa3914351da92de4c9d9cd77311ede49b..e9cbd7678e3a12a25af74febe4f55db7a5dead8d 100644 (file)
--- a/lfs/cmake
+++ b/lfs/cmake
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2020  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.18.3
+VER        = 3.20.0
 
 THISAPP    = cmake-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d87c668d17cda91dbf41c52e0ffc821f
+$(DL_FILE)_MD5 = 9079201b76ca8d5b8b5337443369ae59
 
 install : $(TARGET)
 
index f4e911e0517f9bc021d7f2116db78a0542f6c27b..bd812942e944517789a32c88e96ebe21e2bf113d 100644 (file)
--- a/lfs/crda
+++ b/lfs/crda
 
 include Config
 
-VER        = 3.18
+VER        = 4.14
 
 THISAPP    = crda-$(VER)
-DL_FILE    = $(THISAPP).tar.xz
+DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 
@@ -41,7 +41,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 0431fef3067bf503dfb464069f06163a
+$(DL_FILE)_MD5 = cac7ba8de3e2e6aa46918e0c76df7d67
 
 install : $(TARGET)
 
index aee8f36f1e064ad5f94adfff257a10320ffdace1..03c278d2a2b2566d2155f69f1d7b346434f053ff 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.6
+VER        = 3.7
 
 THISAPP    = diffutils-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -47,7 +47,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 07cf286672ced26fba54cd0313bdc071
+$(DL_FILE)_MD5 = 4824adc0e95dbbf11dfbdfaad6a1e461
 
 install : $(TARGET)
 
diff --git a/lfs/e1000e b/lfs/e1000e
deleted file mode 100644 (file)
index 80a3c35..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VERSUFIX = ipfire$(KCFG)
-MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/e1000e
-
-VER        = 3.3.3
-
-THISAPP    = e1000e-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX)
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 01274408a0f987457600dc7993c9d59a
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       $(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       #Save original e1000e module
-       -mv $(MODPATH)/e1000e.ko \
-           $(MODPATH)/e1000e.ko.org
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP)/src && make BUILD_KERNEL=$(KVER)-$(VERSUFIX)
-       cd $(DIR_APP)/src && install -m 644 e1000e.ko $(MODPATH)
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
diff --git a/lfs/ed b/lfs/ed
index d628a029b1feda56267b55945596a858571957e3..b2f2dd8fe1f1a4619d22e8fcae29b5e9e18300a7 100644 (file)
--- a/lfs/ed
+++ b/lfs/ed
 
 include Config
 
-VER        = 0.2
+VER        = 1.17
 
 THISAPP    = ed-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.lz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -35,13 +35,11 @@ TARGET     = $(DIR_INFO)/$(THISAPP)
 ###############################################################################
 # Top-level Rules
 ###############################################################################
-objects = $(DL_FILE) $(THISAPP)-mkstemp-1.patch
+objects = $(DL_FILE)
 
 $(DL_FILE)                     = $(DL_FROM)/$(DL_FILE)
-$(THISAPP)-mkstemp-1.patch     = $(DL_FROM)/$(THISAPP)-mkstemp-1.patch
 
-$(DL_FILE)_MD5                 = ddd57463774cae9b50e70cd51221281b
-$(THISAPP)-mkstemp-1.patch_MD5 = e7e2248f9baa76de3db8210298e0d79e
+$(DL_FILE)_MD5                 = 894748c9bbf35cb7c599f5317b1a8cdb
 
 install : $(TARGET)
 
@@ -70,8 +68,7 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_DL)/$(THISAPP)-mkstemp-1.patch
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && ./configure --prefix=/usr --exec-prefix="" --disable-nls
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
index 9c47228daf72d42de958a53297944e05dda61c72..ea5131ef57f34b0cac8fc0eef034a34f49b7859c 100644 (file)
@@ -35,7 +35,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/foomatic-filters-$(VER_FILTERS)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = foomatic
-PAK_VER    = 5
+PAK_VER    = 6
 
 DEPS       = cups ghostscript libtiff hplip
 
index a4f8eeb9cb53e8446883924d33cc4da6bd35c0a9..2e32f3bea5160ea81ac8d448a98f6bfc5c8fe233 100644 (file)
--- a/lfs/gawk
+++ b/lfs/gawk
@@ -25,7 +25,7 @@
 
 include Config
 
-VER        = 4.1.4
+VER        = 5.1.0
 
 THISAPP    = gawk-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -49,7 +49,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4e7dbc81163e60fd4f0b52496e7542c9
+$(DL_FILE)_MD5 = 8470c34eeecc41c1aa0c5d89e630df50
 
 install : $(TARGET)
 
index 0cf9cca6b3c76bee571e323dbfefeb68ea928a2d..b9eb24a85272ffa01760dfa3acb14f632610a673 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.19.8.1
+VER        = 0.21
 
 THISAPP    = gettext-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -49,7 +49,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = df3f5690eaa30fd228537b00cb7b7590
+$(DL_FILE)_MD5 = 40996bbaf7d1356d3c22e33a8b255b31
 
 install : $(TARGET)
 
diff --git a/lfs/git b/lfs/git
index 125690562f4febf9f9b74d244a6b1ce7f3e14771..2290c6e990aa77bbbc8574d4177ed819002b4a42 100644 (file)
--- a/lfs/git
+++ b/lfs/git
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.28.0
+VER        = 2.31.0
 
 THISAPP    = git-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = git
-PAK_VER    = 18
+PAK_VER    = 19
 
 DEPS       = perl-Authen-SASL perl-MIME-Base64 perl-Net-SMTP-SSL
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 5fde0206768ed70092d1fcc8f447251a
+$(DL_FILE)_MD5 = c7f808ab107b666af45fccb56b9d9676
 
 install : $(TARGET)
 
diff --git a/lfs/gmp b/lfs/gmp
index f35c4a6353084a8a97ec0ad92a23c39e89b69697..b2d0ada15bbc58f2556eb338d97405f5e1710056 100644 (file)
--- a/lfs/gmp
+++ b/lfs/gmp
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 6.2.0
+VER        = 6.2.1
 
 THISAPP    = gmp-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a325e3f09e6d91e62101e59f9bda3ec1
+$(DL_FILE)_MD5 = 0b82665c4a92fd2ade7440c13fcaa42b
 
 install : $(TARGET)
 
index 75df7eba53837db0871d64613fd500b78204cbe7..440b339055ec0cf0cb04585517ecc848c58c2cfe 100644 (file)
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = gnump3d
-PAK_VER    = 6
+PAK_VER    = 7
 
 DEPS       =
 
index 6a8cd38ee92941e5be5a9cd9fcc6b0ea8aa23187..ef2156ae3407860edff0405a816f85ccfde3901e 100644 (file)
--- a/lfs/gperf
+++ b/lfs/gperf
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.0.4
+VER        = 3.1
 
 THISAPP    = gperf-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -39,7 +39,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c1f1db32fb6598d6a93e6e88796a8632
+$(DL_FILE)_MD5 = 9e251c0a618ad0824b51117d5d9db87e
 
 install : $(TARGET)
 
diff --git a/lfs/gpgme b/lfs/gpgme
deleted file mode 100644 (file)
index a6056fc..0000000
--- a/lfs/gpgme
+++ /dev/null
@@ -1,85 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER        = 1.3.2
-
-THISAPP    = gpgme-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG       = gpgme
-PAK_VER    = 2
-
-DEPS       = libassuan
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 326fe97077141713f0930aa87949a287
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       @$(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
-       $(UPDATE_AUTOMAKE)
-       cd $(DIR_APP) && ./configure --prefix=/usr
-       cd $(DIR_APP) && make $(MAKETUNING)
-       cd $(DIR_APP) && make install
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
index a19aba6dc83bce7793a8c9ddbb20c061d6bcc9c2..d19a6831b418153e4f7e494b6a4fa795109b6747 100644 (file)
--- a/lfs/grep
+++ b/lfs/grep
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.27
+VER        = 3.6
 
 THISAPP    = grep-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -50,7 +50,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 6138dd227c39d4a25f81eea76a44d4cb
+$(DL_FILE)_MD5 = f47fe27049510b2249dba7f862ac1b51
 
 install : $(TARGET)
 
index c24687a38783751524b4e4f5881b72a919e2a6d6..ecc8fd24ebed18f82caf7576f1f36e02dcb01e11 100644 (file)
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
 PROG       = guardian
-PAK_VER    = 21
+PAK_VER    = 22
 
 DEPS       = perl-inotify2 perl-Net-IP
 
diff --git a/lfs/igb b/lfs/igb
deleted file mode 100644 (file)
index 8f0256c..0000000
--- a/lfs/igb
+++ /dev/null
@@ -1,86 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VERSUFIX   = ipfire$(KCFG)
-MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/igb/
-
-VER        = 5.3.4.4
-
-THISAPP    = igb-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX)
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 6c0d7dfdb161128da7c039fc83bbdba0
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       $(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       #Save original igb module
-       -mv $(MODPATH)/igb.ko \
-           $(MODPATH)/igb.ko.org
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/igb-5.3.4.4_fix_hung_at_dev_get_stats.patch
-       cd $(DIR_APP)/src && make BUILD_KERNEL=$(KVER)-$(VERSUFIX)
-       cd $(DIR_APP)/src && install -m 644 igb.ko $(MODPATH)
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
diff --git a/lfs/ixgbe b/lfs/ixgbe
deleted file mode 100644 (file)
index 479f4f4..0000000
--- a/lfs/ixgbe
+++ /dev/null
@@ -1,85 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VERSUFIX   = ipfire$(KCFG)
-MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/ixgbe
-
-VER        = 3.21.2
-
-THISAPP    = ixgbe-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX)
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = dc635736d7e0ef5373131753f6609f38
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       $(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       #Save original ixgbe module
-       -mv $(MODPATH)/ixgbe.ko \
-           $(MODPATH)/ixgbe.ko.org
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP)/src && make BUILD_KERNEL=$(KVER)-$(VERSUFIX)
-       cd $(DIR_APP)/src && install -m 644 ixgbe.ko $(MODPATH)
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
index 6b054cbd44a98f4b2255365a786ac060dfa05d84..1d35bbedd56692fc373694349704a5a3574b02ae 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.10.2
+VER        = 3.6.0
 
 THISAPP    = jquery-$(VER)
 DL_FILE    = $(THISAPP).min.js
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 628072e7212db1e8cdacb22b21752cda
+$(DL_FILE)_MD5 = 8fb8fee4fcc3cc86ff6c724154c49c42
 
 install : $(TARGET)
 
index 51dd7f436af65009ed3bb0017dfe9214a79a66c5..fd131949dcca3cc738b47115f5f6adf1acb2b6db 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.25
+VER        = 2.49
 
 THISAPP    = libcap-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 6666b839e5d46c2ad33fc8aa2ceb5f77
+$(DL_FILE)_MD5 = b43ae3690fe4d2cb32e4d25c0983ecd3
 
 install : $(TARGET)
 
@@ -72,11 +72,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        # Prevent a static library from being installed
        cd $(DIR_APP) && sed -i '/install.*STALIBNAME/d' libcap/Makefile
-       cd $(DIR_APP) && make
-       cd $(DIR_APP) && make install
-       # links for old binaries
-       ln -svf libcap.so.2 /lib/libcap.so.1
-       ln -svf /lib/libcap.so.2.25 /usr/lib/libcap.so
+       cd $(DIR_APP) && make GOLANG=no
+       cd $(DIR_APP) && make install GOLANG=no
+       rm -vf /lib/libcap.so
+       ln -svf /lib/libcap.so.2.49 /usr/lib/libcap.so
        chmod +x /lib/libcap.so.*
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index ac0aecb3b2fb99feea4d58c4f4f44cd25d22fe12..da684c771ff05c3fea8de25cbd33241af1364682 100644 (file)
@@ -24,8 +24,8 @@
 
 include Config
 
-VER        = 0.9.5
-DB_DATE    = 2021-01-28
+VER        = 0.9.6
+DB_DATE    = 2021-03-30
 
 THISAPP    = libloc-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -43,8 +43,8 @@ objects = $(DL_FILE) \
 $(DL_FILE)                    = https://source.ipfire.org/releases/libloc/$(DL_FILE)
 location-$(DB_DATE).db.xz     = https://location.ipfire.org/databases/1/archive/location-$(DB_DATE).db.xz
 
-$(DL_FILE)_MD5                = 41d8dc3fb4e498db958b7696cadd61f5
-location-$(DB_DATE).db.xz_MD5 = f1814a144e22c9386aea00fa01992719
+$(DL_FILE)_MD5                = a05c44568bce04ab777caadb3e1d3c51
+location-$(DB_DATE).db.xz_MD5 = e5a05e01e999ba5c70d7e2960336d2a4
 
 install : $(TARGET)
 
@@ -78,9 +78,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xvf $(DIR_DL)/$(DL_FILE)
 
-       # Import recent patches from upstream
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/libloc-0.9.5-location-Fix-list-networks-by-as.patch
-
        # Add patch for i586 to disable strong stack protector.
 ifeq "$(BUILD_ARCH)" "i586"
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/libloc-0.9.3-perl-i586-regular-stack-protector.patch
index 2adf4f48f211e9475ecbac74d135a90701d60a29..4d32d83fc5edfb602ab17e555d324c3f3172dd6b 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.1.0
+VER        = 1.2.1
 
 THISAPP    = mpc-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4125404e41e482ec68282a2e687f6c73
+$(DL_FILE)_MD5 = 9f16c976c25bb0f76b50be749cd7a3a8
 
 install : $(TARGET)
 
index e35ea9ee628e57abea4275af987f34625b1f4bb2..24f516d016b6ccc9c2ca5a1ded64d7d96aaf785d 100644 (file)
 
 include Config
 
-VER        = 2.5
+VER        = 2.19
 
 THISAPP    = libmpdclient-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = libmpdclient
-PAK_VER    = 3
+PAK_VER    = 4
 
 DEPS       =
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c1e359de6fbee3dc052deaeed05350db
+$(DL_FILE)_MD5 = aee66cbf5ce2ebf1b976e9c6ade0feee
 
 install : $(TARGET)
 
@@ -76,10 +76,10 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        $(UPDATE_AUTOMAKE)
-       cd $(DIR_APP) && ./configure --prefix=/usr
-       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
-       cd $(DIR_APP) && make install
+       cd $(DIR_APP) && meson  --prefix=/usr builddir/
+       cd $(DIR_APP) && ninja -C builddir/
+       cd $(DIR_APP) && ninja -C builddir/ install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index d0fd46355116e8c198af89a8ba498dbd8f19353f..1980d930647664fa9803c9e2bd6955067b911540 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.26
+VER        = 0.27
 
 THISAPP    = libnfsidmap-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = libnfsidmap
-PAK_VER    = 1
+PAK_VER    = 2
 
 #CFLAGS    += -I/usr/include/tirpc
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 2c0cf0e2b1665d51fa9a783679494888
+$(DL_FILE)_MD5 = 27cfb22f1ee85e51b863b71858a97da0
 
 install : $(TARGET)
 
index ccf78a44921da71974b3ec97a384a8fb7658dfa1..14ce62676b475cb79096a1e60cd54e7752f3321c 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2019  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.9.1
+VER        = 1.10.0
 
 THISAPP    = libpcap-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 21af603d9a591c7d96a6457021d84e6c
+$(DL_FILE)_MD5 = 8c12dc19dd7e0d02d2bb6596eb5a71c7
 
 install : $(TARGET)
 
index 08ff9493548774f2b103ffd6b3115d400ea9e838..d21b6616042d328ba3f39984f22b6f55e13ea87d 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.91
+VER        = 0.92
 
 THISAPP    = libstatgrab-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = libstatgrab
-PAK_VER    = 2
+PAK_VER    = 3
 
 DEPS       =
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = b906d312076ca9be3d5188edfe07f496
+$(DL_FILE)_MD5 = 5362b2ddbec54b3901e7d70c22cda249
 
 install : $(TARGET)
 
index 1938ab771940975cfacf4635be2113b32b3b754d..0b529724c21fd5d3f482d1106c4681e91e414a51 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.0.2
+VER        = 1.3.1
 
 THISAPP    = libtirpc-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = libtirpc
-PAK_VER    = 2
+PAK_VER    = 3
 
 DEPS       =
 
@@ -46,7 +46,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d5a37f1dccec484f9cabe2b97e54e9a6
+$(DL_FILE)_MD5 = f222e258c129c6da2f8f9cfe7f1ed745
 
 install : $(TARGET)
 
@@ -80,7 +80,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
        $(UPDATE_AUTOMAKE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libtirpc-1.0.2-glibc-2.26.patch
        cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc --disable-gssapi --disable-ipv6
        cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
        cd $(DIR_APP) && make install
index 045a5a2a172d13729c501d508080e8d754816cfd..7482b41e982c03f44d525dc5f12f44054c82ea02 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 135
+VER        = 175
 
 THISAPP    = mcelog-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = mcelog
-PAK_VER    = 1
+PAK_VER    = 2
 SUP_ARCH   = i586 x86_64
 
 DEPS       =
@@ -45,7 +45,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 7819c74796c1e52e3e56fc065b9fe26a
+$(DL_FILE)_MD5 = 27a68615c5090b38d44679a8ba6f4e3b
 
 install : $(TARGET)
 
index 615f2febbdd78e40b4fa0a7d98252bfaeeb13378..3720995cd86f265b3f4566f572c5b99571c0e626 100644 (file)
--- a/lfs/monit
+++ b/lfs/monit
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.27.2
+VER        = 5.28.0
 
 THISAPP    = monit-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = monit
-PAK_VER    = 13
+PAK_VER    = 14
 
 DEPS       =
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 13a0804dae18ef08198c3ace72f9dd60
+$(DL_FILE)_MD5 = 778ac383dea002a5cf2330dffcc65660
 
 install : $(TARGET)
 
diff --git a/lfs/mpc b/lfs/mpc
index 5f3340b980226d89a1fa5d756e0a1799f7379bf2..2060685ccead4053a3d0ae37672cb1a74013b7f0 100644 (file)
--- a/lfs/mpc
+++ b/lfs/mpc
 
 include Config
 
-VER        = 0.21
+VER        = 0.33
 
 THISAPP    = mpc-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = mpc
-PAK_VER    = 6
+PAK_VER    = 7
 
 DEPS       = mpd libmpdclient
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d8f88aad5fa7ed4c6e7005c5ec1ba7c5
+$(DL_FILE)_MD5 = 7d1f5c308b5df1f2af0a01360a235af2
 
 install : $(TARGET)
 
@@ -76,9 +76,9 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && ./configure --prefix=/usr
-       cd $(DIR_APP) && make $(MAKETUNING)
-       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && meson  --prefix=/usr builddir/
+       cd $(DIR_APP) && ninja -C builddir/
+       cd $(DIR_APP) && ninja -C builddir/ install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 65196a0aafd4591cd6522b13da34ae4029706452..b8a6eec64371b8819dfea5b6894a964da0537df7 100644 (file)
@@ -30,7 +30,7 @@ THISAPP    = mpfire-$(VER)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = mpfire
-PAK_VER    = 12
+PAK_VER    = 13
 
 DEPS       = mpd mpc
 
@@ -70,8 +70,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        chmod 664 /var/ipfire/mpfire/playlist.m3u
        chmod 755 /srv/web/ipfire/html/images/mpfire
        install -v -m 644 $(DIR_SRC)/config/backup/includes/mpfire /var/ipfire/backup/addons/includes/mpfire
-       -mkdir -p /usr/lib/perl5/site_perl/5.30.0/Audio/
-       cp -vrf $(DIR_SRC)/config/mpfire/perl/Audio/MPD* /usr/lib/perl5/site_perl/5.30.0/Audio/
-       cp -vrf $(DIR_SRC)/config/mpfire/perl/Accessor* /usr/lib/perl5/5.30.0/Class/
-       cp -vrf $(DIR_SRC)/config/mpfire/perl/Readonly.pm /usr/lib/perl5/5.30.0/Readonly.pm
+       -mkdir -p /usr/lib/perl5/site_perl/5.32.1/Audio/
+       cp -vrf $(DIR_SRC)/config/mpfire/perl/Audio/MPD* /usr/lib/perl5/site_perl/5.32.1/Audio/
+       cp -vrf $(DIR_SRC)/config/mpfire/perl/Accessor* /usr/lib/perl5/5.32.1/Class/
+       cp -vrf $(DIR_SRC)/config/mpfire/perl/Readonly.pm /usr/lib/perl5/5.32.1/Readonly.pm
        @$(POSTBUILD)
index f2637a5c9f38b37baf11971f8f689ff217d0c30d..49eb25f3b56d7fce9a5e0c325b91aaa9b72001ec 100644 (file)
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = netsnmpd
-PAK_VER    = 9
+PAK_VER    = 10
 
 DEPS       =
 
index e2d5df88dae32d3dab1e14e94b7492645135930a..dfc3fdda5485e7b48c2a352faad3bbc256808b6b 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.7.1
+VER        = 3.7.2
 
 THISAPP    = nettle-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4d23a99df650ee88511653fb9acea3f0
+$(DL_FILE)_MD5 = 22849db27ed563ebbc829273f0c97e35
 
 install : $(TARGET)
 
diff --git a/lfs/nfs b/lfs/nfs
index 3e2f56b7e2f5ddb6d51d2af07f1d7f69c93f696d..55accfb28437da681665ee160d65af3108b43c9b 100644 (file)
--- a/lfs/nfs
+++ b/lfs/nfs
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.5.1
+VER        = 2.5.3
 
 THISAPP    = nfs-utils-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = nfs
-PAK_VER    = 14
+PAK_VER    = 15
 
 DEPS       = libnfsidmap rpcbind
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d14294d5efcd9aada28f4dab871a44a6
+$(DL_FILE)_MD5 = dd8100f51bf838f2a396c86163c9a0e3
 
 install : $(TARGET)
 
diff --git a/lfs/pakfire3 b/lfs/pakfire3
deleted file mode 100644 (file)
index 2380be3..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER        = 0.9.25
-
-THISAPP    = pakfire-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
-DL_FROM    = https://source.ipfire.org/releases/pakfire/
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG      = pakfire3
-PAK_VER    = 5
-
-DEPS       = libsolv pycurl pygpgme python-progressbar python-xattr urlgrabber
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 8932670f3ac7c7ab1892b719a078de31
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       @$(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/pakfire3-changes-for-ipfire2.diff
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/pakfire-database-Add-inst_size-column-when-creating-new-data.patch
-       cd $(DIR_APP) && make $(MAKETUNING)
-       cd $(DIR_APP) && make install
-       rm -vf /usr/bin/pakfire3
-
-       install -v -m 644 $(DIR_SRC)/config/backup/includes/pakfire3 \
-               /var/ipfire/backup/addons/includes/pakfire3
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
index a6d32d37705c1bc6ee84ce3b86f875016ff03822..19d546420ec3cd1c3639216b2c323e2bf1876823 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.2
+VER        = 3.4
 
 THISAPP    = parted-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
 PROG       = parted
-PAK_VER    = 3
+PAK_VER    = 4
 
 DEPS       =
 
@@ -45,7 +45,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 0247b6a7b314f8edeb618159fa95f9cb
+$(DL_FILE)_MD5 = 357d19387c6e7bc4a8a90fe2d015fe80
 
 install : $(TARGET)
 
@@ -78,8 +78,6 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/parted-3.2-device-mapper.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/parted-3.2-sysmacros.patch
        $(UPDATE_AUTOMAKE)
        cd $(DIR_APP) && ./configure --prefix=/usr --disable-device-mapper
        cd $(DIR_APP) && make $(MAKETUNING)
index bc0d67d5f78310842038813015f8ce6cf3649e91..4526b04cda26749fc6c31ea63e5b2dc0b33ed463 100644 (file)
--- a/lfs/perl
+++ b/lfs/perl
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.30.0
+VER        = 5.32.1
 
 THISAPP    = perl-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -50,7 +50,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE)                  = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5              = 9770584cdf9b5631c38097645ce33549
+$(DL_FILE)_MD5              = 40dff18daf18178c7fc4579451be38ef
 
 install : $(TARGET)
 
@@ -80,7 +80,6 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/perl-5.30.0-fix-build-failure-against-gcc-10.patch
 ifeq "$(ROOT)" ""
        cd $(DIR_APP) && ./configure.gnu --prefix=/usr -Dman1dir=/usr/share/man/man1 \
                -Dman3dir=/usr/share/man/man3 -Dpager="/usr/bin/less -isR" -Dusethreads
index 78df0108f655d7a8ddbda2cedad03f0960f427a6..5fee316aeb0d7581e212372b451439f6d4a9565a 100644 (file)
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-Authen-SASL
 DEPS       =
-PAK_VER    = 2
+PAK_VER    = 3
 
 ###############################################################################
 # Top-level Rules
index 3d9f85ff3c0ff7cc2aca098adebe923503b365a1..ce5e92649fe16f95d65db6eb95c3c849f35b04df 100644 (file)
@@ -24,7 +24,7 @@
 ###############################################################################
 
 include Config
-VER        = 6.04
+VER        = 6.08
 
 THISAPP    = Carp-Clan-$(VER)
 DL_FILE    = ${THISAPP}.tar.gz
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-Carp-Clan
 DEPS       =
-PAK_VER    = 4
+PAK_VER    = 6
 
 ###############################################################################
 # Top-level Rules
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = b6316bc51bb530d994f2784615939fb2
+$(DL_FILE)_MD5 = 34fe04102374516ef7a105375b95ffde
 
 install : $(TARGET)
 
index 21cd9fd77cfd0b241435b013dfac35ef82810399..2b263596ab54391aeec13c2fe2c8e933c57c24d1 100644 (file)
@@ -23,7 +23,7 @@
 # Definitions
 ###############################################################################
 include Config
-VER        = 6.3
+VER        = 6.4
 
 THISAPP    = Date-Calc-$(VER)
 DL_FILE    = ${THISAPP}.tar.gz
@@ -32,7 +32,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-Date-Calc
 DEPS       = perl-Carp-Clan
-PAK_VER    = 4
+PAK_VER    = 6
 
 ###############################################################################
 # Top-level Rules
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 9b64555b7051c1beb6b61daead2d01b3
+$(DL_FILE)_MD5 = 69c635070d38c884682bfd4657031a8d
 
 install : $(TARGET)
 
index 5802e46ee283368f25ae2e30ce69718de12a4f68..3c3472b53008da3ef0b28512c37256ca2e96425a 100644 (file)
@@ -23,7 +23,7 @@
 # Definitions
 ###############################################################################
 include Config
-VER        = 6.40
+VER        = 6.85
 
 THISAPP    = Date-Manip-$(VER)
 DL_FILE    = ${THISAPP}.tar.gz
@@ -32,7 +32,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-Date-Manip
 DEPS       =
-PAK_VER    = 5
+PAK_VER    = 7
 
 ###############################################################################
 # Top-level Rules
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ae57b05e8ec689de2f23c99639e0109d
+$(DL_FILE)_MD5 = ce3447409d83d16e6dd7bea0a18f24b4
 
 install : $(TARGET)
 
index 475f86abd553f93b0ae517b7e6b185cc012a73fc..16507972a11e3c0ec2b80278851b913944d1ff1d 100644 (file)
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-File-ReadBackwards
-PAK_VER    = 2
+PAK_VER    = 3
 
 DEPS       =
 
index c9b4cbde4b1e1e54e102afb4a9131e71d4e83a0b..6b979ef87b6066fdfee7c0693d44ab18d675c595 100644 (file)
@@ -24,7 +24,7 @@
 ###############################################################################
 
 include Config
-VER        = 0.99.3
+VER        = 1.3
 
 THISAPP    = File-Tail-$(VER)
 DL_FILE    = ${THISAPP}.tar.gz
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-File-Tail
 DEPS       =
-PAK_VER    = 4
+PAK_VER    = 6
 
 ###############################################################################
 # Top-level Rules
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ef0fb7bcb4181ba593f4a09940f61d1c
+$(DL_FILE)_MD5 = 252635f89ec18cb871c0b45ed64b3f63
 
 install : $(TARGET)
 
index 00623560ee8265508bd02947fd6b35dc03b800cf..95f56bf5d194b4ffa02ad8db314e82a97ebe7739 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.15
+VER        = 3.16
 
 THISAPP    = MIME-Base64-$(VER)
 DL_FILE    = ${THISAPP}.tar.gz
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-MIME-Base64
 DEPS       =
-PAK_VER    = 2
+PAK_VER    = 4
 
 ###############################################################################
 # Top-level Rules
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ef958dc2bf96be5f759391c6ac1debd4
+$(DL_FILE)_MD5 = 58a62a2ddd42999d8446d93c8badc8a2
 
 install : $(TARGET)
 
index 437652bd9320018bbee40f79800dcee2486db90b..b840f9bae64c5e4b41caf4a5aecfde4d08e1910a 100644 (file)
@@ -33,7 +33,7 @@ TARGET     = $(DIR_INFO)/$(THISAPP)
 
 PROG       = perl-Net-IP
 DEPS       =
-PAK_VER    = 2
+PAK_VER    = 3
 
 ###############################################################################
 # Top-level Rules
index 90e8a2260969f8a63cb803e719a342e6f1b382e9..39ba15abec72f5a2a3240d55ee30278f5b72b45b 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.02
+VER        = 1.04
 
 THISAPP    = Net-SMTP-SSL-$(VER)
 DL_FILE    = ${THISAPP}.tar.gz
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-Net-SMTP-SSL
 DEPS       =
-PAK_VER    = 2
+PAK_VER    = 4
 
 ###############################################################################
 # Top-level Rules
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e67b4d842a51b9a453aeeaeed45fb8e1
+$(DL_FILE)_MD5 = 62b49c961043898b43b041dafbc1b389
 
 install : $(TARGET)
 
index e061b96a1c9bef18721996e72595b0820cef16c2..b93bfc8b7cd45cb8514404fcbe144d32fe184897 100644 (file)
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-Parse-Yapp
 DEPS       =
-PAK_VER    = 1
+PAK_VER    = 2
 
 ###############################################################################
 # Top-level Rules
index a2a06ae3cbbc12f018085526f444f66d72a9a94d..26e6d365a4d4512995274ee97d4dc1ae166404a6 100644 (file)
@@ -32,7 +32,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-TimeDate
 DEPS       =
-PAK_VER    = 4
+PAK_VER    = 5
 
 ###############################################################################
 # Top-level Rules
index 879caea99b74ee7cefa555cc9547ee56446c5e7c..42ea4a77d95b36bf70b47482b553444a32025c5c 100644 (file)
@@ -33,7 +33,7 @@ TARGET     = $(DIR_INFO)/$(THISAPP)
 
 PROG       = perl-common-sense
 DEPS       =
-PAK_VER    = 2
+PAK_VER    = 3
 
 ###############################################################################
 # Top-level Rules
index afe8db78ad61adff0cc94a913e6320823cde4c92..4fd9fe8c73f3abae6849dc64867a1c6afea0282d 100644 (file)
@@ -34,7 +34,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = perl-gettext
 DEPS       =
-PAK_VER    = 4
+PAK_VER    = 5
 
 ###############################################################################
 # Top-level Rules
index 7d94da395d080e456044710a788962be7e58a029..f02c34ecd42c107f4b41b01f8967f135e2453c5e 100644 (file)
@@ -35,7 +35,7 @@ TARGET     = $(DIR_INFO)/$(THISAPP)
 
 PROG       = perl-inotify2
 DEPS       = perl-common-sense
-PAK_VER    = 2
+PAK_VER    = 3
 
 ###############################################################################
 # Top-level Rules
index 1599a900249ff64b1203872adb87a479f64ccab6..80dbd91aaf600f892011465e94cff68cd5c575fc 100644 (file)
--- a/lfs/pigz
+++ b/lfs/pigz
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.3.1
+VER        = 2.6
 
 THISAPP    = pigz-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e803f8bc0770c7a5e96dccb1d2dd2aab
+$(DL_FILE)_MD5 = a8a23d7dfb58d8c20438f382fb1d97c8
 
 install : $(TARGET)
 
index b037021462fc74397329459a5208ec543a11baf3..632d6f8ef585f4517d3b76a87180430ae44c13f6 100644 (file)
@@ -76,7 +76,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                -DCMAKE_INSTALL_PREFIX=/usr \
                -DTESTDATADIR=$PWD/testfiles \
                -DENABLE_UNSTABLE_API_ABI_HEADERS=ON \
-               -ENABLE_QT5=OFF \
+               -DENABLE_QT5=OFF \
                ..
 
        cd $(DIR_APP)/build && make $(MAKETUNING)
diff --git a/lfs/pycurl b/lfs/pycurl
deleted file mode 100644 (file)
index 4733c4c..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER        = 7.19.0
-
-THISAPP    = pycurl-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG       = pycurl
-PAK_VER    = 2
-
-DEPS       =
-
-CFLAGS    += -DHAVE_CURL_OPENSSL
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 919d58fe37e69fe87ce4534d8b6a1c7b
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       @$(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/python-pycurl-fix-do_curl_reset-refcount.patch
-       cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/python-pycurl-no-static-libs.patch
-       cd $(DIR_APP) && python setup.py install
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
diff --git a/lfs/pygpgme b/lfs/pygpgme
deleted file mode 100644 (file)
index 6700735..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER        = 0.3
-
-THISAPP    = pygpgme-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG       = pygpgme
-PAK_VER    = 1
-
-DEPS       = gpgme
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = d38355af73f0352cde3d410b25f34fd0
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       @$(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && python setup.py install
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
diff --git a/lfs/python-lzma b/lfs/python-lzma
deleted file mode 100644 (file)
index 7ac21d8..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER        = 0.5.3
-
-THISAPP    = pyliblzma-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG       = python-lzma
-PAK_VER    = 1
-
-DEPS       =
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 500f61116ee1ab4063b49c121786863a
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       @$(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && python setup.py install
-       # unzip the egg because it won't work without
-       cd /usr/lib/python2.7/site-packages && \
-               unzip pyliblzma-$(VER)-py2.7-linux-*.egg
-       rm -rf /usr/lib/python2.7/site-packages/pyliblzma-$(VER)-py2.7-linux-*.egg
-       rm -rf /usr/lib/python2.7/site-packages/EGG-INFO
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
diff --git a/lfs/python-progressbar b/lfs/python-progressbar
deleted file mode 100644 (file)
index b40d8e4..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER        = 2.2
-
-THISAPP    = progressbar-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG       = python-progressbar
-PAK_VER    = 1
-
-DEPS       =
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 8ea4e2c17a8ec9e7d153767c5f2a7b28
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       @$(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && python setup.py install
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
index 3c379c99ea742ae6f417c509c1530cd89dd62f11..8db9050114ac9cffd377ed85707e840a4537bb91 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.2.3
+VER        = 1.2.5
 
 THISAPP    = rpcbind-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = rpcbind
-PAK_VER    = 2
+PAK_VER    = 3
 
 DEPS       = libtirpc
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c8875246b2688a1adfbd6ad43480278d
+$(DL_FILE)_MD5 = ed46f09b9c0fa2d49015f6431bc5ea7b
 
 install : $(TARGET)
 
@@ -78,7 +78,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && sed -i "/servname/s:rpcbind:sunrpc:" src/rpcbind.c
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/rpcbind/rpcbind-0.2.3-tirpc_fix-1.patch
        cd $(DIR_APP) && ./configure \
                --prefix=/usr \
                --bindir=/sbin \
index 5af9c4cec8712a2a0ea8ef03b94495feb87b4362..2c357944da6bf9a51897bc41d5e16bdef2c90ef4 100644 (file)
--- a/lfs/rust
+++ b/lfs/rust
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.50.0
+VER        = 1.51.0
 
 THISAPP    = rust-$(VER)
 DL_FILE    = $(THISAPP)-$(RUST_BOOTSTRAP).tar.gz
@@ -53,10 +53,10 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(THISAPP)-x86_64-unknown-linux-gnu.tar.gz_MD5 =  df740a74cd0887feaf36edc8b36f9b77
-$(THISAPP)-i686-unknown-linux-gnu.tar.gz_MD5 =    62a242568c0a4479c5f0050522fd44f8
-$(THISAPP)-aarch64-unknown-linux-gnu.tar.gz_MD5 = acda9f6336efd24d1d8949a2c470fb91
-$(THISAPP)-arm-unknown-linux-gnueabi.tar.gz_MD5 = fc073998405ea150f699cbf910ba9296
+$(THISAPP)-x86_64-unknown-linux-gnu.tar.gz_MD5 =  efc4d147e25918e60678a69fcaf67b55
+$(THISAPP)-i686-unknown-linux-gnu.tar.gz_MD5 =    666d7a99abf2834b2cb4bb8e6c571c76
+$(THISAPP)-aarch64-unknown-linux-gnu.tar.gz_MD5 = e85e1758b9770bae16c253825e2ecf9c
+$(THISAPP)-arm-unknown-linux-gnueabi.tar.gz_MD5 = da4fa1b2bd21dc6d2d7e791d8faaa3eb
 
 install : $(TARGET)
 
index d218ecf389d42fff854b443320085fd90fa23914..ea8fcd428912ed9ad185eb6efd1bb53928cab898 100644 (file)
--- a/lfs/samba
+++ b/lfs/samba
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 4.13.4
+VER        = 4.13.7
 
 THISAPP    = samba-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = samba
-PAK_VER    = 76
+PAK_VER    = 77
 
 DEPS       = avahi cups libtirpc krb5 perl-Parse-Yapp
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ba89901019e05585f9511f52a4667d4f
+$(DL_FILE)_MD5 = 1a900f45d5251b53c9bd28887e588583
 
 install : $(TARGET)
 
index 446844ab3cb343b340b60a914b3cb11281195145..f6bcf4c96ce8913f3f1e4ce81acb6bad7477252a 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.1.2
+VER        = 2.1.3
 
 THISAPP    = speedtest-cli-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = speedtest-cli
-PAK_VER    = 3
+PAK_VER    = 4
 
 DEPS       =
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a49ad088331810fc9442e8a5c59de713
+$(DL_FILE)_MD5 = 08c431f2f398880745c4f0564962b9e2
 
 install : $(TARGET)
 
index c6ea3587665e5a044a46ca25ae422e3f840e08ee..cfce835ec92142c008e0a6310ce24c3f0e4b673c 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.10
+VER        = 5.11
 SUP_ARCHES = x86_64 i586 armv5tel
 
 THISAPP    = strace-$(VER)
@@ -33,7 +33,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = strace
-PAK_VER    = 4
+PAK_VER    = 5
 
 DEPS       = elfutils
 
@@ -45,7 +45,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 5f9f87f9afa282e7512f67a129287d6c
+$(DL_FILE)_MD5 = f5a317fd535465cf9130d0547661f5c4
 
 install : $(TARGET)
 
index ace2c58147abac5ac00b3be3ee3e938ade4625e3..0f00b071f8e1d5d2b9557adb56792d787c0d21fb 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2020  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.9.1
+VER        = 5.9.2
 
 THISAPP    = strongswan-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 1f4db969d072e120dc12d1c116a0f658
+$(DL_FILE)_MD5 = 8918e6675e1be3784817641f07eadeb8
 
 install : $(TARGET)
 
index bb2279e8f460fbc587cc244c830f5e9d1469be9d..6c09fac10261d7eaec3309a6558751a74557cbd2 100644 (file)
--- a/lfs/sudo
+++ b/lfs/sudo
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.9.5p2
+VER        = 1.9.6p1
 
 THISAPP    = sudo-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e6bc4c18c06346e6b3431637a2b5f3d5
+$(DL_FILE)_MD5 = 334f8337d497f2f5df2db72448bd259d
 
 install : $(TARGET)
 
index 6977137b0d857660ac49d018e81071e4f63d2f9b..93f858ae6844b2d5fa1b598b7f97e08f68c16883 100644 (file)
 
 include Config
 
-VER        = 3.2.3
+VER        = 3.2.4
 
-THISAPP    = swatch-$(VER)
+THISAPP    = swatchdog-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = swatch
-PAK_VER    = 3
+PAK_VER    = 5
 
 DEPS       = perl-File-Tail perl-Date-Calc perl-TimeDate perl-Date-Manip
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 1162f1024cf07fc750ed4960d61ac4e8
+$(DL_FILE)_MD5 = df4c20ff7d3f6a46a2efd72a42078011
 
 install : $(TARGET)
 
index 93ac4d7ab7751c628736efd4bb384127e16ffe1c..355308ec91043b2a0655504b027c17b6d5ca7539 100644 (file)
--- a/lfs/swig
+++ b/lfs/swig
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.0.12
+VER        = 4.0.2
 
 THISAPP    = swig-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 82133dfa7bba75ff9ad98a7046be687c
+$(DL_FILE)_MD5 = 7c3e46cb5af2b469722cafa0d91e127b
 
 install : $(TARGET)
 
index 557c00ee3df30afd9d8a43d2f9c20920a39c6d9c..f39fd45df8524d685ce5510ddb73d589c76cae5e 100644 (file)
@@ -9,15 +9,16 @@
 
 include Config
 
-VER        = 0.4.12
+VER        = 1.0.20
 
 THISAPP    = sysbench-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
+SUP_ARCH   = x86_64 i586 aarch64
 PROG       = sysbench
-PAK_VER    = 1
+PAK_VER    = 2
 
 DEPS       =
 
@@ -29,7 +30,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 3a6d54fdd3fe002328e4458206392b9d
+$(DL_FILE)_MD5 = 756381c6fc4e16af1e0831b5e6a3dcb3
 
 install : $(TARGET)
 
index e7b715ea433f045e007f7b925217f73a2669e002..7bf631a0535ebc8ddcff7a0b71b6ea55fbdcb4ce 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.98
+VER        = 2.99
 
 THISAPP    = sysvinit-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e3254f7622ea5cf2322b1b386a98ba59
+$(DL_FILE)_MD5 = 6abc0ea61b8dd4a41b4e931a43b1bb90
 
 install : $(TARGET)
 
index b4e6b0e2a6ff755420af30c6bda68e88a049fb56..86c54738d6e751bec8b8baa893db021af283203f 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2019  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 4.9.3
+VER        = 4.99.0
 
 THISAPP    = tcpdump-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = tcpdump
-PAK_VER    = 11
+PAK_VER    = 12
 
 DEPS       =
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a4ead41d371f91aa0a2287f589958bae
+$(DL_FILE)_MD5 = b10aa2f497def7283bc060f626879ce5
 
 install : $(TARGET)
 
@@ -80,6 +80,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && \
                ./configure \
                        --prefix=/usr \
+                       --bindir=/usr/sbin \
                        --with-crypto \
                        --without-smi
 
diff --git a/lfs/tor b/lfs/tor
index 8ad5986b0feda898a674feaee98d7aa780c11c4b..34e3b3ffbf300989b6951a80e22fe0b40d08051d 100644 (file)
--- a/lfs/tor
+++ b/lfs/tor
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.4.5.6
+VER        = 0.4.5.7
 
 THISAPP    = tor-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = tor
-PAK_VER    = 58
+PAK_VER    = 59
 
 DEPS       = libseccomp
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 22a04ef62c714b7d9d8928ebe238e4c4
+$(DL_FILE)_MD5 = 3a1800592293a8d4122823eab9233739
 
 install : $(TARGET)
 
index 98f9c73e9a0f15945cd7b81f0b775475aa425dca..baa8bfa41110c090c154d3c8bec17937e4d59a80 100644 (file)
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = tshark
 DEPS       = krb5 c-ares
-PAK_VER    = 9
+PAK_VER    = 10
 
 ###############################################################################
 # Top-level Rules
diff --git a/lfs/urlgrabber b/lfs/urlgrabber
deleted file mode 100644 (file)
index ab0a0b6..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER        = 3.9.1
-
-THISAPP    = urlgrabber-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)
-
-PROG       = urlgrabber
-PAK_VER    = 1
-DEPS       =
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 00c8359bf71062d0946bacea521f80b4
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       $(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && /usr/bin/python setup.py install
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
index 7b04ef80362f05bdfb4cfdad52007f97f2d0207c..bce6d8eb862626fb55783c23a6a6650216f92863 100644 (file)
@@ -70,7 +70,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        chmod -R 755 /srv/web/ipfire/cgi-bin
        chmod -R 644 /srv/web/ipfire/html
        chmod 755 /srv/web/ipfire/html /srv/web/ipfire/html/{index.cgi,redirect.cgi,images,include,themes,themes/*,themes/*/*}
-       ln -svf ipfire /srv/web/ipfire/html/themes/ipfire-rounded
 
        # Reset permissions of redirect templates and theme directories
        find /srv/web/ipfire/html/{captive,redirect-templates,themes} -type d | xargs chmod -v 755
index c6af0f12991ddb150ab9de37407142dd83fdc63a..a4549557bc1dd6cc76925d66173d4864e2d4b08e 100644 (file)
--- a/lfs/zstd
+++ b/lfs/zstd
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.4.5
+VER        = 1.4.9
 
 THISAPP    = zstd-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = dd0b53631303b8f972dafa6fd34beb0c
+$(DL_FILE)_MD5 = eb718b8aae0302cabe20f968e500534d
 
 install : $(TARGET)
 
diff --git a/make.sh b/make.sh
index 98ffee0d1ff9e971a4328b980cd44a587c670134..2da3aca214af778e0bb8b2dde4ca7ae1cdb3497d 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -26,7 +26,7 @@ NAME="IPFire"                                                 # Software name
 SNAME="ipfire"                                                 # Short name
 # If you update the version don't forget to update backupiso and add it to core update
 VERSION="2.25"                                                 # Version number
-CORE="155"                                                     # Core Level (Filename)
+CORE="156"                                                     # Core Level (Filename)
 SLOGAN="www.ipfire.org"                                                # Software slogan
 CONFIG_ROOT=/var/ipfire                                                # Configuration rootdir
 MAX_RETRIES=1                                                  # prefetch/check loop
@@ -1196,20 +1196,12 @@ buildipfire() {
   case "${BUILD_ARCH}" in
        x86_64|aarch64)
                lfsmake2 linux                  KCFG=""
-#              lfsmake2 backports                      KCFG=""
-#              lfsmake2 e1000e                 KCFG=""
-#              lfsmake2 igb                            KCFG=""
-#              lfsmake2 ixgbe                  KCFG=""
                lfsmake2 xtables-addons         KCFG=""
                lfsmake2 linux-initrd                   KCFG=""
                ;;
        i586)
                # x86 kernel build
                lfsmake2 linux                  KCFG=""
-#              lfsmake2 backports                      KCFG=""
-#              lfsmake2 e1000e                 KCFG=""
-#              lfsmake2 igb                            KCFG=""
-#              lfsmake2 ixgbe                  KCFG=""
                lfsmake2 xtables-addons         KCFG=""
                lfsmake2 linux-initrd                   KCFG=""
                ;;
@@ -1217,10 +1209,6 @@ buildipfire() {
        armv5tel)
                # arm multi platform (Panda, Wandboard ...) kernel build
                lfsmake2 linux                  KCFG="-multi"
-#              lfsmake2 backports                      KCFG="-multi"
-#              lfsmake2 e1000e                 KCFG="-multi"
-#              lfsmake2 igb                            KCFG="-multi"
-#              lfsmake2 ixgbe                  KCFG="-multi"
                lfsmake2 xtables-addons         KCFG="-multi"
                lfsmake2 linux-initrd                   KCFG="-multi"
                ;;
@@ -1510,8 +1498,6 @@ buildipfire() {
   lfsmake2 iw
   lfsmake2 wpa_supplicant
   lfsmake2 hostapd
-  lfsmake2 pycurl
-  lfsmake2 urlgrabber
   lfsmake2 syslinux
   lfsmake2 tftpd
   lfsmake2 cpufrequtils
@@ -1559,8 +1545,6 @@ buildipfire() {
   lfsmake2 crda
   lfsmake2 libsolv
   lfsmake2 python-distutils-extra
-  lfsmake2 python-lzma
-  lfsmake2 python-progressbar
   lfsmake2 ddns
   lfsmake2 python3-setuptools-scm
   lfsmake2 python3-six
@@ -1586,9 +1570,6 @@ buildipfire() {
   lfsmake2 fping
   lfsmake2 telnet
   lfsmake2 xinetd
-  lfsmake2 gpgme
-  lfsmake2 pygpgme
-  lfsmake2 pakfire3
   lfsmake2 stress
   lfsmake2 libstatgrab
   lfsmake2 sarg
index 5157712fcd37939c1c7b07066c0cd24a922b22d7..12a06acf20b3229cc4b7b74dc5b364a49925f5a6 100644 (file)
@@ -9,7 +9,7 @@ export PATH=/usr/local/sbin:/usr/local/bin:${PATH}
 get() {
        local file="${1}"
 
-       wget -qO - --header="Metadata:true" "http://169.254.169.254/metadata/instance/${file}?api-version=2019-06-01&format=text"
+       wget --timeout=3 --tries=3 -qO - --header="Metadata:true" "http://169.254.169.254/metadata/instance/${file}?api-version=2019-06-01&format=text"
 }
 
 format_mac() {
index f0d4b88d1fe96de251be8cac957d5e856b8036c0..33633ddf943cd8af0aa42484310352674f834ac0 100644 (file)
@@ -62,9 +62,9 @@ function get_cpu_count {
 # Function to flush the firewall chains.
 function flush_fw_chain {
        # Call iptables and flush the chains
-       iptables -F "$IPS_INPUT_CHAIN"
-       iptables -F "$IPS_FORWARD_CHAIN"
-       iptables -F "$IPS_OUTPUT_CHAIN"
+       iptables -w -F "$IPS_INPUT_CHAIN"
+       iptables -w -F "$IPS_FORWARD_CHAIN"
+       iptables -w -F "$IPS_OUTPUT_CHAIN"
 }
 
 # Function to create the firewall rules to pass the traffic to suricata.
@@ -137,19 +137,19 @@ function generate_fw_rules {
                # Loop through the array and create firewall rules.
                for enabled_ips_zone in "${enabled_ips_zones[@]}"; do
                        # Create rules queue input and output related traffic and pass it to the IPS.
-                       iptables -I "$IPS_INPUT_CHAIN" -i "$enabled_ips_zone" -m mark ! --mark "$MARK"/"$MASK" -j NFQUEUE $NFQ_OPTIONS
-                       iptables -I "$IPS_OUTPUT_CHAIN" -o "$enabled_ips_zone" -m mark ! --mark "$MARK"/"$MASK" -j NFQUEUE $NFQ_OPTIONS
+                       iptables -w -I "$IPS_INPUT_CHAIN" -i "$enabled_ips_zone" -m mark ! --mark "$MARK"/"$MASK" -j NFQUEUE $NFQ_OPTIONS
+                       iptables -w -I "$IPS_OUTPUT_CHAIN" -o "$enabled_ips_zone" -m mark ! --mark "$MARK"/"$MASK" -j NFQUEUE $NFQ_OPTIONS
 
                        # Create rules which are required to handle forwarded traffic.
                        for enabled_ips_zone_forward in "${enabled_ips_zones[@]}"; do
-                               iptables -I "$IPS_FORWARD_CHAIN" -i "$enabled_ips_zone" -o "$enabled_ips_zone_forward" -m mark ! --mark "$MARK"/"$MASK" -j NFQUEUE $NFQ_OPTIONS
+                               iptables -w -I "$IPS_FORWARD_CHAIN" -i "$enabled_ips_zone" -o "$enabled_ips_zone_forward" -m mark ! --mark "$MARK"/"$MASK" -j NFQUEUE $NFQ_OPTIONS
                        done
                done
 
                # Clear repeat bit, so that it does not confuse IPsec or QoS
-               iptables -A "${IPS_INPUT_CHAIN}" -j MARK --set-xmark "0x0/${MASK}"
-               iptables -A "${IPS_FORWARD_CHAIN}" -j MARK --set-xmark "0x0/${MASK}"
-               iptables -A "${IPS_OUTPUT_CHAIN}" -j MARK --set-xmark "0x0/${MASK}"
+               iptables -w -A "${IPS_INPUT_CHAIN}" -j MARK --set-xmark "0x0/${MASK}"
+               iptables -w -A "${IPS_FORWARD_CHAIN}" -j MARK --set-xmark "0x0/${MASK}"
+               iptables -w -A "${IPS_OUTPUT_CHAIN}" -j MARK --set-xmark "0x0/${MASK}"
        fi
 }
 
diff --git a/src/patches/backports-3.18.1-1-ipfire-build.patch b/src/patches/backports-3.18.1-1-ipfire-build.patch
deleted file mode 100644 (file)
index 0b2998e..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -Naur backports-3.18.1-1.org/Makefile backports-3.18.1-1/Makefile
---- backports-3.18.1-1.org/Makefile    2014-12-21 22:37:13.000000000 +0100
-+++ backports-3.18.1-1/Makefile        2014-12-29 15:51:19.358111370 +0100
-@@ -8,9 +8,9 @@
- SHELL := /bin/bash
- BACKPORT_PWD := $(shell pwd)
--KMODDIR ?= updates
-+KMODDIR ?= kernel
- ifneq ($(origin KLIB), undefined)
--KMODPATH_ARG := "INSTALL_MOD_PATH=$(KLIB)"
-+KMODPATH_ARG :=
- else
- KLIB := /lib/modules/$(shell uname -r)/
- KMODPATH_ARG :=
-diff -Naur backports-3.18.1-1.org/Makefile.real backports-3.18.1-1/Makefile.real
---- backports-3.18.1-1.org/Makefile.real       2014-12-21 22:37:13.000000000 +0100
-+++ backports-3.18.1-1/Makefile.real   2014-12-29 15:51:40.934780933 +0100
-@@ -92,11 +92,11 @@
-       @$(MAKE) -C $(KLIB_BUILD) M=$(BACKPORT_PWD)                     \
-               INSTALL_MOD_DIR=$(KMODDIR) $(KMODPATH_ARG)              \
-               modules_install
--      @./scripts/blacklist.sh $(KLIB)/ $(KLIB)/$(KMODDIR)
-+#     @./scripts/blacklist.sh $(KLIB)/ $(KLIB)/$(KMODDIR)
-       @./scripts/compress_modules.sh $(KLIB)/$(KMODDIR)
--      @./scripts/check_depmod.sh
--      @/sbin/depmod -a
--      @./scripts/update-initramfs.sh $(KLIB)
-+#     @./scripts/check_depmod.sh
-+#     @/sbin/depmod -a
-+#     @./scripts/update-initramfs.sh $(KLIB)
-       @echo
-       @echo Your backported driver modules should be installed now.
-       @echo Reboot.
diff --git a/src/patches/backports-3.18.1-1_add_libertas_uap.patch b/src/patches/backports-3.18.1-1_add_libertas_uap.patch
deleted file mode 100644 (file)
index 9a5b01b..0000000
+++ /dev/null
@@ -1,5058 +0,0 @@
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/Kconfig backports-3.18.1-1/drivers/net/wireless/Kconfig
---- backports-3.18.1-1.org/drivers/net/wireless/Kconfig        2014-12-21 22:37:15.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/Kconfig    2014-12-29 20:37:43.945764119 +0100
-@@ -55,6 +55,14 @@
-       ---help---
-         A driver for Marvell Libertas 8388 USB devices using thinfirm.
-+config LIBERTAS_UAP
-+      tristate "Marvell 8xxx Libertas UAP"
-+      depends on MAC80211
-+      depends on MMC
-+      select FW_LOADER
-+      ---help---
-+        Driver for Marvell Libertas 8xxx micro AP.
-+
- config AIRO
-       depends on n
-       tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/Makefile backports-3.18.1-1/drivers/net/wireless/libertas_uap/Makefile
---- backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/Makefile  1970-01-01 01:00:00.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/libertas_uap/Makefile      2014-12-29 20:41:50.975778546 +0100
-@@ -0,0 +1,6 @@
-+obj-$(CPTCFG_LIBERTAS_UAP) += uap8xxx.o
-+
-+uap8xxx-y += uap_main.o uap_sdio_mmc.o
-+uap8xxx-$(CPTCFG_PROC_FS) += uap_proc.o uap_debug.o
-+
-+EXTRA_CFLAGS += -DFPNUM='"52"' -DPXA3XX_DMA_ALIGN -DDEBUG_LEVEL1
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_debug.c backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_debug.c
---- backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_debug.c       1970-01-01 01:00:00.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_debug.c   2014-12-29 20:37:43.949097590 +0100
-@@ -0,0 +1,260 @@
-+/** @file uap_debug.c
-+  * @brief This file contains functions for debug proc file.
-+  *
-+  * Copyright (C) 2008-2009, Marvell International Ltd.
-+  *
-+  * This software file (the "File") is distributed by Marvell International
-+  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
-+  * (the "License").  You may use, redistribute and/or modify this File in
-+  * accordance with the terms and conditions of the License, a copy of which
-+  * is available along with the File in the gpl.txt file or by writing to
-+  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+  * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
-+  *
-+  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
-+  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
-+  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
-+  * this warranty disclaimer.
-+  *
-+  */
-+#ifdef CONFIG_PROC_FS
-+#include  "uap_headers.h"
-+
-+/********************************************************
-+              Local Variables
-+********************************************************/
-+
-+#define item_size(n) (sizeof ((uap_adapter *)0)->n)
-+#define item_addr(n) ((u32) &((uap_adapter *)0)->n)
-+
-+#define item_dbg_size(n) (sizeof (((uap_adapter *)0)->dbg.n))
-+#define item_dbg_addr(n) ((u32) &(((uap_adapter *)0)->dbg.n))
-+
-+#define item_dev_size(n) (sizeof ((uap_dev_t *)0)->n)
-+#define item_dev_addr(n) ((u32) &((uap_dev_t *)0)->n)
-+
-+/** MicroAp device offset */
-+#define OFFSET_UAP_DEV                0x01
-+/** Bluetooth adapter offset */
-+#define OFFSET_UAP_ADAPTER    0x02
-+
-+struct debug_data
-+{
-+    /** Name */
-+    char name[32];
-+    /** Size */
-+    u32 size;
-+    /** Address */
-+    u32 addr;
-+    /** Offset */
-+    u32 offset;
-+    /** Flag */
-+    u32 flag;
-+};
-+
-+/* To debug any member of uap_adapter, simply add one line here.
-+ */
-+static struct debug_data items[] = {
-+    {"cmd_sent", item_dev_size(cmd_sent), 0, item_dev_addr(cmd_sent),
-+     OFFSET_UAP_DEV},
-+    {"data_sent", item_dev_size(data_sent), 0, item_dev_addr(data_sent),
-+     OFFSET_UAP_DEV},
-+    {"IntCounter", item_size(IntCounter), 0, item_addr(IntCounter),
-+     OFFSET_UAP_ADAPTER},
-+    {"cmd_pending", item_size(cmd_pending), 0, item_addr(cmd_pending),
-+     OFFSET_UAP_ADAPTER},
-+    {"num_cmd_h2c_fail", item_dbg_size(num_cmd_host_to_card_failure), 0,
-+     item_dbg_addr(num_cmd_host_to_card_failure), OFFSET_UAP_ADAPTER},
-+    {"num_tx_h2c_fail", item_dbg_size(num_tx_host_to_card_failure), 0,
-+     item_dbg_addr(num_tx_host_to_card_failure), OFFSET_UAP_ADAPTER},
-+    {"psmode", item_size(psmode), 0, item_addr(psmode), OFFSET_UAP_ADAPTER},
-+    {"ps_state", item_size(ps_state), 0, item_addr(ps_state),
-+     OFFSET_UAP_ADAPTER},
-+#ifdef DEBUG_LEVEL1
-+    {"drvdbg", sizeof(drvdbg), (u32) & drvdbg, 0, 0}
-+#endif
-+};
-+
-+static int num_of_items = sizeof(items) / sizeof(items[0]);
-+
-+/********************************************************
-+              Global Variables
-+********************************************************/
-+
-+/********************************************************
-+              Local Functions
-+********************************************************/
-+/**
-+ *  @brief proc read function
-+ *
-+ *  @param page          pointer to buffer
-+ *  @param s       read data starting position
-+ *  @param off     offset
-+ *  @param cnt     counter
-+ *  @param eof     end of file flag
-+ *  @param data    data to output
-+ *  @return      number of output data
-+ */
-+static int uap_debug_proc_show(struct seq_file *s, void *data) {
-+    int val = 0;
-+    int i;
-+
-+    struct debug_data *d = (struct debug_data *)s->private;
-+
-+    if (MODULE_GET == 0)
-+        return UAP_STATUS_FAILURE;
-+
-+    for (i = 0; i < num_of_items; i++) {
-+        if (d[i].size == 1)
-+            val = *((u8 *) d[i].addr);
-+        else if (d[i].size == 2)
-+            val = *((u16 *) d[i].addr);
-+        else if (d[i].size == 4)
-+            val = *((u32 *) d[i].addr);
-+
-+        seq_printf(s, "%s=%d\n", d[i].name, val);
-+    }
-+    MODULE_PUT;
-+    return 0;
-+}
-+
-+static int uap_debug_proc_open(struct inode* inode, struct file* file) {
-+      return single_open(file, uap_debug_proc_show, PDE_DATA(inode));
-+}
-+
-+/**
-+ *  @brief proc write function
-+ *
-+ *  @param f     file pointer
-+ *  @param buf     pointer to data buffer
-+ *  @param cnt     data number to write
-+ *  @param data    data to write
-+ *  @return      number of data
-+ */
-+static ssize_t uap_debug_proc_write(struct file *f, const char __user *buf, size_t cnt, loff_t *data) {
-+    int r, i;
-+    char *pdata;
-+    char *p;
-+    char *p0;
-+    char *p1;
-+    char *p2;
-+    struct debug_data *d = (struct debug_data *)PDE_DATA(file_inode(f));
-+
-+    if (MODULE_GET == 0)
-+        return UAP_STATUS_FAILURE;
-+
-+    pdata = (char *) kmalloc(cnt, GFP_KERNEL);
-+    if (pdata == NULL) {
-+        MODULE_PUT;
-+        return 0;
-+    }
-+
-+    if (copy_from_user(pdata, buf, cnt)) {
-+        PRINTM(INFO, "Copy from user failed\n");
-+        kfree(pdata);
-+        MODULE_PUT;
-+        return 0;
-+    }
-+
-+    p0 = pdata;
-+    for (i = 0; i < num_of_items; i++) {
-+        do {
-+            p = strstr(p0, d[i].name);
-+            if (p == NULL)
-+                break;
-+            p1 = strchr(p, '\n');
-+            if (p1 == NULL)
-+                break;
-+            p0 = p1++;
-+            p2 = strchr(p, '=');
-+            if (!p2)
-+                break;
-+            p2++;
-+            r = string_to_number(p2);
-+            if (d[i].size == 1)
-+                *((u8 *) d[i].addr) = (u8) r;
-+            else if (d[i].size == 2)
-+                *((u16 *) d[i].addr) = (u16) r;
-+            else if (d[i].size == 4)
-+                *((u32 *) d[i].addr) = (u32) r;
-+            break;
-+        } while (TRUE);
-+    }
-+    kfree(pdata);
-+#ifdef DEBUG_LEVEL1
-+    printk(KERN_ALERT "drvdbg = 0x%x\n", drvdbg);
-+    printk(KERN_ALERT "INFO  (%08lx) %s\n", DBG_INFO,
-+           (drvdbg & DBG_INFO) ? "X" : "");
-+    printk(KERN_ALERT "WARN  (%08lx) %s\n", DBG_WARN,
-+           (drvdbg & DBG_WARN) ? "X" : "");
-+    printk(KERN_ALERT "ENTRY (%08lx) %s\n", DBG_ENTRY,
-+           (drvdbg & DBG_ENTRY) ? "X" : "");
-+    printk(KERN_ALERT "CMD_D (%08lx) %s\n", DBG_CMD_D,
-+           (drvdbg & DBG_CMD_D) ? "X" : "");
-+    printk(KERN_ALERT "DAT_D (%08lx) %s\n", DBG_DAT_D,
-+           (drvdbg & DBG_DAT_D) ? "X" : "");
-+    printk(KERN_ALERT "CMND  (%08lx) %s\n", DBG_CMND,
-+           (drvdbg & DBG_CMND) ? "X" : "");
-+    printk(KERN_ALERT "DATA  (%08lx) %s\n", DBG_DATA,
-+           (drvdbg & DBG_DATA) ? "X" : "");
-+    printk(KERN_ALERT "ERROR (%08lx) %s\n", DBG_ERROR,
-+           (drvdbg & DBG_ERROR) ? "X" : "");
-+    printk(KERN_ALERT "FATAL (%08lx) %s\n", DBG_FATAL,
-+           (drvdbg & DBG_FATAL) ? "X" : "");
-+    printk(KERN_ALERT "MSG   (%08lx) %s\n", DBG_MSG,
-+           (drvdbg & DBG_MSG) ? "X" : "");
-+#endif
-+    MODULE_PUT;
-+    return cnt;
-+}
-+
-+static const struct file_operations uap_debug_proc_fops = {
-+      .owner   = THIS_MODULE,
-+      .open    = uap_debug_proc_open,
-+      .read    = seq_read,
-+      .llseek  = seq_lseek,
-+      .release = single_release,
-+      .write   = uap_debug_proc_write,
-+};
-+
-+/********************************************************
-+              Global Functions
-+********************************************************/
-+/**
-+ *  @brief create debug proc file
-+ *
-+ *  @param priv          pointer uap_private
-+ *  @param dev     pointer net_device
-+ *  @return      N/A
-+ */
-+void
-+uap_debug_entry(uap_private * priv, struct net_device *dev)
-+{
-+    int i;
-+
-+    if (priv->proc_entry == NULL)
-+        return;
-+
-+    for (i = 0; i < num_of_items; i++) {
-+        if (items[i].flag & OFFSET_UAP_ADAPTER)
-+            items[i].addr = items[i].offset + (u32) priv->adapter;
-+        if (items[i].flag & OFFSET_UAP_DEV)
-+            items[i].addr = items[i].offset + (u32) & priv->uap_dev;
-+    }
-+    proc_create_data("debug", 0644, priv->proc_entry, &uap_debug_proc_fops,
-+      &items[0]);
-+}
-+
-+/**
-+ *  @brief remove proc file
-+ *
-+ *  @param priv          pointer uap_private
-+ *  @return      N/A
-+ */
-+void
-+uap_debug_remove(uap_private * priv)
-+{
-+    remove_proc_entry("debug", priv->proc_entry);
-+}
-+
-+#endif
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_drv.h backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_drv.h
---- backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_drv.h 1970-01-01 01:00:00.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_drv.h     2014-12-29 20:37:43.949097590 +0100
-@@ -0,0 +1,667 @@
-+/** @file uap_drv.h
-+  * @brief This file contains Linux OS related definitions and
-+  * declarations, uAP driver
-+  *
-+  * Copyright (C) 2008-2009, Marvell International Ltd.
-+  *
-+  * This software file (the "File") is distributed by Marvell International
-+  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
-+  * (the "License").  You may use, redistribute and/or modify this File in
-+  * accordance with the terms and conditions of the License, a copy of which
-+  * is available along with the File in the gpl.txt file or by writing to
-+  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+  * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
-+  *
-+  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
-+  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
-+  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
-+  * this warranty disclaimer.
-+  *
-+  */
-+
-+#ifndef _UAP_DRV_H
-+#define _UAP_DRV_H
-+
-+/** Driver release version */
-+#define DRIVER_VERSION                "26146"
-+
-+/** True */
-+#ifndef       TRUE
-+#define TRUE                  1
-+#endif
-+/** False */
-+#ifndef       FALSE
-+#define       FALSE                   0
-+#endif
-+
-+/** Bit definitions */
-+#ifndef BIT
-+#define BIT(x)        (1UL << (x))
-+#endif
-+
-+/** Dma addresses are 32-bits wide.  */
-+#ifndef __ATTRIB_ALIGN__
-+#define __ATTRIB_ALIGN__ __attribute__((aligned(4)))
-+#endif
-+
-+/**  attribute pack */
-+#ifndef __ATTRIB_PACK__
-+#define __ATTRIB_PACK__ __attribute__ ((packed))
-+#endif
-+
-+/** Debug Macro definition*/
-+#ifdef        DEBUG_LEVEL1
-+
-+extern u32 drvdbg;
-+
-+/** Debug message control bit definition for drvdbg */
-+/** Debug message */
-+#define       DBG_MSG         BIT(0)
-+/** Debug fatal message */
-+#define DBG_FATAL     BIT(1)
-+/** Debug error message */
-+#define DBG_ERROR     BIT(2)
-+/** Debug data message */
-+#define DBG_DATA      BIT(3)
-+/** Debug command message */
-+#define DBG_CMND      BIT(4)
-+
-+/** Debug data */
-+#define DBG_DAT_D     BIT(16)
-+/** Debug command */
-+#define DBG_CMD_D     BIT(17)
-+
-+/** Debug entry */
-+#define DBG_ENTRY     BIT(28)
-+/** Debug warning */
-+#define DBG_WARN      BIT(29)
-+/** Debug info */
-+#define DBG_INFO      BIT(30)
-+
-+/** Print info */
-+#define       PRINTM_INFO(msg...)  {if (drvdbg & DBG_INFO) printk(KERN_DEBUG msg);}
-+/** Print warn message */
-+#define       PRINTM_WARN(msg...)  {if (drvdbg & DBG_WARN) printk(KERN_DEBUG msg);}
-+/** Print entry */
-+#define       PRINTM_ENTRY(msg...) {if (drvdbg & DBG_ENTRY) printk(KERN_DEBUG msg);}
-+/** Print cmd_d */
-+#define       PRINTM_CMD_D(msg...) {if (drvdbg & DBG_CMD_D) printk(KERN_DEBUG msg);}
-+/** Print data_d */
-+#define       PRINTM_DAT_D(msg...) {if (drvdbg & DBG_DAT_D) printk(KERN_DEBUG msg);}
-+/** Print command */
-+#define       PRINTM_CMND(msg...)  {if (drvdbg & DBG_CMND) printk(KERN_DEBUG msg);}
-+/** Print data */
-+#define       PRINTM_DATA(msg...)  {if (drvdbg & DBG_DATA) printk(KERN_DEBUG msg);}
-+/** Print error message */
-+#define       PRINTM_ERROR(msg...) {if (drvdbg & DBG_ERROR) printk(KERN_DEBUG msg);}
-+/** Print fatal message */
-+#define       PRINTM_FATAL(msg...) {if (drvdbg & DBG_FATAL) printk(KERN_DEBUG msg);}
-+/** Print message */
-+#define       PRINTM_MSG(msg...)   {if (drvdbg & DBG_MSG) printk(KERN_ALERT msg);}
-+/** Print level */
-+#define       PRINTM(level,msg...) PRINTM_##level(msg)
-+
-+#else
-+
-+#define       PRINTM(level,msg...) do {} while (0)
-+
-+#endif /* DEBUG_LEVEL1 */
-+
-+/** Wait until a condition becomes true */
-+#define ASSERT(cond)                                          \
-+do {                                                          \
-+      if (!(cond))                                            \
-+              PRINTM(INFO, "ASSERT: %s, %s:%i\n",             \
-+                     __FUNCTION__, __FILE__, __LINE__);       \
-+} while(0)
-+
-+/** Log enrty point for debugging */
-+#define       ENTER()                 PRINTM(ENTRY, "Enter: %s, %s:%i\n", __FUNCTION__, \
-+                                                      __FILE__, __LINE__)
-+/** Log exit point for debugging */
-+#define       LEAVE()                 PRINTM(ENTRY, "Leave: %s, %s:%i\n", __FUNCTION__, \
-+                                                      __FILE__, __LINE__)
-+
-+#ifdef        DEBUG_LEVEL1
-+/** Dump buffer length */
-+#define DBG_DUMP_BUF_LEN    64
-+/** Maximum dump per line */
-+#define MAX_DUMP_PER_LINE   16
-+/** Data dump length */
-+#define DATA_DUMP_LEN       32
-+
-+static inline void
-+hexdump(char *prompt, u8 * buf, int len)
-+{
-+    int i;
-+    char dbgdumpbuf[DBG_DUMP_BUF_LEN];
-+    char *ptr = dbgdumpbuf;
-+
-+    printk(KERN_DEBUG "%s:\n", prompt);
-+    for (i = 1; i <= len; i++) {
-+        ptr += sprintf(ptr, "%02x ", *buf);
-+        buf++;
-+        if (i % MAX_DUMP_PER_LINE == 0) {
-+            *ptr = 0;
-+            printk(KERN_DEBUG "%s\n", dbgdumpbuf);
-+            ptr = dbgdumpbuf;
-+        }
-+    }
-+    if (len % MAX_DUMP_PER_LINE) {
-+        *ptr = 0;
-+        printk(KERN_DEBUG "%s\n", dbgdumpbuf);
-+    }
-+}
-+
-+/** Debug command */
-+#define DBG_HEXDUMP_CMD_D(x,y,z)    {if (drvdbg & DBG_CMD_D) hexdump(x,y,z);}
-+/** Debug data */
-+#define DBG_HEXDUMP_DAT_D(x,y,z)    {if (drvdbg & DBG_DAT_D) hexdump(x,y,z);}
-+/** Debug hexdump */
-+#define       DBG_HEXDUMP(level,x,y,z)    DBG_HEXDUMP_##level(x,y,z)
-+/** hexdump */
-+#define HEXDUMP(x,y,z)              {if (drvdbg & DBG_INFO) hexdump(x,y,z);}
-+#else
-+/** Do nothing since debugging is not turned on */
-+#define DBG_HEXDUMP(level,x,y,z)    do {} while (0)
-+/** Do nothing since debugging is not turned on */
-+#define HEXDUMP(x,y,z)              do {} while (0)
-+#endif
-+
-+/**
-+ * Typedefs
-+ */
-+/** Unsigned char */
-+typedef u8 BOOLEAN;
-+
-+/*
-+ * OS macro definitions
-+ */
-+/** OS macro to get time */
-+#define os_time_get() jiffies
-+
-+/** OS macro to update transfer start time */
-+#define UpdateTransStart(dev) { \
-+      dev->trans_start = jiffies; \
-+}
-+
-+/** Try to get a reference to the module */
-+#define MODULE_GET    try_module_get(THIS_MODULE)
-+/** Decrease module reference count */
-+#define MODULE_PUT    module_put(THIS_MODULE)
-+
-+/** OS macro to initialize semaphore */
-+#define OS_INIT_SEMAPHORE(x)  sema_init(x,1)
-+/** OS macro to acquire blocking semaphore */
-+#define OS_ACQ_SEMAPHORE_BLOCK(x)     down_interruptible(x)
-+/** OS macro to acquire non-blocking semaphore */
-+#define OS_ACQ_SEMAPHORE_NOBLOCK(x)   down_trylock(x)
-+/** OS macro to release semaphore */
-+#define OS_REL_SEMAPHORE(x)           up(x)
-+
-+static inline void
-+os_sched_timeout(u32 millisec)
-+{
-+    set_current_state(TASK_INTERRUPTIBLE);
-+    schedule_timeout((millisec * HZ) / 1000);
-+}
-+
-+/** Maximum size of ethernet packet */
-+#define MRVDRV_MAXIMUM_ETH_PACKET_SIZE        1514
-+
-+/** Maximum size of multicast list */
-+#define MRVDRV_MAX_MULTICAST_LIST_SIZE        32
-+
-+/** Find minimum */
-+#ifndef MIN
-+#define MIN(a,b)              ((a) < (b) ? (a) : (b))
-+#endif
-+
-+/** Find maximum */
-+#ifndef MAX
-+#define MAX(a,b)              ((a) > (b) ? (a) : (b))
-+#endif
-+
-+/** Find number of elements */
-+#ifndef NELEMENTS
-+#define NELEMENTS(x) (sizeof(x)/sizeof(x[0]))
-+#endif
-+
-+/** Buffer Constants */
-+
-+/** Size of command buffer */
-+#define MRVDRV_SIZE_OF_CMD_BUFFER       (2 * 1024)
-+
-+/** Length of device length */
-+#define DEV_NAME_LEN                  32
-+
-+/** Length of ethernet address */
-+#ifndef       ETH_ALEN
-+#define ETH_ALEN                      6
-+#endif
-+
-+/** Default watchdog timeout */
-+#define MRVDRV_DEFAULT_WATCHDOG_TIMEOUT (2 * HZ)
-+
-+/** Success */
-+#define UAP_STATUS_SUCCESS         (0)
-+/** Failure */
-+#define UAP_STATUS_FAILURE         (-1)
-+/** Not accepted */
-+#define UAP_STATUS_NOT_ACCEPTED    (-2)
-+
-+/** Max loop count (* 100ms) for waiting device ready at init time */
-+#define MAX_WAIT_DEVICE_READY_COUNT   50
-+
-+/** Tx high watermark. Stop Tx queue after this is crossed */
-+#define TX_HIGH_WATERMARK   4
-+/** Tx low watermark. Restart Tx queue after this is crossed */
-+#define TX_LOW_WATERMARK    2
-+
-+/** Netlink protocol number */
-+#define NETLINK_MARVELL     (MAX_LINKS - 1)
-+/** Netlink maximum payload size */
-+#define NL_MAX_PAYLOAD      1024
-+/** Netlink multicast group number */
-+#define NL_MULTICAST_GROUP  1
-+
-+/** 20 seconds */
-+#define MRVDRV_TIMER_20S              20000
-+
-+/** Host Command option for wait till Send */
-+#define HostCmd_OPTION_WAITFORSEND            0x0001
-+/** Host Command option for wait for RSP */
-+#define HostCmd_OPTION_WAITFORRSP             0x0002
-+/** Host Command option for wait for RSP or Timeout */
-+#define HostCmd_OPTION_WAITFORRSP_TIMEOUT     0x0003
-+/** Host Command option for wait for RSP of sleep confirm */
-+#define HostCmd_OPTION_WAITFORRSP_SLEEPCONFIRM   0x0004
-+
-+/** Sleep until a condition gets true or a timeout elapses */
-+#define os_wait_interruptible_timeout(waitq, cond, timeout) \
-+      wait_event_interruptible_timeout(waitq, cond, ((timeout) * HZ / 1000))
-+
-+/** Private command ID to Host command */
-+#define       UAPHOSTCMD                      (SIOCDEVPRIVATE + 1)
-+
-+/** Private command ID to Power Mode */
-+#define       UAP_POWER_MODE                  (SIOCDEVPRIVATE + 3)
-+/** sleep_param */
-+typedef struct _ps_sleep_param
-+{
-+    /** control bitmap */
-+    u32 ctrl_bitmap;
-+    /** minimum sleep period (micro second) */
-+    u32 min_sleep;
-+    /** maximum sleep period (micro second) */
-+    u32 max_sleep;
-+} ps_sleep_param;
-+
-+/** inactivity sleep_param */
-+typedef struct _inact_sleep_param
-+{
-+    /** inactivity timeout (micro second) */
-+    u32 inactivity_to;
-+    /** miniumu awake period (micro second) */
-+    u32 min_awake;
-+    /** maximum awake period (micro second) */
-+    u32 max_awake;
-+} inact_sleep_param;
-+
-+/** flag for ps mode */
-+#define PS_FLAG_PS_MODE                 1
-+/** flag for sleep param */
-+#define PS_FLAG_SLEEP_PARAM             2
-+/** flag for inactivity sleep param */
-+#define PS_FLAG_INACT_SLEEP_PARAM       4
-+
-+/** Disable power mode */
-+#define PS_MODE_DISABLE                      0
-+/** Enable periodic dtim ps */
-+#define PS_MODE_PERIODIC_DTIM                1
-+/** Enable inactivity ps */
-+#define PS_MODE_INACTIVITY                   2
-+
-+/** sleep parameter */
-+#define SLEEP_PARAMETER                     1
-+/** inactivity sleep parameter */
-+#define INACTIVITY_SLEEP_PARAMETER          2
-+/** ps_mgmt */
-+typedef struct _ps_mgmt
-+{
-+    /** flags for valid field */
-+    u16 flags;
-+    /** power mode */
-+    u16 ps_mode;
-+    /** sleep param */
-+    ps_sleep_param sleep_param;
-+    /** inactivity sleep param */
-+    inact_sleep_param inact_param;
-+} ps_mgmt;
-+
-+/** Semaphore structure */
-+typedef struct semaphore SEMAPHORE;
-+
-+/** Global Varibale Declaration */
-+/** Private data structure of the device */
-+typedef struct _uap_private uap_private;
-+/** Adapter data structure of the device */
-+typedef struct _uap_adapter uap_adapter;
-+/** private structure */
-+extern uap_private *uappriv;
-+
-+/** ENUM definition*/
-+
-+/** Hardware status codes */
-+typedef enum _HARDWARE_STATUS
-+{
-+    HWReady,
-+    HWInitializing,
-+    HWReset,
-+    HWClosing,
-+    HWNotReady
-+} HARDWARE_STATUS;
-+
-+/** info for debug purpose */
-+typedef struct _uap_dbg
-+{
-+        /** Number of host to card command failures */
-+    u32 num_cmd_host_to_card_failure;
-+        /** Number of host to card Tx failures */
-+    u32 num_tx_host_to_card_failure;
-+} uap_dbg;
-+
-+/** Set thread state */
-+#define OS_SET_THREAD_STATE(x)                set_current_state(x)
-+
-+typedef struct
-+{
-+    /** Task */
-+    struct task_struct *task;
-+    /** Queue */
-+    wait_queue_head_t waitQ;
-+    /** PID */
-+    pid_t pid;
-+    /** Private structure */
-+    void *priv;
-+} uap_thread;
-+
-+static inline void
-+uap_activate_thread(uap_thread * thr)
-+{
-+        /** Record the thread pid */
-+    thr->pid = current->pid;
-+
-+        /** Initialize the wait queue */
-+    init_waitqueue_head(&thr->waitQ);
-+}
-+
-+static inline void
-+uap_deactivate_thread(uap_thread * thr)
-+{
-+    thr->pid = 0;
-+    return;
-+}
-+
-+static inline void
-+uap_create_thread(int (*uapfunc) (void *), uap_thread * thr, char *name)
-+{
-+    thr->task = kthread_run(uapfunc, thr, "%s", name);
-+}
-+
-+static inline int
-+uap_terminate_thread(uap_thread * thr)
-+{
-+    /* Check if the thread is active or not */
-+    if (!thr->pid)
-+        return -1;
-+    kthread_stop(thr->task);
-+    return 0;
-+}
-+
-+/** Data structure for the Marvell uAP device */
-+typedef struct _uap_dev
-+{
-+        /** device name */
-+    char name[DEV_NAME_LEN];
-+        /** card pointer */
-+    void *card;
-+        /** IO port */
-+    u32 ioport;
-+        /** Rx unit */
-+    u8 rx_unit;
-+        /** Data sent:
-+          TRUE - Data is sent to fw, no Tx Done received
-+          FALSE - Tx done received for previous Tx */
-+    BOOLEAN data_sent;
-+        /** CMD sent:
-+          TRUE - CMD is sent to fw, no CMD Done received
-+          FALSE - CMD done received for previous CMD */
-+    BOOLEAN cmd_sent;
-+        /** netdev pointer */
-+    struct net_device *netdev;
-+} uap_dev_t, *puap_dev_t;
-+
-+/** Private structure for the MV device */
-+struct _uap_private
-+{
-+        /** Device open */
-+    int open;
-+
-+        /** Device adapter structure */
-+    uap_adapter *adapter;
-+        /** Device structure */
-+    uap_dev_t uap_dev;
-+
-+        /** Net device statistics structure */
-+    struct net_device_stats stats;
-+
-+        /** Number of Tx timeouts */
-+    u32 num_tx_timeout;
-+
-+        /** Media connection status */
-+    BOOLEAN MediaConnected;
-+
-+#ifdef CONFIG_PROC_FS
-+    struct proc_dir_entry *proc_uap;
-+    struct proc_dir_entry *proc_entry;
-+#endif                          /* CONFIG_PROC_FS */
-+
-+        /** Firmware helper */
-+    const struct firmware *fw_helper;
-+        /** Firmware */
-+    const struct firmware *firmware;
-+        /** Hotplug device */
-+    struct device *hotplug_device;
-+        /** thread to service interrupts */
-+    uap_thread MainThread;
-+        /** Driver lock */
-+    spinlock_t driver_lock;
-+        /** Driver lock flags */
-+    ulong driver_flags;
-+
-+};
-+
-+/** PS_CMD_ConfirmSleep */
-+typedef struct _PS_CMD_ConfirmSleep
-+{
-+        /** SDIO Length */
-+    u16 SDLen;
-+    /** SDIO Type */
-+    u16 SDType;
-+        /** Command */
-+    u16 Command;
-+        /** Size */
-+    u16 Size;
-+        /** Sequence number */
-+    u16 SeqNum;
-+        /** Result */
-+    u16 Result;
-+} __ATTRIB_PACK__ PS_CMD_ConfirmSleep, *PPS_CMD_ConfirmSleep;
-+
-+/** Wlan Adapter data structure*/
-+struct _uap_adapter
-+{
-+        /** Power save confirm sleep command */
-+    PS_CMD_ConfirmSleep PSConfirmSleep;
-+        /** Device status */
-+    HARDWARE_STATUS HardwareStatus;
-+        /** Interrupt counter */
-+    u32 IntCounter;
-+        /** Tx packet queue */
-+    struct sk_buff_head tx_queue;
-+        /** Cmd packet queue */
-+    struct sk_buff_head cmd_queue;
-+        /** Command sequence number */
-+    u16 SeqNum;
-+        /** Command buffer */
-+    u8 *CmdBuf;
-+        /** cmd pending flag */
-+    u8 cmd_pending;
-+        /** cmd wait option */
-+    u8 cmd_wait_option;
-+        /** Command buffer length */
-+    u32 CmdSize;
-+        /** Command wait queue */
-+    wait_queue_head_t cmdwait_q __ATTRIB_ALIGN__;
-+        /** Command wait queue state flag */
-+    u8 CmdWaitQWoken;
-+        /** PnP support */
-+    BOOLEAN SurpriseRemoved;
-+        /** Debug */
-+    uap_dbg dbg;
-+        /** Netlink kernel socket */
-+    struct sock *nl_sk;
-+        /** Semaphore for CMD */
-+    SEMAPHORE CmdSem;
-+         /** Power Save mode */
-+    u8 psmode;
-+        /** Power Save state */
-+    u8 ps_state;
-+        /** Number of wakeup tries */
-+    u32 WakeupTries;
-+};
-+
-+static inline int
-+os_upload_rx_packet(uap_private * priv, struct sk_buff *skb)
-+{
-+    skb->dev = priv->uap_dev.netdev;
-+    skb->protocol = eth_type_trans(skb, priv->uap_dev.netdev);
-+    skb->ip_summed = CHECKSUM_UNNECESSARY;
-+    if (in_interrupt())
-+        netif_rx(skb);
-+    else
-+        netif_rx_ni(skb);
-+    return 0;
-+}
-+
-+/*
-+ *  netif carrier_on/off and start(wake)/stop_queue handling
-+ */
-+static inline void
-+os_carrier_on(uap_private * priv)
-+{
-+    if (!netif_carrier_ok(priv->uap_dev.netdev) &&
-+        (priv->MediaConnected == TRUE)) {
-+        netif_carrier_on(priv->uap_dev.netdev);
-+    }
-+}
-+
-+static inline void
-+os_carrier_off(uap_private * priv)
-+{
-+    if (netif_carrier_ok(priv->uap_dev.netdev)) {
-+        netif_carrier_off(priv->uap_dev.netdev);
-+    }
-+}
-+
-+static inline void
-+os_start_queue(uap_private * priv)
-+{
-+    if (netif_queue_stopped(priv->uap_dev.netdev) &&
-+        (priv->MediaConnected == TRUE)) {
-+        netif_wake_queue(priv->uap_dev.netdev);
-+    }
-+}
-+
-+static inline void
-+os_stop_queue(uap_private * priv)
-+{
-+    if (!netif_queue_stopped(priv->uap_dev.netdev)) {
-+        netif_stop_queue(priv->uap_dev.netdev);
-+    }
-+}
-+
-+/** Interface specific header */
-+#define INTF_HEADER_LEN         4
-+
-+/** headroom alignment for tx packet */
-+#define HEADER_ALIGNMENT      8
-+
-+/** The number of times to try when polling for status bits */
-+#define MAX_POLL_TRIES                        100
-+
-+/** Length of SNAP header */
-+#define MRVDRV_SNAP_HEADER_LEN          8
-+
-+/** Extra length of Tx packet buffer */
-+#define EXTRA_LEN     36
-+
-+/** Buffer size for ethernet Tx packets */
-+#define MRVDRV_ETH_TX_PACKET_BUFFER_SIZE \
-+      (ETH_FRAME_LEN + sizeof(TxPD) + EXTRA_LEN)
-+
-+/** Buffer size for ethernet Rx packets */
-+#define MRVDRV_ETH_RX_PACKET_BUFFER_SIZE \
-+      (ETH_FRAME_LEN + sizeof(RxPD) \
-+       + MRVDRV_SNAP_HEADER_LEN + EXTRA_LEN)
-+
-+/** Packet type: data, command & event */
-+typedef enum _mv_type
-+{
-+    MV_TYPE_DAT = 0,
-+    MV_TYPE_CMD = 1,
-+    MV_TYPE_EVENT = 3
-+} mv_type;
-+
-+/** Disable interrupt */
-+#define OS_INT_DISABLE        spin_lock_irqsave(&priv->driver_lock, priv->driver_flags)
-+/** Enable interrupt */
-+#define       OS_INT_RESTORE  spin_unlock_irqrestore(&priv->driver_lock, priv->driver_flags)
-+
-+int uap_process_rx_packet(uap_private * priv, struct sk_buff *skb);
-+void uap_interrupt(uap_private * priv);
-+uap_private *uap_add_card(void *card);
-+int uap_remove_card(void *card);
-+int uap_process_event(uap_private * priv, u8 * payload, uint len);
-+int uap_soft_reset(uap_private * priv);
-+int uap_process_sleep_confirm_resp(uap_private * priv, u8 * resp, int resp_len);
-+
-+#ifdef CONFIG_PROC_FS
-+/** The proc fs interface */
-+void uap_proc_entry(uap_private * priv, struct net_device *dev);
-+void uap_proc_remove(uap_private * priv);
-+int string_to_number(char *s);
-+void uap_debug_entry(uap_private * priv, struct net_device *dev);
-+void uap_debug_remove(uap_private * priv);
-+#endif /* CONFIG_PROC_FS */
-+
-+int sbi_register(void);
-+
-+void sbi_unregister(void);
-+int sbi_register_dev(uap_private * priv);
-+int sbi_unregister_dev(uap_private * priv);
-+int sbi_prog_fw_w_helper(uap_private *);
-+
-+int sbi_host_to_card(uap_private * priv, u8 * payload, u16 nb);
-+int sbi_enable_host_int(uap_private * priv);
-+int sbi_disable_host_int(uap_private * priv);
-+
-+int sbi_get_int_status(uap_private * priv, u8 * ireg);
-+/** Check firmware status */
-+int sbi_check_fw_status(uap_private *, int);
-+int sbi_prog_helper(uap_private *);
-+
-+int sbi_wakeup_firmware(uap_private * priv);
-+
-+#endif /* _UAP_DRV_H */
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_fw.h backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_fw.h
---- backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_fw.h  1970-01-01 01:00:00.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_fw.h      2014-12-29 20:37:43.949097590 +0100
-@@ -0,0 +1,359 @@
-+/** @file uap_fw.h
-+ *
-+ * @brief This file contains firmware specific defines.
-+ *
-+ * Copyright (C) 2008-2009, Marvell International Ltd.
-+ *
-+ * This software file (the "File") is distributed by Marvell International
-+ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
-+ * (the "License").  You may use, redistribute and/or modify this File in
-+ * accordance with the terms and conditions of the License, a copy of which
-+ * is available along with the File in the gpl.txt file or by writing to
-+ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
-+ *
-+ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
-+ * this warranty disclaimer.
-+ *
-+ */
-+/********************************************************
-+Change log:
-+      02/26/08: Initial creation
-+********************************************************/
-+
-+#ifndef _UAP_FW_H
-+#define _UAP_FW_H
-+
-+/** uap upload size */
-+#define       UAP_UPLD_SIZE                   2312
-+/** Packet type Micro AP */
-+#define PKT_TYPE_MICROAP              1
-+/** Packet type client */
-+#define PKT_TYPE_CLIENT                       0
-+
-+/** TxPD descriptor */
-+typedef struct _TxPD
-+{
-+        /** Bss Type */
-+    u8 BssType;
-+        /** Bss num */
-+    u8 BssNum;
-+        /** Tx packet length */
-+    u16 TxPktLength;
-+        /** Tx packet offset */
-+    u16 TxPktOffset;
-+        /** Tx packet type */
-+    u16 TxPktType;
-+        /** Tx Control */
-+    u32 TxControl;
-+        /** reserved */
-+    u32 reserved[2];
-+} __ATTRIB_PACK__ TxPD, *PTxPD;
-+
-+/** RxPD Descriptor */
-+typedef struct _RxPD
-+{
-+        /** Bss Type */
-+    u8 BssType;
-+        /** Bss Num */
-+    u8 BssNum;
-+        /** Tx packet length */
-+    u16 RxPktLength;
-+        /** Tx packet offset */
-+    u16 RxPktOffset;
-+} __ATTRIB_PACK__ RxPD, *PRxPD;
-+
-+#ifdef BIG_ENDIAN
-+/** Convert from 16 bit little endian format to CPU format */
-+#define uap_le16_to_cpu(x) le16_to_cpu(x)
-+/** Convert from 32 bit little endian format to CPU format */
-+#define uap_le32_to_cpu(x) le32_to_cpu(x)
-+/** Convert from 64 bit little endian format to CPU format */
-+#define uap_le64_to_cpu(x) le64_to_cpu(x)
-+/** Convert to 16 bit little endian format from CPU format */
-+#define uap_cpu_to_le16(x) cpu_to_le16(x)
-+/** Convert to 32 bit little endian format from CPU format */
-+#define uap_cpu_to_le32(x) cpu_to_le32(x)
-+/** Convert to 64 bit little endian format from CPU format */
-+#define uap_cpu_to_le64(x) cpu_to_le64(x)
-+
-+/** Convert TxPD to little endian format from CPU format */
-+#define endian_convert_TxPD(x);                                         \
-+    {                                                                   \
-+        (x)->TxPktLength = uap_cpu_to_le16((x)->TxPktLength);         \
-+        (x)->TxPktOffset = uap_cpu_to_le32((x)->TxPktOffset);         \
-+        (x)->TxControl = uap_cpu_to_le32((x)->TxControl);              \
-+        (x)->TxPktType = uap_cpu_to_le32((x)->TxPktType);             \
-+    }
-+
-+/** Convert RxPD from little endian format to CPU format */
-+#define endian_convert_RxPD(x);                                       \
-+    {                                                                 \
-+        (x)->RxPktLength = uap_le16_to_cpu((x)->RxPktLength);         \
-+        (x)->RxPktOffset = uap_le32_to_cpu((x)->RxPktOffset);         \
-+    }
-+#else /* BIG_ENDIAN */
-+/** Do nothing */
-+#define uap_le16_to_cpu(x) x
-+/** Do nothing */
-+#define uap_le32_to_cpu(x) x
-+/** Do nothing */
-+#define uap_le64_to_cpu(x) x
-+/** Do nothing */
-+#define uap_cpu_to_le16(x) x
-+/** Do nothing */
-+#define uap_cpu_to_le32(x) x
-+/** Do nothing */
-+#define uap_cpu_to_le64(x) x
-+
-+/** Do nothing */
-+#define endian_convert_TxPD(x)
-+/** Do nothing */
-+#define endian_convert_RxPD(x)
-+#endif /* BIG_ENDIAN */
-+
-+/** Host Command ID : Function initialization */
-+#define HostCmd_CMD_FUNC_INIT                 0x00a9
-+/** Host Command ID : Function shutdown */
-+#define HostCmd_CMD_FUNC_SHUTDOWN             0x00aa
-+
-+/** Host Command id: SYS_INFO  */
-+#define HOST_CMD_APCMD_SYS_INFO               0x00ae
-+/** Host Command id: SYS_RESET  */
-+#define HOST_CMD_APCMD_SYS_RESET              0x00af
-+/** Host Command id: SYS_CONFIGURE  */
-+#define HOST_CMD_APCMD_SYS_CONFIGURE          0x00b0
-+/** Host Command id: BSS_START  */
-+#define HOST_CMD_APCMD_BSS_START              0x00b1
-+/** Host Command id: SYS_STOP  */
-+#define HOST_CMD_APCMD_BSS_STOP               0x00b2
-+/** Host Command id: STA_LIST  */
-+#define HOST_CMD_APCMD_STA_LIST               0x00b3
-+/** Host Command id: STA_FILTER_TABLE  */
-+#define HOST_CMD_APCMD_STA_FILTER_TABLE       0x00b4
-+/** Host Command id: STA_DEAUTH  */
-+#define HOST_CMD_APCMD_STA_DEAUTH             0x00b5
-+/** Host Command id: SOFT_RESET  */
-+#define HOST_CMD_APCMD_SOFT_RESET             0x00d5
-+/** Host Command id: POWER_MGMT_EXT  */
-+#define HOST_CMD_POWER_MGMT_EXT               0x00ef
-+/** Host Command id: SLEEP_CONFIRM*/
-+#define HOST_CMD_SLEEP_CONFIRM              0x00d8
-+
-+/** TLV type : SSID */
-+#define TLV_TYPE_SSID                         0x0000
-+/** TLV type : Rates */
-+#define TLV_TYPE_RATES                                0x0001
-+/** TLV type : PHY DS */
-+#define TLV_TYPE_PHY_DS                               0x0003
-+
-+/** TLV Id : Base id */
-+#define PROPRIETARY_TLV_BASE_ID               0x0100
-+/** TLV Id : AP_MAC_ADDRESS */
-+#define MRVL_AP_MAC_ADDRESS_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 43)
-+/** TLV Id : Beacon period */
-+#define MRVL_BEACON_PERIOD_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 44)
-+/** TLV Id : Dtim period */
-+#define MRVL_DTIM_PERIOD_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 45)
-+/** TLV Id : Basic rates */
-+#define MRVL_BASIC_RATES_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 46)
-+/** TLV Id : Tx Power */
-+#define MRVL_TX_POWER_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 47)
-+/** TLV Id : Broadcast SSID control */
-+#define MRVL_BCAST_SSID_CTL_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 48)
-+/** TLV Id : Preamble control */
-+#define MRVL_PREAMBLE_CTL_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 49)
-+/** TLV Id : Antenna control */
-+#define MRVL_ANTENNA_CTL_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 50)
-+/** TLV Id : RTS threshold */
-+#define MRVL_RTS_THRESHOLD_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 51)
-+/** TLV Id : Radio control */
-+#define MRVL_RADIO_CTL_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 52)
-+/** TLV Id : TX data rate */
-+#define MRVL_TX_DATA_RATE_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 53)
-+/** TLV Id : Packet forward control */
-+#define MRVL_PKT_FWD_CTL_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 54)
-+/** TLV Id : STA info */
-+#define MRVL_STA_INFO_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 55)
-+/** TLV Id : STA MAC address filter */
-+#define MRVL_STA_MAC_ADDR_FILTER_TLV_ID (PROPRIETARY_TLV_BASE_ID + 56)
-+/** TLV Id : STA ageout timer */
-+#define MRVL_STA_AGEOUT_TIMER_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 57)
-+/** TLV Id : Security config */
-+#define MRVL_SECURITY_CFG_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 58)
-+/** TLV Id : WEP KEY */
-+#define MRVL_WEP_KEY_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 59)
-+/** TLV Id : WPA Passphrase */
-+#define MRVL_WPA_PASSPHRASE_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 60)
-+
-+/** Action get */
-+#define ACTION_GET    0
-+/** Action set */
-+#define ACTION_SET    1
-+/** Length of ethernet address */
-+#ifndef       ETH_ALEN
-+#define ETH_ALEN                      6
-+#endif
-+
-+/** HostCmd_DS_GEN */
-+typedef struct
-+{
-+    /** Command */
-+    u16 Command;
-+    /** Size */
-+    u16 Size;
-+    /** Sequence number */
-+    u16 SeqNum;
-+    /** Result */
-+    u16 Result;
-+} __ATTRIB_PACK__ HostCmd_DS_GEN;
-+
-+/** Size of HostCmd_DS_GEN */
-+#define S_DS_GEN    sizeof(HostCmd_DS_GEN)
-+
-+/** _HostCmd_HEADER*/
-+typedef struct
-+{
-+    /** Command Header : Command */
-+    u16 Command;
-+    /** Command Header : Size */
-+    u16 Size;
-+} __ATTRIB_PACK__ HostCmd_HEADER;
-+
-+/** HostCmd_SYS_CONFIG */
-+typedef struct _HostCmd_SYS_CONFIG
-+{
-+        /** CMD Action GET/SET*/
-+    u16 Action;
-+        /** Tlv buffer */
-+    u8 TlvBuffer[0];
-+} __ATTRIB_PACK__ HostCmd_SYS_CONFIG;
-+
-+/** HostCmd_DS_POWER_MGMT_EXT */
-+typedef struct _HostCmd_DS_POWER_MGMT_EXT
-+{
-+    /** CMD Action Get/Set*/
-+    u16 action;
-+    /** power mode */
-+    u16 power_mode;
-+} __ATTRIB_PACK__ HostCmd_DS_POWER_MGMT_EXT;
-+
-+/** _HostCmd_DS_COMMAND*/
-+typedef struct _HostCmd_DS_COMMAND
-+{
-+
-+        /** Command Header : Command */
-+    u16 Command;
-+        /** Command Header : Size */
-+    u16 Size;
-+        /** Command Header : Sequence number */
-+    u16 SeqNum;
-+        /** Command Header : Result */
-+    u16 Result;
-+        /** Command Body */
-+    union
-+    {
-+        HostCmd_SYS_CONFIG sys_config;
-+        HostCmd_DS_POWER_MGMT_EXT pm_cfg;
-+
-+    } params;
-+} __ATTRIB_PACK__ HostCmd_DS_COMMAND;
-+
-+/** MrvlIEtypesHeader_*/
-+typedef struct _MrvlIEtypesHeader
-+{
-+    /** Header type */
-+    u16 Type;
-+    /** Header length */
-+    u16 Len;
-+} __ATTRIB_PACK__ MrvlIEtypesHeader_t;
-+
-+/** MrvlIEtypes_Data_t */
-+typedef struct _MrvlIEtypes_Data_t
-+{
-+    /** Header */
-+    MrvlIEtypesHeader_t Header;
-+    /** Data */
-+    u8 Data[1];
-+} __ATTRIB_PACK__ MrvlIEtypes_Data_t;
-+
-+/** MrvlIEtypes_ChanListParamSet_t */
-+typedef struct _MrvlIEtypes_MacAddr_t
-+{
-+    /** Header */
-+    MrvlIEtypesHeader_t Header;
-+    /** AP MAC address */
-+    u8 ApMacAddr[ETH_ALEN];
-+} __ATTRIB_PACK__ MrvlIEtypes_MacAddr_t;
-+
-+/** Event ID: BSS started */
-+#define MICRO_AP_EV_ID_BSS_START    46
-+
-+/** Event ID: BSS idle event */
-+#define MICRO_AP_EV_BSS_IDLE       67
-+
-+/** Event ID: BSS active event */
-+#define MICRO_AP_EV_BSS_ACTIVE             68
-+
-+/** Event ID: PS_AWAKE */
-+#define EVENT_PS_AWAKE     0x0a
-+
-+/** Event ID: PS_SLEEP */
-+#define EVENT_PS_SLEEP     0x0b
-+
-+/** PS_STATE */
-+typedef enum _PS_STATE
-+{
-+    PS_STATE_AWAKE,
-+    PS_STATE_PRE_SLEEP,
-+    PS_STATE_SLEEP
-+} PS_STATE;
-+
-+/** TLV type: AP Sleep param */
-+#define TLV_TYPE_AP_SLEEP_PARAM         (PROPRIETARY_TLV_BASE_ID + 106)
-+/** TLV type: AP Inactivity Sleep param */
-+#define TLV_TYPE_AP_INACT_SLEEP_PARAM   (PROPRIETARY_TLV_BASE_ID + 107)
-+
-+/** MrvlIEtypes_sleep_param_t */
-+typedef struct _MrvlIEtypes_sleep_param_t
-+{
-+    /** Header */
-+    MrvlIEtypesHeader_t header;
-+    /** control bitmap */
-+    u32 ctrl_bitmap;
-+    /** min_sleep */
-+    u32 min_sleep;
-+    /** max_sleep */
-+    u32 max_sleep;
-+} __ATTRIB_PACK__ MrvlIEtypes_sleep_param_t;
-+
-+/** MrvlIEtypes_inact_sleep_param_t */
-+typedef struct _MrvlIEtypes_inact_sleep_param_t
-+{
-+    /** Header */
-+    MrvlIEtypesHeader_t header;
-+    /** inactivity timeout */
-+    u32 inactivity_to;
-+    /** min_awake */
-+    u32 min_awake;
-+    /** max_awake */
-+    u32 max_awake;
-+} __ATTRIB_PACK__ MrvlIEtypes_inact_sleep_param_t;
-+
-+/** AP_Event */
-+typedef struct _AP_Event
-+{
-+    /** Event ID */
-+    u32 EventId;
-+    /*
-+     * Reserved for STA_ASSOCIATED event and contains
-+     * status information for the MIC_COUNTERMEASURES event.
-+     */
-+    /** Reserved/status */
-+    u16 status;
-+    /** AP MAC address */
-+    u8 MacAddr[ETH_ALEN];
-+} __ATTRIB_PACK__ AP_Event;
-+#endif /* _UAP_FW_H */
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_headers.h backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_headers.h
---- backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_headers.h     1970-01-01 01:00:00.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_headers.h 2014-12-29 20:37:43.949097590 +0100
-@@ -0,0 +1,64 @@
-+/** @file uap_headers.h
-+ *
-+ * @brief This file contains all the necessary include file.
-+ *
-+  * Copyright (C) 2008-2009, Marvell International Ltd.
-+ *
-+ * This software file (the "File") is distributed by Marvell International
-+ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
-+ * (the "License").  You may use, redistribute and/or modify this File in
-+ * accordance with the terms and conditions of the License, a copy of which
-+ * is available along with the File in the gpl.txt file or by writing to
-+ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
-+ *
-+ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
-+ * this warranty disclaimer.
-+ *
-+ */
-+#ifndef _UAP_HEADERS_H
-+#define _UAP_HEADERS_H
-+
-+/* Linux header files */
-+#include    <linux/kernel.h>
-+#include    <linux/module.h>
-+#include    <linux/init.h>
-+#include    <linux/version.h>
-+#include    <linux/param.h>
-+#include    <linux/types.h>
-+#include    <linux/interrupt.h>
-+#include    <linux/proc_fs.h>
-+#include    <linux/kthread.h>
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
-+#include    <linux/semaphore.h>
-+#else
-+#include    <asm/semaphore.h>
-+#endif
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
-+#include    <linux/config.h>
-+#endif
-+
-+/* Net header files */
-+#include    <linux/netdevice.h>
-+#include    <linux/net.h>
-+#include    <linux/skbuff.h>
-+#include    <linux/if_ether.h>
-+#include    <linux/etherdevice.h>
-+#include    <net/sock.h>
-+#include    <linux/netlink.h>
-+#include    <linux/firmware.h>
-+#include    <linux/delay.h>
-+
-+#include    "uap_drv.h"
-+#include    "uap_fw.h"
-+
-+#include <linux/mmc/sdio.h>
-+#include <linux/mmc/sdio_ids.h>
-+#include <linux/mmc/sdio_func.h>
-+#include <linux/mmc/card.h>
-+#include "uap_sdio_mmc.h"
-+
-+#endif /* _UAP_HEADERS_H */
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_main.c backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_main.c
---- backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_main.c        1970-01-01 01:00:00.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_main.c    2014-12-29 20:37:43.952431125 +0100
-@@ -0,0 +1,1817 @@
-+/** @file uap_main.c
-+  * @brief This file contains the major functions in uAP
-+  * driver. It includes init, exit etc..
-+  * This file also contains the initialization for SW,
-+  * FW and HW
-+  *
-+  * Copyright (C) 2008-2009, Marvell International Ltd.
-+  *
-+  * This software file (the "File") is distributed by Marvell International
-+  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
-+  * (the "License").  You may use, redistribute and/or modify this File in
-+  * accordance with the terms and conditions of the License, a copy of which
-+  * is available along with the File in the gpl.txt file or by writing to
-+  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+  * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
-+  *
-+  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
-+  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
-+  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
-+  * this warranty disclaimer.
-+  *
-+  */
-+/**
-+  * @mainpage uAP Linux Driver
-+  *
-+  * @section overview_sec Overview
-+  *
-+  * This is Linux reference driver for Marvell uAP.
-+  *
-+  * @section copyright_sec Copyright
-+  *
-+  * Copyright (C) 2008, Marvell International Ltd.
-+  *
-+  */
-+
-+#include      "uap_headers.h"
-+
-+/**
-+ * the global variable of a pointer to uap_private
-+ * structure variable
-+ */
-+uap_private *uappriv = NULL;
-+#ifdef DEBUG_LEVEL1
-+#define DEFAULT_DEBUG_MASK    (DBG_MSG | DBG_FATAL | DBG_ERROR)
-+u32 drvdbg = DEFAULT_DEBUG_MASK;
-+#endif
-+/** Helper name */
-+char *helper_name = NULL;
-+/** Firmware name */
-+char *fw_name = NULL;
-+
-+/** Semaphore for add/remove card */
-+SEMAPHORE AddRemoveCardSem;
-+
-+/********************************************************
-+              Local Functions
-+********************************************************/
-+/**
-+ *  @brief This function send sleep confirm command to firmware
-+ *
-+ *  @param priv       A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS for success otherwise UAP_STATUS_FAILURE
-+ */
-+static int
-+uap_dnld_sleep_confirm_cmd(uap_private * priv)
-+{
-+    uap_adapter *Adapter = priv->adapter;
-+    int ret = UAP_STATUS_SUCCESS;
-+    ENTER();
-+    PRINTM(CMND, "Sleep confirm\n");
-+    Adapter->cmd_pending = TRUE;
-+    Adapter->cmd_wait_option = HostCmd_OPTION_WAITFORRSP_SLEEPCONFIRM;
-+    ret =
-+        sbi_host_to_card(priv, (u8 *) & Adapter->PSConfirmSleep,
-+                         sizeof(PS_CMD_ConfirmSleep));
-+    if (ret != UAP_STATUS_SUCCESS) {
-+        Adapter->ps_state = PS_STATE_AWAKE;
-+        Adapter->cmd_pending = FALSE;
-+        Adapter->cmd_wait_option = FALSE;
-+    }
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function process sleep confirm resp from firmware
-+ *
-+ *  @param priv       A pointer to uap_private structure
-+ *  @param resp       A pointer to resp buf
-+ *  @param resp_len   resp buf len
-+ *  @return      UAP_STATUS_SUCCESS for success otherwise UAP_STATUS_FAILURE
-+ */
-+int
-+uap_process_sleep_confirm_resp(uap_private * priv, u8 * resp, int resp_len)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    HostCmd_DS_COMMAND *cmd;
-+    uap_adapter *Adapter = priv->adapter;
-+    ENTER();
-+    PRINTM(CMND, "Sleep confirm resp\n");
-+    if (!resp_len) {
-+        PRINTM(ERROR, "Cmd Size is 0\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    cmd = (HostCmd_DS_COMMAND *) resp;
-+    cmd->Result = uap_le16_to_cpu(cmd->Result);
-+    if (cmd->Result != UAP_STATUS_SUCCESS) {
-+        PRINTM(ERROR, "HOST_CMD_APCMD_PS_SLEEP_CONFIRM fail=%x\n", cmd->Result);
-+        ret = -EFAULT;
-+    }
-+  done:
-+    if (ret == UAP_STATUS_SUCCESS)
-+        Adapter->ps_state = PS_STATE_SLEEP;
-+    else
-+        Adapter->ps_state = PS_STATE_AWAKE;
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function checks condition and prepares to
-+ *  send sleep confirm command to firmware if OK.
-+ *
-+ *  @param priv       A pointer to uap_private structure
-+ *  @return           n/a
-+ */
-+static void
-+uap_ps_cond_check(uap_private * priv)
-+{
-+    uap_adapter *Adapter = priv->adapter;
-+
-+    ENTER();
-+    if (!priv->uap_dev.cmd_sent &&
-+        !Adapter->cmd_pending && !Adapter->IntCounter) {
-+        uap_dnld_sleep_confirm_cmd(priv);
-+    } else {
-+        PRINTM(INFO, "Delay Sleep Confirm (%s%s%s)\n",
-+               (priv->uap_dev.cmd_sent) ? "D" : "",
-+               (Adapter->cmd_pending) ? "C" : "",
-+               (Adapter->IntCounter) ? "I" : "");
-+    }
-+    LEAVE();
-+}
-+
-+/**
-+ *  @brief This function add cmd to cmdQ and waiting for response
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param skb           A pointer to the skb for process
-+ *  @param wait_option Wait option
-+ *  @return      UAP_STATUS_SUCCESS for success otherwise UAP_STATUS_FAILURE
-+ */
-+static int
-+uap_process_cmd(uap_private * priv, struct sk_buff *skb, u8 wait_option)
-+{
-+    uap_adapter *Adapter = priv->adapter;
-+    int ret = UAP_STATUS_SUCCESS;
-+    HostCmd_DS_COMMAND *cmd;
-+    u8 *headptr;
-+    ENTER();
-+    if (Adapter->HardwareStatus != HWReady) {
-+        PRINTM(ERROR, "Hw not ready, uap_process_cmd\n");
-+        kfree(skb);
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    skb->cb[0] = wait_option;
-+    headptr = skb->data;
-+    *(u16 *) & headptr[0] = uap_cpu_to_le16(skb->len);
-+    *(u16 *) & headptr[2] = uap_cpu_to_le16(MV_TYPE_CMD);
-+    cmd = (HostCmd_DS_COMMAND *) (skb->data + INTF_HEADER_LEN);
-+    Adapter->SeqNum++;
-+    cmd->SeqNum = uap_cpu_to_le16(Adapter->SeqNum);
-+    PRINTM(CMND, "process_cmd: %x\n", cmd->Command);
-+    DBG_HEXDUMP(CMD_D, "process_cmd", (u8 *) cmd, cmd->Size);
-+    if (!wait_option) {
-+        skb_queue_tail(&priv->adapter->cmd_queue, skb);
-+        wake_up_interruptible(&priv->MainThread.waitQ);
-+        LEAVE();
-+        return ret;
-+    }
-+    if (OS_ACQ_SEMAPHORE_BLOCK(&Adapter->CmdSem)) {
-+        PRINTM(ERROR, "Acquire semaphore error, uap_prepare_cmd\n");
-+        kfree(skb);
-+        LEAVE();
-+        return -EBUSY;
-+    }
-+    skb_queue_tail(&priv->adapter->cmd_queue, skb);
-+    Adapter->CmdWaitQWoken = FALSE;
-+    wake_up_interruptible(&priv->MainThread.waitQ);
-+    /* Sleep until response is generated by FW */
-+    if (wait_option == HostCmd_OPTION_WAITFORRSP_TIMEOUT) {
-+        if (!os_wait_interruptible_timeout
-+            (Adapter->cmdwait_q, Adapter->CmdWaitQWoken, MRVDRV_TIMER_20S)) {
-+            PRINTM(ERROR, "Cmd timeout\n");
-+            Adapter->cmd_pending = FALSE;
-+            ret = -EFAULT;
-+        }
-+    } else
-+        wait_event_interruptible(Adapter->cmdwait_q, Adapter->CmdWaitQWoken);
-+    OS_REL_SEMAPHORE(&Adapter->CmdSem);
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief Inspect the response buffer for pointers to expected TLVs
-+ *
-+ *
-+ *  @param pTlv        Pointer to the start of the TLV buffer to parse
-+ *  @param tlvBufSize  Size of the TLV buffer
-+ *  @param reqTlvType  request tlv's tlvtype
-+ *  @param ppTlv       Output parameter: Pointer to the request TLV if found
-+ *
-+ *  @return            void
-+ */
-+static void
-+uap_get_tlv_ptrs(MrvlIEtypes_Data_t * pTlv, int tlvBufSize,
-+                 u16 reqTlvType, MrvlIEtypes_Data_t ** ppTlv)
-+{
-+    MrvlIEtypes_Data_t *pCurrentTlv;
-+    int tlvBufLeft;
-+    u16 tlvType;
-+    u16 tlvLen;
-+
-+    ENTER();
-+    pCurrentTlv = pTlv;
-+    tlvBufLeft = tlvBufSize;
-+    *ppTlv = NULL;
-+    PRINTM(INFO, "uap_get_tlv: tlvBufSize = %d, reqTlvType=%x\n", tlvBufSize,
-+           reqTlvType);
-+    while (tlvBufLeft >= sizeof(MrvlIEtypesHeader_t)) {
-+        tlvType = uap_le16_to_cpu(pCurrentTlv->Header.Type);
-+        tlvLen = uap_le16_to_cpu(pCurrentTlv->Header.Len);
-+        if (reqTlvType == tlvType)
-+            *ppTlv = (MrvlIEtypes_Data_t *) pCurrentTlv;
-+        if (*ppTlv) {
-+            HEXDUMP("TLV Buf", (u8 *) * ppTlv, tlvLen);
-+            break;
-+        }
-+        tlvBufLeft -= (sizeof(pTlv->Header) + tlvLen);
-+        pCurrentTlv = (MrvlIEtypes_Data_t *) (pCurrentTlv->Data + tlvLen);
-+    }                           /* while */
-+    LEAVE();
-+}
-+
-+/**
-+ *  @brief This function get mac
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
-+ */
-+static int
-+uap_get_mac_address(uap_private * priv)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u32 CmdSize;
-+    HostCmd_DS_COMMAND *cmd;
-+    uap_adapter *Adapter = priv->adapter;
-+    struct sk_buff *skb;
-+    MrvlIEtypes_MacAddr_t *pMacAddrTlv;
-+    MrvlIEtypes_Data_t *pTlv;
-+    u16 tlvBufSize;
-+    ENTER();
-+    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
-+    if (!skb) {
-+        PRINTM(ERROR, "No free skb\n");
-+        ret = -ENOMEM;
-+        goto done;
-+    }
-+    CmdSize =
-+        S_DS_GEN + sizeof(HostCmd_SYS_CONFIG) + sizeof(MrvlIEtypes_MacAddr_t);
-+    cmd = (HostCmd_DS_COMMAND *) (skb->data + INTF_HEADER_LEN);
-+    cmd->Command = uap_cpu_to_le16(HOST_CMD_APCMD_SYS_CONFIGURE);
-+    cmd->Size = uap_cpu_to_le16(CmdSize);
-+    cmd->params.sys_config.Action = uap_cpu_to_le16(ACTION_GET);
-+    pMacAddrTlv =
-+        (MrvlIEtypes_MacAddr_t *) (skb->data + INTF_HEADER_LEN + S_DS_GEN +
-+                                   sizeof(HostCmd_SYS_CONFIG));
-+    pMacAddrTlv->Header.Type = uap_cpu_to_le16(MRVL_AP_MAC_ADDRESS_TLV_ID);
-+    pMacAddrTlv->Header.Len = uap_cpu_to_le16(ETH_ALEN);
-+    skb_put(skb, CmdSize + INTF_HEADER_LEN);
-+    if (UAP_STATUS_SUCCESS !=
-+        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
-+        PRINTM(ERROR, "Fail to process cmd SYS_CONFIGURE Query\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    if (!Adapter->CmdSize) {
-+        PRINTM(ERROR, "Cmd Size is 0\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    cmd = (HostCmd_DS_COMMAND *) Adapter->CmdBuf;
-+    cmd->Result = uap_le16_to_cpu(cmd->Result);
-+    if (cmd->Result != UAP_STATUS_SUCCESS) {
-+        PRINTM(ERROR, "uap_get_mac_address fail=%x\n", cmd->Result);
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    pTlv =
-+        (MrvlIEtypes_Data_t *) (Adapter->CmdBuf + S_DS_GEN +
-+                                sizeof(HostCmd_SYS_CONFIG));
-+    tlvBufSize = Adapter->CmdSize - S_DS_GEN - sizeof(HostCmd_SYS_CONFIG);
-+    uap_get_tlv_ptrs(pTlv, tlvBufSize, MRVL_AP_MAC_ADDRESS_TLV_ID,
-+                     (MrvlIEtypes_Data_t **) & pMacAddrTlv);
-+    if (pMacAddrTlv) {
-+        memcpy(priv->uap_dev.netdev->dev_addr, pMacAddrTlv->ApMacAddr,
-+               ETH_ALEN);
-+        HEXDUMP("Original MAC addr", priv->uap_dev.netdev->dev_addr, ETH_ALEN);
-+    }
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function checks the conditions and sends packet to device
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param skb           A pointer to the skb for process
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+uap_process_tx(uap_private * priv, struct sk_buff *skb)
-+{
-+    uap_adapter *Adapter = priv->adapter;
-+    int ret = UAP_STATUS_SUCCESS;
-+    TxPD *pLocalTxPD;
-+    u8 *headptr;
-+    struct sk_buff *newskb;
-+    int newheadlen;
-+    ENTER();
-+    ASSERT(skb);
-+    if (!skb) {
-+        LEAVE();
-+        return UAP_STATUS_FAILURE;
-+    }
-+    if (skb_headroom(skb) < (sizeof(TxPD) + INTF_HEADER_LEN + HEADER_ALIGNMENT)) {
-+        newheadlen = sizeof(TxPD) + INTF_HEADER_LEN + HEADER_ALIGNMENT;
-+        PRINTM(WARN, "Tx: Insufficient skb headroom %d\n", skb_headroom(skb));
-+        /* Insufficient skb headroom - allocate a new skb */
-+        newskb = skb_realloc_headroom(skb, newheadlen);
-+        if (unlikely(newskb == NULL)) {
-+            PRINTM(ERROR, "Tx: Cannot allocate skb\n");
-+            ret = UAP_STATUS_FAILURE;
-+            goto done;
-+        }
-+        kfree_skb(skb);
-+        skb = newskb;
-+        PRINTM(INFO, "new skb headroom %d\n", skb_headroom(skb));
-+    }
-+    /* headptr should be aligned */
-+    headptr = skb->data - sizeof(TxPD) - INTF_HEADER_LEN;
-+    headptr = (u8 *) ((u32) headptr & ~((u32) (HEADER_ALIGNMENT - 1)));
-+
-+    pLocalTxPD = (TxPD *) (headptr + INTF_HEADER_LEN);
-+    memset(pLocalTxPD, 0, sizeof(TxPD));
-+    pLocalTxPD->BssType = PKT_TYPE_MICROAP;
-+    pLocalTxPD->TxPktLength = skb->len;
-+    /* offset of actual data */
-+    pLocalTxPD->TxPktOffset = (long) skb->data - (long) pLocalTxPD;
-+    endian_convert_TxPD(pLocalTxPD);
-+    *(u16 *) & headptr[0] =
-+        uap_cpu_to_le16(skb->len + ((long) skb->data - (long) headptr));
-+    *(u16 *) & headptr[2] = uap_cpu_to_le16(MV_TYPE_DAT);
-+    ret =
-+        sbi_host_to_card(priv, headptr,
-+                         skb->len + ((long) skb->data - (long) headptr));
-+    if (ret) {
-+        PRINTM(ERROR, "uap_process_tx Error: sbi_host_to_card failed: 0x%X\n",
-+               ret);
-+        Adapter->dbg.num_tx_host_to_card_failure++;
-+        goto done;
-+    }
-+    PRINTM(DATA, "Data => FW\n");
-+    DBG_HEXDUMP(DAT_D, "Tx", headptr,
-+                MIN(skb->len + sizeof(TxPD), DATA_DUMP_LEN));
-+  done:
-+    /* Freed skb */
-+    kfree_skb(skb);
-+    LEAVE();
-+    return ret;
-+}
-+
-+static struct netlink_kernel_cfg cfg = {
-+      .groups = NL_MULTICAST_GROUP,
-+};
-+
-+/**
-+ *  @brief This function initializes the adapter structure
-+ *  and set default value to the member of adapter.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+uap_init_sw(uap_private * priv)
-+{
-+    uap_adapter *Adapter = priv->adapter;
-+
-+    ENTER();
-+
-+    if (!(Adapter->CmdBuf = kmalloc(MRVDRV_SIZE_OF_CMD_BUFFER, GFP_KERNEL))) {
-+        PRINTM(INFO, "Failed to allocate command buffer!\n");
-+        LEAVE();
-+        return UAP_STATUS_FAILURE;
-+    }
-+
-+    Adapter->cmd_pending = FALSE;
-+    Adapter->CmdWaitQWoken = FALSE;
-+    Adapter->ps_state = PS_STATE_AWAKE;
-+    Adapter->WakeupTries = 0;
-+
-+    memset(&Adapter->PSConfirmSleep, 0, sizeof(PS_CMD_ConfirmSleep));
-+        /** SDIO header */
-+    Adapter->PSConfirmSleep.SDLen =
-+        uap_cpu_to_le16(sizeof(PS_CMD_ConfirmSleep));
-+    Adapter->PSConfirmSleep.SDType = uap_cpu_to_le16(MV_TYPE_CMD);
-+    Adapter->PSConfirmSleep.SeqNum = 0;
-+    Adapter->PSConfirmSleep.Command = uap_cpu_to_le16(HOST_CMD_SLEEP_CONFIRM);
-+    Adapter->PSConfirmSleep.Size = uap_cpu_to_le16(sizeof(HostCmd_DS_GEN));
-+    Adapter->PSConfirmSleep.Result = 0;
-+
-+    init_waitqueue_head(&Adapter->cmdwait_q);
-+    OS_INIT_SEMAPHORE(&Adapter->CmdSem);
-+
-+    skb_queue_head_init(&Adapter->tx_queue);
-+    skb_queue_head_init(&Adapter->cmd_queue);
-+
-+    /* Status variable */
-+    Adapter->HardwareStatus = HWInitializing;
-+
-+    /* PnP support */
-+    Adapter->SurpriseRemoved = FALSE;
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
-+    Adapter->nl_sk = netlink_kernel_create(NETLINK_MARVELL,
-+                                           NL_MULTICAST_GROUP, NULL,
-+                                           THIS_MODULE);
-+#else
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
-+    Adapter->nl_sk = netlink_kernel_create(NETLINK_MARVELL,
-+                                           NL_MULTICAST_GROUP, NULL, NULL,
-+                                           THIS_MODULE);
-+#else
-+    Adapter->nl_sk = netlink_kernel_create(&init_net, NETLINK_MARVELL, &cfg);
-+#endif
-+#endif
-+    if (!Adapter->nl_sk) {
-+        PRINTM(ERROR,
-+               "Could not initialize netlink event passing mechanism!\n");
-+    }
-+    LEAVE();
-+    return UAP_STATUS_SUCCESS;
-+}
-+
-+/**
-+ *  @brief This function sends FUNC_INIT command to firmware
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
-+ */
-+static int
-+uap_func_init(uap_private * priv)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u32 CmdSize;
-+    HostCmd_DS_GEN *cmd;
-+    uap_adapter *Adapter = priv->adapter;
-+    struct sk_buff *skb;
-+    ENTER();
-+    if (Adapter->HardwareStatus != HWReady) {
-+        PRINTM(ERROR, "uap_func_init:Hardware is not ready!\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
-+    if (!skb) {
-+        PRINTM(ERROR, "No free skb\n");
-+        ret = -ENOMEM;
-+        goto done;
-+    }
-+    CmdSize = sizeof(HostCmd_DS_GEN);
-+    cmd = (HostCmd_DS_GEN *) (skb->data + INTF_HEADER_LEN);
-+    cmd->Command = uap_cpu_to_le16(HostCmd_CMD_FUNC_INIT);
-+    cmd->Size = uap_cpu_to_le16(CmdSize);
-+    skb_put(skb, CmdSize + INTF_HEADER_LEN);
-+    PRINTM(CMND, "HostCmd_CMD_FUNC_INIT\n");
-+    if (UAP_STATUS_SUCCESS !=
-+        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
-+        PRINTM(ERROR, "Fail to process cmd HostCmd_CMD_FUNC_INIT\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function sends FUNC_SHUTDOWN command to firmware
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
-+ */
-+static int __exit
-+uap_func_shutdown(uap_private * priv)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u32 CmdSize;
-+    HostCmd_DS_GEN *cmd;
-+    uap_adapter *Adapter = priv->adapter;
-+    struct sk_buff *skb;
-+    ENTER();
-+    if (Adapter->HardwareStatus != HWReady) {
-+        PRINTM(ERROR, "uap_func_shutdown:Hardware is not ready!\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
-+    if (!skb) {
-+        PRINTM(ERROR, "No free skb\n");
-+        ret = -ENOMEM;
-+        goto done;
-+    }
-+    CmdSize = sizeof(HostCmd_DS_GEN);
-+    cmd = (HostCmd_DS_GEN *) (skb->data + INTF_HEADER_LEN);
-+    cmd->Command = uap_cpu_to_le16(HostCmd_CMD_FUNC_SHUTDOWN);
-+    cmd->Size = uap_cpu_to_le16(CmdSize);
-+    skb_put(skb, CmdSize + INTF_HEADER_LEN);
-+    PRINTM(CMND, "HostCmd_CMD_FUNC_SHUTDOWN\n");
-+    if (UAP_STATUS_SUCCESS !=
-+        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
-+        PRINTM(ERROR, "Fail to process cmd HostCmd_CMD_FUNC_SHUTDOWN\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function initializes firmware
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+uap_init_fw(uap_private * priv)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    ENTER();
-+    sbi_disable_host_int(priv);
-+    /* Check if firmware is already running */
-+    if (sbi_check_fw_status(priv, 1) == UAP_STATUS_SUCCESS) {
-+        PRINTM(MSG, "UAP FW already running! Skip FW download\n");
-+    } else {
-+        if ((ret = request_firmware(&priv->fw_helper, helper_name,
-+                                    priv->hotplug_device)) < 0) {
-+            PRINTM(FATAL,
-+                   "request_firmware() failed (helper), error code = %#x\n",
-+                   ret);
-+            goto done;
-+        }
-+
-+        /* Download the helper */
-+        ret = sbi_prog_helper(priv);
-+
-+        if (ret) {
-+            PRINTM(FATAL,
-+                   "Bootloader in invalid state! Helper download failed!\n");
-+            ret = UAP_STATUS_FAILURE;
-+            goto done;
-+        }
-+        if ((ret = request_firmware(&priv->firmware, fw_name,
-+                                    priv->hotplug_device)) < 0) {
-+            PRINTM(FATAL, "request_firmware() failed, error code = %#x\n", ret);
-+            goto done;
-+        }
-+
-+        /* Download the main firmware via the helper firmware */
-+        if (sbi_prog_fw_w_helper(priv)) {
-+            PRINTM(FATAL, "UAP FW download failed!\n");
-+            ret = UAP_STATUS_FAILURE;
-+            goto done;
-+        }
-+        /* Check if the firmware is downloaded successfully or not */
-+        if (sbi_check_fw_status(priv, MAX_FIRMWARE_POLL_TRIES) ==
-+            UAP_STATUS_FAILURE) {
-+            PRINTM(FATAL, "FW failed to be active in time!\n");
-+            ret = UAP_STATUS_FAILURE;
-+            goto done;
-+        }
-+        PRINTM(MSG, "UAP FW is active\n");
-+    }
-+    sbi_enable_host_int(priv);
-+    priv->adapter->HardwareStatus = HWReady;
-+    if (uap_func_init(priv) != UAP_STATUS_SUCCESS) {
-+        ret = UAP_STATUS_FAILURE;
-+        goto done;
-+    }
-+  done:
-+    if (priv->fw_helper)
-+        release_firmware(priv->fw_helper);
-+    if (priv->firmware)
-+        release_firmware(priv->firmware);
-+    LEAVE();
-+    return ret;
-+
-+}
-+
-+/**
-+ *  @brief This function frees the structure of adapter
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      n/a
-+ */
-+static void
-+uap_free_adapter(uap_private * priv)
-+{
-+    uap_adapter *Adapter = priv->adapter;
-+
-+    ENTER();
-+
-+    if (Adapter) {
-+        if ((Adapter->nl_sk) && ((Adapter->nl_sk)->sk_socket)) {
-+            sock_release((Adapter->nl_sk)->sk_socket);
-+            Adapter->nl_sk = NULL;
-+        }
-+        if (Adapter->CmdBuf)
-+            kfree(Adapter->CmdBuf);
-+        skb_queue_purge(&priv->adapter->tx_queue);
-+        skb_queue_purge(&priv->adapter->cmd_queue);
-+        /* Free the adapter object itself */
-+        kfree(Adapter);
-+        priv->adapter = NULL;
-+    }
-+
-+    LEAVE();
-+}
-+
-+/**
-+ *  @brief This function handles the major job in uap driver.
-+ *  it handles the event generated by firmware, rx data received
-+ *  from firmware and tx data sent from kernel.
-+ *
-+ *  @param data    A pointer to uap_thread structure
-+ *  @return        BT_STATUS_SUCCESS
-+ */
-+static int
-+uap_service_main_thread(void *data)
-+{
-+    uap_thread *thread = data;
-+    uap_private *priv = thread->priv;
-+    uap_adapter *Adapter = priv->adapter;
-+    wait_queue_t wait;
-+    u8 ireg = 0;
-+    struct sk_buff *skb;
-+    ENTER();
-+    uap_activate_thread(thread);
-+    init_waitqueue_entry(&wait, current);
-+    current->flags |= PF_NOFREEZE;
-+
-+    for (;;) {
-+        add_wait_queue(&thread->waitQ, &wait);
-+        OS_SET_THREAD_STATE(TASK_INTERRUPTIBLE);
-+        if ((Adapter->WakeupTries) ||
-+            (!Adapter->IntCounter && Adapter->ps_state == PS_STATE_PRE_SLEEP) ||
-+            (!priv->adapter->IntCounter
-+             && (priv->uap_dev.data_sent ||
-+                 skb_queue_empty(&priv->adapter->tx_queue))
-+             && (priv->uap_dev.cmd_sent || Adapter->cmd_pending ||
-+                 skb_queue_empty(&priv->adapter->cmd_queue))
-+            )) {
-+            PRINTM(INFO, "Main: Thread sleeping...\n");
-+            schedule();
-+        }
-+        OS_SET_THREAD_STATE(TASK_RUNNING);
-+        remove_wait_queue(&thread->waitQ, &wait);
-+        if (kthread_should_stop() || Adapter->SurpriseRemoved) {
-+            PRINTM(INFO, "main-thread: break from main thread: "
-+                   "SurpriseRemoved=0x%x\n", Adapter->SurpriseRemoved);
-+            /* Cancel pending command */
-+            if (Adapter->cmd_pending == TRUE) {
-+                /* Wake up cmd Q */
-+                Adapter->CmdWaitQWoken = TRUE;
-+                wake_up_interruptible(&Adapter->cmdwait_q);
-+            }
-+            break;
-+        }
-+
-+        PRINTM(INFO, "Main: Thread waking up...\n");
-+        if (priv->adapter->IntCounter) {
-+            OS_INT_DISABLE;
-+            Adapter->IntCounter = 0;
-+            OS_INT_RESTORE;
-+            sbi_get_int_status(priv, &ireg);
-+        } else if ((priv->adapter->ps_state == PS_STATE_SLEEP) &&
-+                   (!skb_queue_empty(&priv->adapter->cmd_queue) ||
-+                    !skb_queue_empty(&priv->adapter->tx_queue))) {
-+            priv->adapter->WakeupTries++;
-+            PRINTM(CMND, "%lu : Wakeup device...\n", os_time_get());
-+            sbi_wakeup_firmware(priv);
-+            continue;
-+        }
-+        if (Adapter->ps_state == PS_STATE_PRE_SLEEP)
-+            uap_ps_cond_check(priv);
-+
-+        /* The PS state is changed during processing of Sleep Request event
-+           above */
-+        if ((Adapter->ps_state == PS_STATE_SLEEP) ||
-+            (Adapter->ps_state == PS_STATE_PRE_SLEEP))
-+            continue;
-+        /* Execute the next command */
-+        if (!priv->uap_dev.cmd_sent && !Adapter->cmd_pending &&
-+            (Adapter->HardwareStatus == HWReady)) {
-+            if (!skb_queue_empty(&priv->adapter->cmd_queue)) {
-+                skb = skb_dequeue(&priv->adapter->cmd_queue);
-+                if (skb) {
-+                    Adapter->CmdSize = 0;
-+                    Adapter->cmd_pending = TRUE;
-+                    Adapter->cmd_wait_option = skb->cb[0];
-+                    if (sbi_host_to_card(priv, skb->data, skb->len)) {
-+                        PRINTM(ERROR, "Cmd:sbi_host_to_card failed!\n");
-+                        Adapter->cmd_pending = FALSE;
-+                        Adapter->dbg.num_cmd_host_to_card_failure++;
-+                        /* Wake up cmd Q */
-+                        Adapter->CmdWaitQWoken = TRUE;
-+                        wake_up_interruptible(&Adapter->cmdwait_q);
-+                    } else {
-+                        if (Adapter->cmd_wait_option ==
-+                            HostCmd_OPTION_WAITFORSEND) {
-+                            /* Wake up cmd Q */
-+                            Adapter->CmdWaitQWoken = TRUE;
-+                            wake_up_interruptible(&Adapter->cmdwait_q);
-+                            Adapter->cmd_wait_option = FALSE;
-+                        }
-+                    }
-+                    kfree_skb(skb);
-+                }
-+            }
-+        }
-+        if (!priv->uap_dev.data_sent && (Adapter->HardwareStatus == HWReady)) {
-+            if (!skb_queue_empty(&priv->adapter->tx_queue)) {
-+                skb = skb_dequeue(&priv->adapter->tx_queue);
-+                if (skb) {
-+                    if (uap_process_tx(priv, skb)) {
-+                        priv->stats.tx_dropped++;
-+                        priv->stats.tx_errors++;
-+                        os_start_queue(priv);
-+                    } else {
-+                        priv->stats.tx_packets++;
-+                        priv->stats.tx_bytes += skb->len;
-+                    }
-+
-+                }
-+            }
-+        }
-+    }
-+    uap_deactivate_thread(thread);
-+    LEAVE();
-+    return UAP_STATUS_SUCCESS;
-+}
-+
-+/**
-+ *  @brief uap hostcmd ioctl handler
-+ *
-+ *  @param dev      A pointer to net_device structure
-+ *  @param req      A pointer to ifreq structure
-+ *  @return         UAP_STATUS_SUCCESS --success, otherwise fail
-+ */
-+/*********  format of ifr_data *************/
-+/*    buf_len + Hostcmd_body             */
-+/*    buf_len: 4 bytes                     */
-+/*             the length of the buf which */
-+/*             can be used to return data  */
-+/*             to application            */
-+/*    Hostcmd_body                       */
-+/*******************************************/
-+static int
-+uap_hostcmd_ioctl(struct net_device *dev, struct ifreq *req)
-+{
-+    u32 buf_len;
-+    HostCmd_HEADER head;
-+    uap_private *priv = (uap_private *) netdev_priv(dev);
-+    uap_adapter *Adapter = priv->adapter;
-+    int ret = UAP_STATUS_SUCCESS;
-+    struct sk_buff *skb;
-+
-+    ENTER();
-+
-+    /* Sanity check */
-+    if (req->ifr_data == NULL) {
-+        PRINTM(ERROR, "uap_hostcmd_ioctl() corrupt data\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    if (copy_from_user(&buf_len, req->ifr_data, sizeof(buf_len))) {
-+        PRINTM(ERROR, "Copy from user failed\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    memset(&head, 0, sizeof(HostCmd_HEADER));
-+    /* Get the command size from user space */
-+    if (copy_from_user
-+        (&head, req->ifr_data + sizeof(buf_len), sizeof(HostCmd_HEADER))) {
-+        PRINTM(ERROR, "Copy from user failed\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    head.Size = uap_le16_to_cpu(head.Size);
-+    if (head.Size > MRVDRV_SIZE_OF_CMD_BUFFER) {
-+        PRINTM(ERROR, "CmdSize too big=%d\n", head.Size);
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    PRINTM(CMND, "ioctl: hostcmd=%x, size=%d,buf_len=%d\n", head.Command,
-+           head.Size, buf_len);
-+    skb = dev_alloc_skb(head.Size + INTF_HEADER_LEN);
-+    if (!skb) {
-+        PRINTM(ERROR, "No free skb\n");
-+        LEAVE();
-+        return -ENOMEM;
-+    }
-+
-+    /* Get the command from user space */
-+    if (copy_from_user
-+        (skb->data + INTF_HEADER_LEN, req->ifr_data + sizeof(buf_len),
-+         head.Size)) {
-+        PRINTM(ERROR, "Copy from user failed\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    skb_put(skb, head.Size + INTF_HEADER_LEN);
-+    if (UAP_STATUS_SUCCESS !=
-+        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP)) {
-+        PRINTM(ERROR, "Fail to process cmd\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    if (!Adapter->CmdSize) {
-+        PRINTM(ERROR, "Cmd Size is 0\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    if (Adapter->CmdSize > buf_len) {
-+        PRINTM(ERROR, "buf_len is too small\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    /* Copy to user */
-+    if (copy_to_user
-+        (req->ifr_data + sizeof(buf_len), Adapter->CmdBuf, Adapter->CmdSize)) {
-+        PRINTM(ERROR, "Copy to user failed!\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief uap power mode ioctl handler
-+ *
-+ *  @param dev      A pointer to net_device structure
-+ *  @param req      A pointer to ifreq structure
-+ *  @return         UAP_STATUS_SUCCESS --success, otherwise fail
-+ */
-+static int
-+uap_power_mode_ioctl(struct net_device *dev, struct ifreq *req)
-+{
-+    ps_mgmt pm_cfg;
-+    int ret = UAP_STATUS_SUCCESS;
-+    uap_private *priv = (uap_private *) netdev_priv(dev);
-+    uap_adapter *Adapter = priv->adapter;
-+    struct sk_buff *skb = NULL;
-+    HostCmd_DS_COMMAND *cmd;
-+    u32 CmdSize;
-+    u8 *tlv = NULL;
-+    MrvlIEtypes_sleep_param_t *sleep_tlv = NULL;
-+    MrvlIEtypes_inact_sleep_param_t *inact_tlv = NULL;
-+    u16 tlv_buf_left = 0;
-+    MrvlIEtypesHeader_t *tlvbuf = NULL;
-+    u16 tlv_type = 0;
-+    u16 tlv_len = 0;
-+
-+    ENTER();
-+
-+    /* Sanity check */
-+    if (req->ifr_data == NULL) {
-+        PRINTM(ERROR, "uap_power_mode_ioctl() corrupt data\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+
-+    memset(&pm_cfg, 0, sizeof(ps_mgmt));
-+    if (copy_from_user(&pm_cfg, req->ifr_data, sizeof(ps_mgmt))) {
-+        PRINTM(ERROR, "Copy from user failed\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    PRINTM(CMND,
-+           "ioctl power: flag=0x%x ps_mode=%d ctrl_bitmap=%d min_sleep=%d max_sleep=%d "
-+           "inact_to=%d min_awake=%d max_awake=%d\n", pm_cfg.flags,
-+           (int) pm_cfg.ps_mode, (int) pm_cfg.sleep_param.ctrl_bitmap,
-+           (int) pm_cfg.sleep_param.min_sleep,
-+           (int) pm_cfg.sleep_param.max_sleep,
-+           (int) pm_cfg.inact_param.inactivity_to,
-+           (int) pm_cfg.inact_param.min_awake,
-+           (int) pm_cfg.inact_param.max_awake);
-+
-+    if (pm_cfg.
-+        flags & ~(PS_FLAG_PS_MODE | PS_FLAG_SLEEP_PARAM |
-+                  PS_FLAG_INACT_SLEEP_PARAM)) {
-+        PRINTM(ERROR, "Invalid parameter: flags = 0x%x\n", pm_cfg.flags);
-+        ret = -EINVAL;
-+        goto done;
-+    }
-+    if (pm_cfg.ps_mode > PS_MODE_INACTIVITY) {
-+        PRINTM(ERROR, "Invalid parameter: ps_mode = %d\n", (int) pm_cfg.flags);
-+        ret = -EINVAL;
-+        goto done;
-+    }
-+
-+    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
-+    if (!skb) {
-+        PRINTM(INFO, "No free skb\n");
-+        ret = -ENOMEM;
-+        goto done;
-+    }
-+
-+    CmdSize = S_DS_GEN + sizeof(HostCmd_DS_POWER_MGMT_EXT);
-+
-+    cmd = (HostCmd_DS_COMMAND *) (skb->data + INTF_HEADER_LEN);
-+    cmd->Command = uap_cpu_to_le16(HOST_CMD_POWER_MGMT_EXT);
-+    if (!pm_cfg.flags) {
-+        cmd->params.pm_cfg.action = uap_cpu_to_le16(ACTION_GET);
-+    } else {
-+        cmd->params.pm_cfg.action = uap_cpu_to_le16(ACTION_SET);
-+        cmd->params.pm_cfg.power_mode = uap_cpu_to_le16(pm_cfg.ps_mode);
-+        tlv = (u8 *) & cmd->params.pm_cfg + sizeof(HostCmd_DS_POWER_MGMT_EXT);
-+
-+        if ((pm_cfg.ps_mode) && (pm_cfg.flags & PS_FLAG_SLEEP_PARAM)) {
-+            sleep_tlv = (MrvlIEtypes_sleep_param_t *) tlv;
-+            sleep_tlv->header.Type = uap_cpu_to_le16(TLV_TYPE_AP_SLEEP_PARAM);
-+            sleep_tlv->header.Len =
-+                uap_cpu_to_le16(sizeof(MrvlIEtypes_sleep_param_t) -
-+                                sizeof(MrvlIEtypesHeader_t));
-+            sleep_tlv->ctrl_bitmap =
-+                uap_cpu_to_le32(pm_cfg.sleep_param.ctrl_bitmap);
-+            sleep_tlv->min_sleep =
-+                uap_cpu_to_le32(pm_cfg.sleep_param.min_sleep);
-+            sleep_tlv->max_sleep =
-+                uap_cpu_to_le32(pm_cfg.sleep_param.max_sleep);
-+            CmdSize += sizeof(MrvlIEtypes_sleep_param_t);
-+            tlv += sizeof(MrvlIEtypes_sleep_param_t);
-+        }
-+        if ((pm_cfg.ps_mode == PS_MODE_INACTIVITY) &&
-+            (pm_cfg.flags & PS_FLAG_INACT_SLEEP_PARAM)) {
-+            inact_tlv = (MrvlIEtypes_inact_sleep_param_t *) tlv;
-+            inact_tlv->header.Type =
-+                uap_cpu_to_le16(TLV_TYPE_AP_INACT_SLEEP_PARAM);
-+            inact_tlv->header.Len =
-+                uap_cpu_to_le16(sizeof(MrvlIEtypes_inact_sleep_param_t) -
-+                                sizeof(MrvlIEtypesHeader_t));
-+            inact_tlv->inactivity_to =
-+                uap_cpu_to_le32(pm_cfg.inact_param.inactivity_to);
-+            inact_tlv->min_awake =
-+                uap_cpu_to_le32(pm_cfg.inact_param.min_awake);
-+            inact_tlv->max_awake =
-+                uap_cpu_to_le32(pm_cfg.inact_param.max_awake);
-+            CmdSize += sizeof(MrvlIEtypes_inact_sleep_param_t);
-+            tlv += sizeof(MrvlIEtypes_inact_sleep_param_t);
-+        }
-+    }
-+    cmd->Size = uap_cpu_to_le16(CmdSize);
-+    skb_put(skb, CmdSize + INTF_HEADER_LEN);
-+    if (UAP_STATUS_SUCCESS !=
-+        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP)) {
-+        PRINTM(ERROR, "Fail to process cmd POWER_MODE\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    if (!Adapter->CmdSize) {
-+        PRINTM(ERROR, "Cmd Size is 0\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    cmd = (HostCmd_DS_COMMAND *) Adapter->CmdBuf;
-+    cmd->Result = uap_le16_to_cpu(cmd->Result);
-+    if (cmd->Result != UAP_STATUS_SUCCESS) {
-+        PRINTM(ERROR, "HOST_CMD_APCMD_POWER_MODE fail=%x\n", cmd->Result);
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    if (pm_cfg.flags) {
-+        Adapter->psmode = uap_le16_to_cpu(cmd->params.pm_cfg.power_mode);
-+    } else {
-+        pm_cfg.flags = PS_FLAG_PS_MODE;
-+        pm_cfg.ps_mode = uap_le16_to_cpu(cmd->params.pm_cfg.power_mode);
-+        tlv_buf_left =
-+            cmd->Size - (sizeof(HostCmd_DS_POWER_MGMT_EXT) + S_DS_GEN);
-+        tlvbuf =
-+            (MrvlIEtypesHeader_t *) ((u8 *) & cmd->params.pm_cfg +
-+                                     sizeof(HostCmd_DS_POWER_MGMT_EXT));
-+        while (tlv_buf_left >= sizeof(MrvlIEtypesHeader_t)) {
-+            tlv_type = uap_le16_to_cpu(tlvbuf->Type);
-+            tlv_len = uap_le16_to_cpu(tlvbuf->Len);
-+            switch (tlv_type) {
-+            case TLV_TYPE_AP_SLEEP_PARAM:
-+                sleep_tlv = (MrvlIEtypes_sleep_param_t *) tlvbuf;
-+                pm_cfg.flags |= PS_FLAG_SLEEP_PARAM;
-+                pm_cfg.sleep_param.ctrl_bitmap =
-+                    uap_le32_to_cpu(sleep_tlv->ctrl_bitmap);
-+                pm_cfg.sleep_param.min_sleep =
-+                    uap_le32_to_cpu(sleep_tlv->min_sleep);
-+                pm_cfg.sleep_param.max_sleep =
-+                    uap_le32_to_cpu(sleep_tlv->max_sleep);
-+                break;
-+            case TLV_TYPE_AP_INACT_SLEEP_PARAM:
-+                inact_tlv = (MrvlIEtypes_inact_sleep_param_t *) tlvbuf;
-+                pm_cfg.flags |= PS_FLAG_INACT_SLEEP_PARAM;
-+                pm_cfg.inact_param.inactivity_to =
-+                    uap_le32_to_cpu(inact_tlv->inactivity_to);
-+                pm_cfg.inact_param.min_awake =
-+                    uap_le32_to_cpu(inact_tlv->min_awake);
-+                pm_cfg.inact_param.max_awake =
-+                    uap_le32_to_cpu(inact_tlv->max_awake);
-+                break;
-+            }
-+            tlv_buf_left -= tlv_len + sizeof(MrvlIEtypesHeader_t);
-+            tlvbuf =
-+                (MrvlIEtypesHeader_t *) ((u8 *) tlvbuf + tlv_len +
-+                                         sizeof(MrvlIEtypesHeader_t));
-+        }
-+        /* Copy to user */
-+        if (copy_to_user(req->ifr_data, &pm_cfg, sizeof(ps_mgmt))) {
-+            PRINTM(ERROR, "Copy to user failed!\n");
-+            LEAVE();
-+            return -EFAULT;
-+        }
-+    }
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function send bss_stop command to firmware
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
-+ */
-+static int
-+uap_bss_stop(uap_private * priv)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u32 CmdSize;
-+    HostCmd_DS_GEN *cmd;
-+    uap_adapter *Adapter = priv->adapter;
-+    struct sk_buff *skb;
-+    ENTER();
-+    if (Adapter->HardwareStatus != HWReady) {
-+        PRINTM(ERROR, "uap_bss_stop:Hardware is not ready!\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
-+    if (!skb) {
-+        PRINTM(ERROR, "No free skb\n");
-+        ret = -ENOMEM;
-+        goto done;
-+    }
-+    CmdSize = sizeof(HostCmd_DS_GEN);
-+    cmd = (HostCmd_DS_GEN *) (skb->data + INTF_HEADER_LEN);
-+    cmd->Command = uap_cpu_to_le16(HOST_CMD_APCMD_BSS_STOP);
-+    cmd->Size = uap_cpu_to_le16(CmdSize);
-+    skb_put(skb, CmdSize + INTF_HEADER_LEN);
-+    PRINTM(CMND, "APCMD_BSS_STOP\n");
-+    if (UAP_STATUS_SUCCESS !=
-+        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
-+        PRINTM(ERROR, "Fail to process cmd BSS_STOP\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/********************************************************
-+              Global Functions
-+********************************************************/
-+/**
-+ *  @brief This function send soft_reset command to firmware
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
-+ */
-+int
-+uap_soft_reset(uap_private * priv)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u32 CmdSize;
-+    HostCmd_DS_GEN *cmd;
-+    uap_adapter *Adapter = priv->adapter;
-+    struct sk_buff *skb;
-+    ENTER();
-+    ret = uap_bss_stop(priv);
-+    if (ret != UAP_STATUS_SUCCESS)
-+        goto done;
-+    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
-+    if (!skb) {
-+        PRINTM(ERROR, "No free skb\n");
-+        ret = -ENOMEM;
-+        goto done;
-+    }
-+    CmdSize = sizeof(HostCmd_DS_GEN);
-+    cmd = (HostCmd_DS_GEN *) (skb->data + INTF_HEADER_LEN);
-+    cmd->Command = uap_cpu_to_le16(HOST_CMD_APCMD_SOFT_RESET);
-+    cmd->Size = uap_cpu_to_le16(CmdSize);
-+    skb_put(skb, CmdSize + INTF_HEADER_LEN);
-+    PRINTM(CMND, "APCMD_SOFT_RESET\n");
-+    if (UAP_STATUS_SUCCESS !=
-+        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORSEND)) {
-+        PRINTM(ERROR, "Fail to process cmd SOFT_RESET\n");
-+        ret = -EFAULT;
-+        goto done;
-+    }
-+    Adapter->SurpriseRemoved = TRUE;
-+    /* delay to allow hardware complete reset */
-+    os_sched_timeout(5);
-+    if (priv->MediaConnected == TRUE) {
-+        os_stop_queue(priv);
-+        os_carrier_off(priv);
-+        priv->MediaConnected = FALSE;
-+    }
-+    Adapter->CmdSize = 0;
-+    Adapter->CmdWaitQWoken = TRUE;
-+    wake_up_interruptible(&Adapter->cmdwait_q);
-+    skb_queue_purge(&priv->adapter->tx_queue);
-+    skb_queue_purge(&priv->adapter->cmd_queue);
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function processes received packet and forwards it
-+ *  to kernel/upper layer
-+ *
-+ *  @param priv    A pointer to uap_private
-+ *  @param skb     A pointer to skb which includes the received packet
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+uap_process_rx_packet(uap_private * priv, struct sk_buff *skb)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    RxPD *pRxPD;
-+    ENTER();
-+    priv->adapter->ps_state = PS_STATE_AWAKE;
-+    pRxPD = (RxPD *) skb->data;
-+    endian_convert_RxPD(pRxPD);
-+    DBG_HEXDUMP(DAT_D, "Rx", skb->data, MIN(skb->len, DATA_DUMP_LEN));
-+    skb_pull(skb, pRxPD->RxPktOffset);
-+    priv->stats.rx_packets++;
-+    priv->stats.rx_bytes += skb->len;
-+    os_upload_rx_packet(priv, skb);
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function opens the network device
-+ *
-+ *  @param dev     A pointer to net_device structure
-+ *  @return        UAP_STATUS_SUCCESS
-+ */
-+static int
-+uap_open(struct net_device *dev)
-+{
-+    uap_private *priv = (uap_private *) (uap_private *) netdev_priv(dev);
-+    uap_adapter *Adapter = priv->adapter;
-+    int i = 0;
-+
-+    ENTER();
-+
-+    /* On some systems the device open handler will be called before HW ready. */
-+    /* Use the following flag check and wait function to work around the issue. */
-+    while ((Adapter->HardwareStatus != HWReady) &&
-+           (i < MAX_WAIT_DEVICE_READY_COUNT)) {
-+        i++;
-+        os_sched_timeout(100);
-+    }
-+    if (i >= MAX_WAIT_DEVICE_READY_COUNT) {
-+        PRINTM(FATAL, "HW not ready, uap_open() return failure\n");
-+        LEAVE();
-+        return UAP_STATUS_FAILURE;
-+    }
-+
-+    if (MODULE_GET == 0)
-+        return UAP_STATUS_FAILURE;
-+
-+    priv->open = TRUE;
-+    if (priv->MediaConnected == TRUE) {
-+        os_carrier_on(priv);
-+        os_start_queue(priv);
-+    } else {
-+        os_stop_queue(priv);
-+        os_carrier_off(priv);
-+    }
-+    LEAVE();
-+    return UAP_STATUS_SUCCESS;
-+}
-+
-+/**
-+ *  @brief This function closes the network device
-+ *
-+ *  @param dev     A pointer to net_device structure
-+ *  @return        UAP_STATUS_SUCCESS
-+ */
-+static int
-+uap_close(struct net_device *dev)
-+{
-+    uap_private *priv = (uap_private *) netdev_priv(dev);
-+
-+    ENTER();
-+    skb_queue_purge(&priv->adapter->tx_queue);
-+    os_stop_queue(priv);
-+    os_carrier_off(priv);
-+
-+    MODULE_PUT;
-+    priv->open = FALSE;
-+    LEAVE();
-+    return UAP_STATUS_SUCCESS;
-+}
-+
-+/**
-+ *  @brief This function returns the network statistics
-+ *
-+ *  @param dev     A pointer to uap_private structure
-+ *  @return        A pointer to net_device_stats structure
-+ */
-+static struct net_device_stats *
-+uap_get_stats(struct net_device *dev)
-+{
-+    uap_private *priv = (uap_private *) netdev_priv(dev);
-+
-+    return &priv->stats;
-+}
-+
-+/**
-+ *  @brief This function sets the MAC address to firmware.
-+ *
-+ *  @param dev     A pointer to uap_private structure
-+ *  @param addr    MAC address to set
-+ *  @return        UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+uap_set_mac_address(struct net_device *dev, void *addr)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    uap_private *priv = (uap_private *) netdev_priv(dev);
-+    struct sockaddr *pHwAddr = (struct sockaddr *) addr;
-+    u32 CmdSize;
-+    HostCmd_DS_COMMAND *cmd;
-+    MrvlIEtypes_MacAddr_t *pMacAddrTlv;
-+    uap_adapter *Adapter = priv->adapter;
-+    struct sk_buff *skb;
-+
-+    ENTER();
-+
-+    /* Dump MAC address */
-+    DBG_HEXDUMP(CMD_D, "Original MAC addr", dev->dev_addr, ETH_ALEN);
-+    DBG_HEXDUMP(CMD_D, "New MAC addr", pHwAddr->sa_data, ETH_ALEN);
-+    if (priv->open && (priv->MediaConnected == TRUE)) {
-+        os_carrier_on(priv);
-+        os_start_queue(priv);
-+    }
-+    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
-+    if (!skb) {
-+        PRINTM(ERROR, "No free skb\n");
-+        LEAVE();
-+        return -ENOMEM;
-+    }
-+    CmdSize =
-+        S_DS_GEN + sizeof(HostCmd_SYS_CONFIG) + sizeof(MrvlIEtypes_MacAddr_t);
-+    cmd = (HostCmd_DS_COMMAND *) (skb->data + INTF_HEADER_LEN);
-+    cmd->Command = uap_cpu_to_le16(HOST_CMD_APCMD_SYS_CONFIGURE);
-+    cmd->Size = uap_cpu_to_le16(CmdSize);
-+    cmd->params.sys_config.Action = uap_cpu_to_le16(ACTION_SET);
-+    pMacAddrTlv =
-+        (MrvlIEtypes_MacAddr_t *) ((u8 *) cmd + S_DS_GEN +
-+                                   sizeof(HostCmd_SYS_CONFIG));
-+    pMacAddrTlv->Header.Type = uap_cpu_to_le16(MRVL_AP_MAC_ADDRESS_TLV_ID);
-+    pMacAddrTlv->Header.Len = uap_cpu_to_le16(ETH_ALEN);
-+    memcpy(pMacAddrTlv->ApMacAddr, pHwAddr->sa_data, ETH_ALEN);
-+    skb_put(skb, CmdSize + INTF_HEADER_LEN);
-+    PRINTM(CMND, "set_mac_address\n");
-+    if (UAP_STATUS_SUCCESS !=
-+        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
-+        PRINTM(ERROR, "Fail to set mac address\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    if (!Adapter->CmdSize) {
-+        PRINTM(ERROR, "Cmd Size is 0\n");
-+        LEAVE();
-+        return -EFAULT;
-+    }
-+    cmd = (HostCmd_DS_COMMAND *) Adapter->CmdBuf;
-+    cmd->Result = uap_cpu_to_le16(cmd->Result);
-+    if (cmd->Result != UAP_STATUS_SUCCESS) {
-+        PRINTM(ERROR, "set mac addrress fail,cmd result=%x\n", cmd->Result);
-+        ret = -EFAULT;
-+    } else
-+        memcpy(dev->dev_addr, pHwAddr->sa_data, ETH_ALEN);
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function handles the timeout of packet
-+ *  transmission
-+ *
-+ *  @param dev     A pointer to net_device structure
-+ *  @return        n/a
-+ */
-+static void
-+uap_tx_timeout(struct net_device *dev)
-+{
-+    uap_private *priv = (uap_private *) netdev_priv(dev);
-+
-+    ENTER();
-+
-+    PRINTM(DATA, "Tx timeout\n");
-+    UpdateTransStart(dev);
-+    priv->num_tx_timeout++;
-+    priv->adapter->IntCounter++;
-+    wake_up_interruptible(&priv->MainThread.waitQ);
-+
-+    LEAVE();
-+}
-+
-+/**
-+ *  @brief This function handles packet transmission
-+ *
-+ *  @param skb     A pointer to sk_buff structure
-+ *  @param dev     A pointer to net_device structure
-+ *  @return        UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+uap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
-+{
-+    uap_private *priv = (uap_private *) netdev_priv(dev);
-+    int ret = UAP_STATUS_SUCCESS;
-+
-+    ENTER();
-+    PRINTM(DATA, "Data <= kernel\n");
-+    DBG_HEXDUMP(DAT_D, "Tx", skb->data, MIN(skb->len, DATA_DUMP_LEN));
-+    /* skb sanity check */
-+    if (!skb->len || (skb->len > MRVDRV_MAXIMUM_ETH_PACKET_SIZE)) {
-+        PRINTM(ERROR, "Tx Error: Bad skb length %d : %d\n", skb->len,
-+               MRVDRV_MAXIMUM_ETH_PACKET_SIZE);
-+        priv->stats.tx_dropped++;
-+        kfree(skb);
-+        goto done;
-+    }
-+    skb_queue_tail(&priv->adapter->tx_queue, skb);
-+    wake_up_interruptible(&priv->MainThread.waitQ);
-+    if (skb_queue_len(&priv->adapter->tx_queue) > TX_HIGH_WATERMARK) {
-+        UpdateTransStart(dev);
-+        os_stop_queue(priv);
-+    }
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief ioctl function - entry point
-+ *
-+ *  @param dev      A pointer to net_device structure
-+ *  @param req      A pointer to ifreq structure
-+ *  @param cmd      command
-+ *  @return         UAP_STATUS_SUCCESS--success, otherwise fail
-+ */
-+static int
-+uap_do_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+
-+    ENTER();
-+
-+    PRINTM(CMND, "uap_do_ioctl: ioctl cmd = 0x%x\n", cmd);
-+
-+    switch (cmd) {
-+    case UAPHOSTCMD:
-+        ret = uap_hostcmd_ioctl(dev, req);
-+        break;
-+    case UAP_POWER_MODE:
-+        ret = uap_power_mode_ioctl(dev, req);
-+        break;
-+    default:
-+        ret = -EINVAL;
-+        break;
-+    }
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function handles events generated by firmware
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param payload A pointer to payload buffer
-+ *  @param len           Length of the payload
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+uap_process_event(uap_private * priv, u8 * payload, uint len)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    uap_adapter *Adapter = priv->adapter;
-+    struct sk_buff *skb = NULL;
-+    struct nlmsghdr *nlh = NULL;
-+    struct sock *sk = Adapter->nl_sk;
-+    AP_Event *pEvent;
-+
-+    ENTER();
-+    Adapter->ps_state = PS_STATE_AWAKE;
-+    if (len > NL_MAX_PAYLOAD) {
-+        PRINTM(ERROR, "event size is too big!!! len=%d\n", len);
-+        ret = UAP_STATUS_FAILURE;
-+        goto done;
-+    }
-+    pEvent = (AP_Event *) payload;
-+    PRINTM(CMND, "Event: %d\n", pEvent->EventId);
-+    switch (pEvent->EventId) {
-+    case MICRO_AP_EV_ID_BSS_START:
-+        memcpy(priv->uap_dev.netdev->dev_addr, pEvent->MacAddr, ETH_ALEN);
-+        DBG_HEXDUMP(CMD_D, "BSS MAC addr", priv->uap_dev.netdev->dev_addr,
-+                    ETH_ALEN);
-+        break;
-+    case MICRO_AP_EV_BSS_ACTIVE:
-+        // carrier on
-+        priv->MediaConnected = TRUE;
-+        os_carrier_on(priv);
-+        os_start_queue(priv);
-+        break;
-+    case MICRO_AP_EV_BSS_IDLE:
-+        os_stop_queue(priv);
-+        os_carrier_off(priv);
-+        priv->MediaConnected = FALSE;
-+        break;
-+    case EVENT_PS_AWAKE:
-+        PRINTM(CMND, "UAP: PS_AWAKE\n");
-+        Adapter->ps_state = PS_STATE_AWAKE;
-+        Adapter->WakeupTries = 0;
-+        break;
-+    case EVENT_PS_SLEEP:
-+        PRINTM(CMND, "UAP: PS_SLEEP\n");
-+        Adapter->ps_state = PS_STATE_PRE_SLEEP;
-+        break;
-+    default:
-+        break;
-+    }
-+    if ((pEvent->EventId == EVENT_PS_AWAKE) ||
-+        (pEvent->EventId == EVENT_PS_SLEEP))
-+        goto done;
-+    if (sk) {
-+        /* Allocate skb */
-+        if (!(skb = alloc_skb(NLMSG_SPACE(NL_MAX_PAYLOAD), GFP_ATOMIC))) {
-+            PRINTM(ERROR, "Could not allocate skb for netlink.\n");
-+            ret = UAP_STATUS_FAILURE;
-+            goto done;
-+        }
-+        nlh = (struct nlmsghdr *) skb->data;
-+        nlh->nlmsg_len = NLMSG_SPACE(len);
-+
-+        /* From kernel */
-+        nlh->nlmsg_pid = 0;
-+        nlh->nlmsg_flags = 0;
-+
-+        /* Data */
-+        skb_put(skb, nlh->nlmsg_len);
-+        memcpy(NLMSG_DATA(nlh), payload, len);
-+
-+        /* From Kernel */
-+        NETLINK_CB(skb).portid = 0;
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
-+        /* Multicast message */
-+        NETLINK_CB(skb).dst_pid = 0;
-+#endif
-+
-+        /* Multicast group number */
-+        NETLINK_CB(skb).dst_group = NL_MULTICAST_GROUP;
-+
-+        /* Send message */
-+        netlink_broadcast(sk, skb, 0, NL_MULTICAST_GROUP, GFP_KERNEL);
-+
-+        ret = UAP_STATUS_SUCCESS;
-+    } else {
-+        PRINTM(ERROR, "Could not send event through NETLINK. Link down.\n");
-+        ret = UAP_STATUS_FAILURE;
-+    }
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function handles the interrupt. it will change PS
-+ *  state if applicable. it will wake up main_thread to handle
-+ *  the interrupt event as well.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return        n/a
-+ */
-+void
-+uap_interrupt(uap_private * priv)
-+{
-+    ENTER();
-+    priv->adapter->IntCounter++;
-+    priv->adapter->WakeupTries = 0;
-+    PRINTM(INFO, "*\n");
-+    wake_up_interruptible(&priv->MainThread.waitQ);
-+
-+    LEAVE();
-+
-+}
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)
-+/** Network device handlers */
-+static const struct net_device_ops uap_netdev_ops = {
-+    .ndo_open = uap_open,
-+    .ndo_start_xmit = uap_hard_start_xmit,
-+    .ndo_stop = uap_close,
-+    .ndo_do_ioctl = uap_do_ioctl,
-+    .ndo_set_mac_address = uap_set_mac_address,
-+    .ndo_tx_timeout = uap_tx_timeout,
-+    .ndo_get_stats = uap_get_stats,
-+};
-+#endif
-+
-+/**
-+ * @brief This function adds the card. it will probe the
-+ * card, allocate the uap_priv and initialize the device.
-+ *
-+ *  @param card    A pointer to card
-+ *  @return        A pointer to uap_private structure
-+ */
-+uap_private *
-+uap_add_card(void *card)
-+{
-+    struct net_device *dev = NULL;
-+    uap_private *priv = NULL;
-+
-+    ENTER();
-+
-+    if (OS_ACQ_SEMAPHORE_BLOCK(&AddRemoveCardSem))
-+        goto exit_sem_err;
-+
-+    /* Allocate an Ethernet device */
-+    if (!(dev = alloc_etherdev(sizeof(uap_private)))) {
-+        PRINTM(FATAL, "Init ethernet device failed!\n");
-+        goto error;
-+    }
-+    priv = (uap_private *) netdev_priv(dev);
-+
-+    /* Allocate name */
-+    if (dev_alloc_name(dev, "uap%d") < 0) {
-+        PRINTM(ERROR, "Could not allocate device name!\n");
-+        goto error;
-+    }
-+
-+    /* Allocate buffer for uap_adapter */
-+    if (!(priv->adapter = kmalloc(sizeof(uap_adapter), GFP_KERNEL))) {
-+        PRINTM(FATAL, "Allocate buffer for uap_adapter failed!\n");
-+        goto error;
-+    }
-+    memset(priv->adapter, 0, sizeof(uap_adapter));
-+
-+    priv->uap_dev.netdev = dev;
-+    priv->uap_dev.card = card;
-+    priv->MediaConnected = FALSE;
-+    uappriv = priv;
-+    ((struct sdio_mmc_card *) card)->priv = priv;
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
-+    SET_MODULE_OWNER(dev);
-+#endif
-+
-+    /* Setup the OS Interface to our functions */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
-+    dev->open = uap_open;
-+    dev->stop = uap_close;
-+    dev->hard_start_xmit = uap_hard_start_xmit;
-+    dev->tx_timeout = uap_tx_timeout;
-+    dev->get_stats = uap_get_stats;
-+    dev->do_ioctl = uap_do_ioctl;
-+    dev->set_mac_address = uap_set_mac_address;
-+    dev->set_multicast_list = uap_set_multicast_list;
-+#else
-+    dev->netdev_ops = &uap_netdev_ops;
-+#endif
-+    dev->watchdog_timeo = MRVDRV_DEFAULT_WATCHDOG_TIMEOUT;
-+    dev->hard_header_len += sizeof(TxPD) + INTF_HEADER_LEN;
-+    dev->hard_header_len += HEADER_ALIGNMENT;
-+#define NETIF_F_DYNALLOC 16
-+    dev->features |= NETIF_F_DYNALLOC;
-+    dev->flags |= IFF_BROADCAST | IFF_MULTICAST;
-+
-+    /* Init SW */
-+    if (uap_init_sw(priv)) {
-+        PRINTM(FATAL, "Software Init Failed\n");
-+        goto error;
-+    }
-+
-+    PRINTM(INFO, "Starting kthread...\n");
-+    priv->MainThread.priv = priv;
-+    spin_lock_init(&priv->driver_lock);
-+    uap_create_thread(uap_service_main_thread, &priv->MainThread,
-+                      "uap_main_service");
-+    while (priv->MainThread.pid == 0) {
-+        os_sched_timeout(2);
-+    }
-+
-+    /* Register the device */
-+    if (sbi_register_dev(priv) < 0) {
-+        PRINTM(FATAL, "Failed to register uap device!\n");
-+        goto err_registerdev;
-+    }
-+#ifdef FW_DNLD_NEEDED
-+    SET_NETDEV_DEV(dev, priv->hotplug_device);
-+#endif
-+
-+    /* Init FW and HW */
-+    if (uap_init_fw(priv)) {
-+        PRINTM(FATAL, "Firmware Init Failed\n");
-+        goto err_init_fw;
-+    }
-+
-+    priv->uap_dev.cmd_sent = FALSE;
-+    priv->uap_dev.data_sent = FALSE;
-+
-+    /* Get mac address from firmware */
-+    if (uap_get_mac_address(priv)) {
-+        PRINTM(FATAL, "Fail to get mac address\n");
-+        goto err_init_fw;
-+    }
-+    /* Register network device */
-+    if (register_netdev(dev)) {
-+        printk(KERN_ERR "Cannot register network device!\n");
-+        goto err_init_fw;
-+    }
-+#ifdef CONFIG_PROC_FS
-+    uap_proc_entry(priv, dev);
-+    uap_debug_entry(priv, dev);
-+#endif /* CPNFIG_PROC_FS */
-+    OS_REL_SEMAPHORE(&AddRemoveCardSem);
-+
-+    LEAVE();
-+    return priv;
-+  err_init_fw:
-+    sbi_unregister_dev(priv);
-+  err_registerdev:
-+    ((struct sdio_mmc_card *) card)->priv = NULL;
-+    /* Stop the thread servicing the interrupts */
-+    priv->adapter->SurpriseRemoved = TRUE;
-+    wake_up_interruptible(&priv->MainThread.waitQ);
-+    while (priv->MainThread.pid) {
-+        os_sched_timeout(1);
-+    }
-+  error:
-+    if (dev) {
-+        if (dev->reg_state == NETREG_REGISTERED)
-+            unregister_netdev(dev);
-+        if (priv->adapter)
-+            uap_free_adapter(priv);
-+        free_netdev(dev);
-+        uappriv = NULL;
-+    }
-+    OS_REL_SEMAPHORE(&AddRemoveCardSem);
-+  exit_sem_err:
-+    LEAVE();
-+    return NULL;
-+}
-+
-+/**
-+ *  @brief This function removes the card.
-+ *
-+ *  @param card    A pointer to card
-+ *  @return        UAP_STATUS_SUCCESS
-+ */
-+int
-+uap_remove_card(void *card)
-+{
-+    uap_private *priv = uappriv;
-+    uap_adapter *Adapter;
-+    struct net_device *dev;
-+
-+    ENTER();
-+
-+    if (OS_ACQ_SEMAPHORE_BLOCK(&AddRemoveCardSem))
-+        goto exit_sem_err;
-+
-+    if (!priv || !(Adapter = priv->adapter)) {
-+        goto exit_remove;
-+    }
-+    Adapter->SurpriseRemoved = TRUE;
-+    if (Adapter->cmd_pending == TRUE) {
-+        /* Wake up cmd Q */
-+        Adapter->CmdWaitQWoken = TRUE;
-+        wake_up_interruptible(&Adapter->cmdwait_q);
-+    }
-+    dev = priv->uap_dev.netdev;
-+    if (priv->MediaConnected == TRUE) {
-+        os_stop_queue(priv);
-+        os_carrier_off(priv);
-+        priv->MediaConnected = FALSE;
-+    }
-+    Adapter->CmdSize = 0;
-+    Adapter->CmdWaitQWoken = TRUE;
-+    wake_up_interruptible(&Adapter->cmdwait_q);
-+    skb_queue_purge(&priv->adapter->tx_queue);
-+    skb_queue_purge(&priv->adapter->cmd_queue);
-+
-+    /* Disable interrupts on the card */
-+    sbi_disable_host_int(priv);
-+    PRINTM(INFO, "netdev_finish_unregister: %s%s.\n", dev->name,
-+           (dev->features & NETIF_F_DYNALLOC) ? "" : ", old style");
-+    unregister_netdev(dev);
-+    PRINTM(INFO, "Unregister finish\n");
-+    wake_up_interruptible(&priv->MainThread.waitQ);
-+    while (priv->MainThread.pid) {
-+        os_sched_timeout(1);
-+    }
-+
-+    if ((Adapter->nl_sk) && ((Adapter->nl_sk)->sk_socket)) {
-+        sock_release((Adapter->nl_sk)->sk_socket);
-+        Adapter->nl_sk = NULL;
-+    }
-+#ifdef CONFIG_PROC_FS
-+    uap_debug_remove(priv);
-+    uap_proc_remove(priv);
-+#endif
-+    sbi_unregister_dev(priv);
-+    PRINTM(INFO, "Free Adapter\n");
-+    uap_free_adapter(priv);
-+    priv->uap_dev.netdev = NULL;
-+    free_netdev(dev);
-+    uappriv = NULL;
-+
-+  exit_remove:
-+    OS_REL_SEMAPHORE(&AddRemoveCardSem);
-+  exit_sem_err:
-+    LEAVE();
-+    return UAP_STATUS_SUCCESS;
-+}
-+
-+/**
-+ *  @brief This function initializes module.
-+ *
-+ *  @return    UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int __init
-+uap_init_module(void)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    ENTER();
-+
-+    OS_INIT_SEMAPHORE(&AddRemoveCardSem);
-+    ret = sbi_register();
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function cleans module
-+ *
-+ *  @return        n/a
-+ */
-+static void __exit
-+uap_cleanup_module(void)
-+{
-+    ENTER();
-+
-+    if (OS_ACQ_SEMAPHORE_BLOCK(&AddRemoveCardSem))
-+        goto exit_sem_err;
-+
-+    if ((uappriv) && (uappriv->adapter)) {
-+        uap_func_shutdown(uappriv);
-+    }
-+    OS_REL_SEMAPHORE(&AddRemoveCardSem);
-+  exit_sem_err:
-+    sbi_unregister();
-+    LEAVE();
-+}
-+
-+module_init(uap_init_module);
-+module_exit(uap_cleanup_module);
-+module_param(helper_name, charp, 0);
-+MODULE_PARM_DESC(helper_name, "Helper name");
-+module_param(fw_name, charp, 0);
-+MODULE_PARM_DESC(fw_name, "Firmware name");
-+
-+MODULE_DESCRIPTION("M-UAP Driver");
-+MODULE_AUTHOR("Marvell International Ltd.");
-+MODULE_VERSION(DRIVER_VERSION);
-+MODULE_LICENSE("GPL");
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_proc.c backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_proc.c
---- backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_proc.c        1970-01-01 01:00:00.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_proc.c    2014-12-29 20:37:43.952431125 +0100
-@@ -0,0 +1,258 @@
-+/** @file uap_proc.c
-+  * @brief This file contains functions for proc file.
-+  *
-+  * Copyright (C) 2008-2009, Marvell International Ltd.
-+  *
-+  * This software file (the "File") is distributed by Marvell International
-+  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
-+  * (the "License").  You may use, redistribute and/or modify this File in
-+  * accordance with the terms and conditions of the License, a copy of which
-+  * is available along with the File in the gpl.txt file or by writing to
-+  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+  * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
-+  *
-+  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
-+  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
-+  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
-+  * this warranty disclaimer.
-+  *
-+  */
-+#ifdef CONFIG_PROC_FS
-+#include <linux/proc_fs.h>
-+#include <linux/seq_file.h>
-+#include "uap_headers.h"
-+
-+/** /proc directory root */
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
-+#define PROC_DIR NULL
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
-+#define PROC_DIR &proc_root
-+#else
-+#define PROC_DIR proc_net
-+#endif
-+
-+/********************************************************
-+              Local Variables
-+********************************************************/
-+
-+/********************************************************
-+              Global Variables
-+********************************************************/
-+
-+/********************************************************
-+              Local Functions
-+********************************************************/
-+
-+static int uap_info_proc_show(struct seq_file *s, void *data) {
-+    int i;
-+    struct net_device *netdev = (struct net_device*)s->private;
-+    struct netdev_hw_addr *ha;
-+    uap_private *priv = (uap_private *) netdev_priv(netdev);
-+
-+    seq_printf(s, "driver_name = " "\"uap\"\n");
-+    seq_printf(s, "driver_version = %s-(FP%s)", DRIVER_VERSION, FPNUM);
-+    seq_printf(s, "\nInterfaceName=\"%s\"\n", netdev->name);
-+
-+    seq_printf(s, "State=\"%s\"\n",
-+                 ((priv->MediaConnected ==
-+                   FALSE) ? "Disconnected" : "Connected"));
-+    seq_printf(s, "MACAddress=\"%02x:%02x:%02x:%02x:%02x:%02x\"\n",
-+                 netdev->dev_addr[0], netdev->dev_addr[1], netdev->dev_addr[2],
-+                 netdev->dev_addr[3], netdev->dev_addr[4], netdev->dev_addr[5]);
-+    i = 0;
-+    netdev_for_each_mc_addr(ha, netdev) {
-+        ++i;
-+    }
-+    seq_printf(s, "MCCount=\"%d\"\n", i);
-+
-+    /*
-+     * Put out the multicast list
-+     */
-+    i = 0;
-+    netdev_for_each_mc_addr(ha, netdev) {
-+        seq_printf(s,
-+                     "MCAddr[%d]=\"%02x:%02x:%02x:%02x:%02x:%02x\"\n",
-+                     i++,
-+                     ha->addr[0], ha->addr[1],
-+                     ha->addr[2], ha->addr[3],
-+                     ha->addr[4], ha->addr[5]);
-+    }
-+
-+    seq_printf(s, "num_tx_bytes = %lu\n", priv->stats.tx_bytes);
-+    seq_printf(s, "num_rx_bytes = %lu\n", priv->stats.rx_bytes);
-+    seq_printf(s, "num_tx_pkts = %lu\n", priv->stats.tx_packets);
-+    seq_printf(s, "num_rx_pkts = %lu\n", priv->stats.rx_packets);
-+    seq_printf(s, "num_tx_pkts_dropped = %lu\n", priv->stats.tx_dropped);
-+    seq_printf(s, "num_rx_pkts_dropped = %lu\n", priv->stats.rx_dropped);
-+    seq_printf(s, "num_tx_pkts_err = %lu\n", priv->stats.tx_errors);
-+    seq_printf(s, "num_rx_pkts_err = %lu\n", priv->stats.rx_errors);
-+    seq_printf(s, "num_tx_timeout = %u\n", priv->num_tx_timeout);
-+    seq_printf(s, "carrier %s\n",
-+                 ((netif_carrier_ok(priv->uap_dev.netdev)) ? "on" : "off"));
-+    seq_printf(s, "tx queue %s\n",
-+                 ((netif_queue_stopped(priv->uap_dev.netdev)) ? "stopped" :
-+                  "started"));
-+
-+    return 0;
-+}
-+
-+static int uap_info_proc_open(struct inode *inode, struct file *file) {
-+      return single_open(file, uap_info_proc_show, PDE_DATA(inode));
-+}
-+
-+static int uap_hwstatus_proc_show(struct seq_file *s, void *data) {
-+    struct net_device *netdev = (struct net_device*)s->private;
-+    uap_private *priv = (uap_private *) netdev_priv(netdev);
-+
-+    MODULE_GET;
-+    seq_printf(s, "%d\n", priv->adapter->HardwareStatus);
-+    MODULE_PUT;
-+
-+    return 0;
-+}
-+
-+static int uap_hwstatus_proc_open(struct inode *inode, struct file *file) {
-+      return single_open(file, uap_hwstatus_proc_show, PDE_DATA(inode));
-+}
-+
-+static ssize_t uap_hwstatus_proc_write(struct file *file, const char __user *buffer, size_t count, loff_t *data) {
-+      struct net_device *netdev = (struct net_device *)PDE_DATA(file_inode(file));
-+      uap_private *priv = (uap_private *) netdev_priv(netdev);
-+
-+      int hwstatus;
-+      char value[10];
-+
-+      if (count > sizeof(value))
-+              return count;
-+
-+      if (copy_from_user(&value, buffer, count))
-+              return -EFAULT;
-+
-+      hwstatus = string_to_number(value);
-+      switch (hwstatus) {
-+      case HWReset:
-+              PRINTM(MSG, "reset hw\n");
-+              uap_soft_reset(priv);
-+              priv->adapter->HardwareStatus = HWReset;
-+              break;
-+      default:
-+              break;
-+      }
-+
-+      MODULE_PUT;
-+      return count;
-+}
-+
-+static const struct file_operations uap_info_proc_fops = {
-+      .owner   = THIS_MODULE,
-+      .open    = uap_info_proc_open,
-+      .read    = seq_read,
-+      .llseek  = seq_lseek,
-+      .release = single_release,
-+};
-+
-+static const struct file_operations uap_hwstatus_proc_fops = {
-+      .owner   = THIS_MODULE,
-+      .open    = uap_hwstatus_proc_open,
-+      .read    = seq_read,
-+      .llseek  = seq_lseek,
-+      .release = single_release,
-+      .write   = uap_hwstatus_proc_write,
-+};
-+
-+/********************************************************
-+              Global Functions
-+********************************************************/
-+/**
-+ *  @brief create uap proc file
-+ *
-+ *  @param priv          pointer uap_private
-+ *  @param dev     pointer net_device
-+ *  @return      N/A
-+ */
-+void
-+uap_proc_entry(uap_private * priv, struct net_device *dev)
-+{
-+    PRINTM(INFO, "Creating Proc Interface\n");
-+    /* Check if uap directory already exists */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
-+    struct proc_dir_entry *r = PROC_DIR;
-+
-+    for (r = r->subdir; r; r = r->next) {
-+        if (r->namelen && !strcmp("uap", r->name)) {
-+            /* Directory exists */
-+            PRINTM(WARN, "proc directory already exists!\n");
-+            priv->proc_uap = r;
-+            break;
-+        }
-+    }
-+#endif
-+    if (!priv->proc_uap) {
-+        priv->proc_uap = proc_mkdir("uap", PROC_DIR);
-+        if (!priv->proc_uap)
-+            return;
-+    }
-+    priv->proc_entry = proc_mkdir(dev->name, priv->proc_uap);
-+
-+    if (priv->proc_entry) {
-+      proc_create_data("info", 0644, priv->proc_entry, &uap_info_proc_fops, dev);
-+      proc_create_data("hwinfo", 0644, priv->proc_entry, &uap_hwstatus_proc_fops, dev);
-+    }
-+}
-+
-+/**
-+ *  @brief remove proc file
-+ *
-+ *  @param priv          pointer uap_private
-+ *  @return      N/A
-+ */
-+void
-+uap_proc_remove(uap_private * priv)
-+{
-+    if (priv->proc_uap) {
-+        if (priv->proc_entry) {
-+            remove_proc_entry("info", priv->proc_entry);
-+            remove_proc_entry("hwstatus", priv->proc_entry);
-+        }
-+        remove_proc_entry(priv->uap_dev.netdev->name, priv->proc_uap);
-+    }
-+}
-+
-+/**
-+ *  @brief convert string to number
-+ *
-+ *  @param s     pointer to numbered string
-+ *  @return      converted number from string s
-+ */
-+int
-+string_to_number(char *s)
-+{
-+    int r = 0;
-+    int base = 0;
-+    int pn = 1;
-+
-+    if (strncmp(s, "-", 1) == 0) {
-+        pn = -1;
-+        s++;
-+    }
-+    if ((strncmp(s, "0x", 2) == 0) || (strncmp(s, "0X", 2) == 0)) {
-+        base = 16;
-+        s += 2;
-+    } else
-+        base = 10;
-+
-+    for (s = s; *s != 0; s++) {
-+        if ((*s >= '0') && (*s <= '9'))
-+            r = (r * base) + (*s - '0');
-+        else if ((*s >= 'A') && (*s <= 'F'))
-+            r = (r * base) + (*s - 'A' + 10);
-+        else if ((*s >= 'a') && (*s <= 'f'))
-+            r = (r * base) + (*s - 'a' + 10);
-+        else
-+            break;
-+    }
-+
-+    return (r * pn);
-+}
-+
-+#endif
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c
---- backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c    1970-01-01 01:00:00.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c        2014-12-29 20:37:43.955764567 +0100
-@@ -0,0 +1,1428 @@
-+/** @file uap_sdio_mmc.c
-+ *  @brief This file contains SDIO IF (interface) module
-+ *  related functions.
-+ *
-+ * Copyright (C) 2007-2009, Marvell International Ltd.
-+ *
-+ * This software file (the "File") is distributed by Marvell International
-+ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
-+ * (the "License").  You may use, redistribute and/or modify this File in
-+ * accordance with the terms and conditions of the License, a copy of which
-+ * is available along with the File in the gpl.txt file or by writing to
-+ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
-+ *
-+ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
-+ * this warranty disclaimer.
-+ *
-+ */
-+/****************************************************
-+Change log:
-+****************************************************/
-+
-+#include      "uap_sdio_mmc.h"
-+
-+#include <linux/firmware.h>
-+
-+/** define SDIO block size */
-+/* We support up to 480-byte block size due to FW buffer limitation. */
-+#define SD_BLOCK_SIZE         256
-+
-+/** define allocated buffer size */
-+#define ALLOC_BUF_SIZE                (((MAX(MRVDRV_ETH_RX_PACKET_BUFFER_SIZE, \
-+                                      MRVDRV_SIZE_OF_CMD_BUFFER) + INTF_HEADER_LEN \
-+                                      + SD_BLOCK_SIZE - 1) / SD_BLOCK_SIZE) * SD_BLOCK_SIZE)
-+
-+/** Max retry number of CMD53 write */
-+#define MAX_WRITE_IOMEM_RETRY 2
-+
-+/********************************************************
-+              Local Variables
-+********************************************************/
-+
-+/** SDIO Rx unit */
-+static u8 sdio_rx_unit = 0;
-+
-+/**Interrupt status */
-+static u8 sd_ireg = 0;
-+/********************************************************
-+              Global Variables
-+********************************************************/
-+extern u8 *helper_name;
-+extern u8 *fw_name;
-+/** Default helper name */
-+#define DEFAULT_HELPER_NAME "mrvl/helper_sd.bin"
-+/** Default firmware name */
-+#define DEFAULT_FW_NAME "mrvl/sd8688_ap.bin"
-+
-+/********************************************************
-+              Local Functions
-+********************************************************/
-+/**
-+ *  @brief This function reads the IO register.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param reg           register to be read
-+ *  @param dat           A pointer to variable that keeps returned value
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+sbi_read_ioreg(uap_private * priv, u32 reg, u8 * dat)
-+{
-+    struct sdio_mmc_card *card;
-+    int ret = UAP_STATUS_FAILURE;
-+
-+    ENTER();
-+
-+    card = priv->uap_dev.card;
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "sbi_read_ioreg(): card or function is NULL!\n");
-+        goto done;
-+    }
-+
-+    *dat = sdio_readb(card->func, reg, &ret);
-+    if (ret) {
-+        PRINTM(ERROR, "sbi_read_ioreg(): sdio_readb failed! ret=%d\n", ret);
-+        goto done;
-+    }
-+
-+    PRINTM(INFO, "sbi_read_ioreg() priv=%p func=%d reg=%#x dat=%#x\n", priv,
-+           card->func->num, reg, *dat);
-+
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function writes the IO register.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param reg           register to be written
-+ *  @param dat           the value to be written
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+sbi_write_ioreg(uap_private * priv, u32 reg, u8 dat)
-+{
-+    struct sdio_mmc_card *card;
-+    int ret = UAP_STATUS_FAILURE;
-+
-+    ENTER();
-+
-+    card = priv->uap_dev.card;
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "sbi_write_ioreg(): card or function is NULL!\n");
-+        goto done;
-+    }
-+
-+    PRINTM(INFO, "sbi_write_ioreg() priv=%p func=%d reg=%#x dat=%#x\n", priv,
-+           card->func->num, reg, dat);
-+
-+    sdio_writeb(card->func, dat, reg, &ret);
-+    if (ret) {
-+        PRINTM(ERROR, "sbi_write_ioreg(): sdio_readb failed! ret=%d\n", ret);
-+        goto done;
-+    }
-+
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function get rx_unit value
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+sd_get_rx_unit(uap_private * priv)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u8 reg;
-+
-+    ENTER();
-+
-+    ret = sbi_read_ioreg(priv, CARD_RX_UNIT_REG, &reg);
-+    if (ret == UAP_STATUS_SUCCESS)
-+        sdio_rx_unit = reg;
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function reads rx length
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param dat           A pointer to keep returned data
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+sd_read_rx_len(uap_private * priv, u16 * dat)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u8 reg;
-+
-+    ENTER();
-+
-+    ret = sbi_read_ioreg(priv, CARD_RX_LEN_REG, &reg);
-+    if (ret == UAP_STATUS_SUCCESS)
-+        *dat = (u16) reg << sdio_rx_unit;
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function reads fw status registers
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param dat           A pointer to keep returned data
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+sd_read_firmware_status(uap_private * priv, u16 * dat)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u8 fws0;
-+    u8 fws1;
-+
-+    ENTER();
-+
-+    ret = sbi_read_ioreg(priv, CARD_FW_STATUS0_REG, &fws0);
-+    if (ret < 0) {
-+        LEAVE();
-+        return UAP_STATUS_FAILURE;
-+    }
-+
-+    ret = sbi_read_ioreg(priv, CARD_FW_STATUS1_REG, &fws1);
-+    if (ret < 0) {
-+        LEAVE();
-+        return UAP_STATUS_FAILURE;
-+    }
-+
-+    *dat = (((u16) fws1) << 8) | fws0;
-+
-+    LEAVE();
-+    return UAP_STATUS_SUCCESS;
-+}
-+
-+/**
-+ *  @brief This function polls the card status register.
-+ *
-+ *  @param priv       A pointer to uap_private structure
-+ *  @param bits       the bit mask
-+ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+mv_sdio_poll_card_status(uap_private * priv, u8 bits)
-+{
-+    int tries;
-+    u8 cs;
-+
-+    ENTER();
-+
-+    for (tries = 0; tries < MAX_POLL_TRIES; tries++) {
-+        if (sbi_read_ioreg(priv, CARD_STATUS_REG, &cs) < 0)
-+            break;
-+        else if ((cs & bits) == bits) {
-+            LEAVE();
-+            return UAP_STATUS_SUCCESS;
-+        }
-+        udelay(10);
-+    }
-+
-+    PRINTM(WARN, "mv_sdio_poll_card_status failed, tries = %d\n", tries);
-+
-+    LEAVE();
-+    return UAP_STATUS_FAILURE;
-+}
-+
-+/**
-+ *  @brief This function set the sdio bus width.
-+ *
-+ *  @param priv       A pointer to uap_private structure
-+ *  @param mode       1--1 bit mode, 4--4 bit mode
-+ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+#if 0
-+static int
-+sdio_set_bus_width(uap_private * priv, u8 mode)
-+{
-+    ENTER();
-+    LEAVE();
-+    return UAP_STATUS_SUCCESS;
-+}
-+#endif
-+
-+/**
-+ *  @brief This function reads data from the card.
-+ *
-+ *  @param priv       A pointer to uap_private structure
-+ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+sd_card_to_host(uap_private * priv)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u16 buf_len = 0;
-+    int buf_block_len;
-+    int blksz;
-+    struct sk_buff *skb = NULL;
-+    u16 type;
-+    u8 *payload = NULL;
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+
-+    ENTER();
-+
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "card or function is NULL!\n");
-+        ret = UAP_STATUS_FAILURE;
-+        goto exit;
-+    }
-+
-+    /* Read the length of data to be transferred */
-+    ret = sd_read_rx_len(priv, &buf_len);
-+    if (ret < 0) {
-+        PRINTM(ERROR, "card_to_host, read scratch reg failed\n");
-+        ret = UAP_STATUS_FAILURE;
-+        goto exit;
-+    }
-+
-+    /* Allocate buffer */
-+    blksz = SD_BLOCK_SIZE;
-+    buf_block_len = (buf_len + blksz - 1) / blksz;
-+    if (buf_len <= INTF_HEADER_LEN || (buf_block_len * blksz) > ALLOC_BUF_SIZE) {
-+        PRINTM(ERROR, "card_to_host, invalid packet length: %d\n", buf_len);
-+        ret = UAP_STATUS_FAILURE;
-+        goto exit;
-+    }
-+#ifdef PXA3XX_DMA_ALIGN
-+    skb = dev_alloc_skb(buf_block_len * blksz + PXA3XX_DMA_ALIGNMENT);
-+#else
-+    skb = dev_alloc_skb(buf_block_len * blksz);
-+#endif
-+    if (skb == NULL) {
-+        PRINTM(WARN, "No free skb\n");
-+        goto exit;
-+    }
-+#ifdef PXA3XX_DMA_ALIGN
-+    if ((u32) skb->data & (PXA3XX_DMA_ALIGNMENT - 1)) {
-+        skb_put(skb, (u32) skb->data & (PXA3XX_DMA_ALIGNMENT - 1));
-+        skb_pull(skb, (u32) skb->data & (PXA3XX_DMA_ALIGNMENT - 1));
-+    }
-+#endif /* PXA3XX_DMA_ALIGN */
-+
-+    payload = skb->tail;
-+    ret = sdio_readsb(card->func, payload, priv->uap_dev.ioport,
-+                      buf_block_len * blksz);
-+    if (ret < 0) {
-+        PRINTM(ERROR, "card_to_host, read iomem failed: %d\n", ret);
-+        ret = UAP_STATUS_FAILURE;
-+        goto exit;
-+    }
-+    HEXDUMP("SDIO Blk Rd", payload, blksz * buf_block_len);
-+    /*
-+     * This is SDIO specific header
-+     *  u16 length,
-+     *  u16 type (MV_TYPE_DAT = 0, MV_TYPE_CMD = 1, MV_TYPE_EVENT = 3)
-+     */
-+    buf_len = uap_le16_to_cpu(*(u16 *) & payload[0]);
-+    type = uap_le16_to_cpu(*(u16 *) & payload[2]);
-+    switch (type) {
-+    case MV_TYPE_EVENT:
-+        skb_put(skb, buf_len);
-+        skb_pull(skb, INTF_HEADER_LEN);
-+        uap_process_event(priv, skb->data, skb->len);
-+        kfree_skb(skb);
-+        skb = NULL;
-+        break;
-+    case MV_TYPE_CMD:
-+        skb_put(skb, buf_len);
-+        skb_pull(skb, INTF_HEADER_LEN);
-+        priv->adapter->cmd_pending = FALSE;
-+        if (priv->adapter->cmd_wait_option ==
-+            HostCmd_OPTION_WAITFORRSP_SLEEPCONFIRM) {
-+            priv->adapter->cmd_wait_option = FALSE;
-+            uap_process_sleep_confirm_resp(priv, skb->data, skb->len);
-+        } else if (priv->adapter->cmd_wait_option) {
-+            memcpy(priv->adapter->CmdBuf, skb->data, skb->len);
-+            priv->adapter->CmdSize = skb->len;
-+            priv->adapter->cmd_wait_option = FALSE;
-+            priv->adapter->CmdWaitQWoken = TRUE;
-+            wake_up_interruptible(&priv->adapter->cmdwait_q);
-+        }
-+        kfree_skb(skb);
-+        skb = NULL;
-+        break;
-+    case MV_TYPE_DAT:
-+        skb_put(skb, buf_len);
-+        skb_pull(skb, INTF_HEADER_LEN);
-+        uap_process_rx_packet(priv, skb);
-+        break;
-+    default:
-+        priv->stats.rx_errors++;
-+        priv->stats.rx_dropped++;
-+        /* Driver specified event and command resp should be handle here */
-+        PRINTM(INFO, "Unknown PKT type:%d\n", type);
-+        kfree_skb(skb);
-+        skb = NULL;
-+        break;
-+    }
-+  exit:
-+    if (ret) {
-+        if (skb)
-+            kfree_skb(skb);
-+    }
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function enables the host interrupts mask
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param mask          the interrupt mask
-+ *  @return      UAP_STATUS_SUCCESS
-+ */
-+static int
-+enable_host_int_mask(uap_private * priv, u8 mask)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+
-+    ENTER();
-+
-+    /* Simply write the mask to the register */
-+    ret = sbi_write_ioreg(priv, HOST_INT_MASK_REG, mask);
-+
-+    if (ret) {
-+        PRINTM(WARN, "Unable to enable the host interrupt!\n");
-+        ret = UAP_STATUS_FAILURE;
-+    }
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**  @brief This function disables the host interrupts mask.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param mask          the interrupt mask
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+disable_host_int_mask(uap_private * priv, u8 mask)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u8 host_int_mask;
-+
-+    ENTER();
-+
-+    /* Read back the host_int_mask register */
-+    ret = sbi_read_ioreg(priv, HOST_INT_MASK_REG, &host_int_mask);
-+    if (ret) {
-+        ret = UAP_STATUS_FAILURE;
-+        goto done;
-+    }
-+
-+    /* Update with the mask and write back to the register */
-+    host_int_mask &= ~mask;
-+    ret = sbi_write_ioreg(priv, HOST_INT_MASK_REG, host_int_mask);
-+    if (ret < 0) {
-+        PRINTM(WARN, "Unable to diable the host interrupt!\n");
-+        ret = UAP_STATUS_FAILURE;
-+        goto done;
-+    }
-+
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/********************************************************
-+              Global Functions
-+********************************************************/
-+
-+/**
-+ *  @brief This function handles the interrupt.
-+ *
-+ *  @param func          A pointer to sdio_func structure.
-+ *  @return      n/a
-+ */
-+static void
-+sbi_interrupt(struct sdio_func *func)
-+{
-+    struct sdio_mmc_card *card;
-+    uap_private *priv;
-+    u8 ireg = 0;
-+    int ret = UAP_STATUS_SUCCESS;
-+
-+    ENTER();
-+
-+    card = sdio_get_drvdata(func);
-+    if (!card || !card->priv) {
-+        PRINTM(MSG, "%s: sbi_interrupt(%p) card or priv is NULL, card=%p\n",
-+               __FUNCTION__, func, card);
-+        LEAVE();
-+        return;
-+    }
-+    priv = card->priv;
-+#ifdef FW_WAKEUP_TIME
-+    if ((priv->adapter->wt_pwrup_sending != 0L) &&
-+        (priv->adapter->wt_int == 0L))
-+        priv->adapter->wt_int = get_utimeofday();
-+#endif
-+
-+    ireg = sdio_readb(card->func, HOST_INTSTATUS_REG, &ret);
-+    if (ret) {
-+        PRINTM(WARN, "sdio_read_ioreg: read int status register failed\n");
-+        goto done;
-+    }
-+    if (ireg != 0) {
-+        /*
-+         * DN_LD_HOST_INT_STATUS and/or UP_LD_HOST_INT_STATUS
-+         * Clear the interrupt status register and re-enable the interrupt
-+         */
-+        PRINTM(INFO, "sdio_ireg = 0x%x\n", ireg);
-+        sdio_writeb(card->func,
-+                    ~(ireg) & (DN_LD_HOST_INT_STATUS | UP_LD_HOST_INT_STATUS),
-+                    HOST_INTSTATUS_REG, &ret);
-+        if (ret) {
-+            PRINTM(WARN,
-+                   "sdio_write_ioreg: clear int status register failed\n");
-+            goto done;
-+        }
-+    }
-+    OS_INT_DISABLE;
-+    sd_ireg |= ireg;
-+    OS_INT_RESTORE;
-+
-+    uap_interrupt(priv);
-+  done:
-+    LEAVE();
-+}
-+
-+/**
-+ *  @brief This function probe the card
-+ *
-+ *  @param func    A pointer to sdio_func structure
-+ *  @param id    A pointer to structure sd_device_id
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+static int
-+uap_probe(struct sdio_func *func, const struct sdio_device_id *id)
-+{
-+    int ret = UAP_STATUS_FAILURE;
-+    struct sdio_mmc_card *card = NULL;
-+
-+    ENTER();
-+
-+    PRINTM(MSG, "%s: vendor=0x%4.04X device=0x%4.04X class=%d function=%d\n",
-+           __FUNCTION__, func->vendor, func->device, func->class, func->num);
-+
-+    card = kzalloc(sizeof(struct sdio_mmc_card), GFP_KERNEL);
-+    if (!card) {
-+        ret = -ENOMEM;
-+        goto done;
-+    }
-+
-+    card->func = func;
-+
-+    if (!uap_add_card(card)) {
-+        PRINTM(ERROR, "%s: uap_add_callback failed\n", __FUNCTION__);
-+        kfree(card);
-+        ret = UAP_STATUS_FAILURE;
-+        goto done;
-+    }
-+
-+    ret = UAP_STATUS_SUCCESS;
-+
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function removes the card
-+ *
-+ *  @param func    A pointer to sdio_func structure
-+ *  @return        N/A
-+ */
-+static void
-+uap_remove(struct sdio_func *func)
-+{
-+    struct sdio_mmc_card *card;
-+
-+    ENTER();
-+
-+    if (func) {
-+        card = sdio_get_drvdata(func);
-+        if (card) {
-+            uap_remove_card(card);
-+            kfree(card);
-+        }
-+    }
-+
-+    LEAVE();
-+}
-+
-+#ifdef CONFIG_PM
-+/**
-+ *  @brief This function handles client driver suspend
-+ *
-+ *  @param func    A pointer to sdio_func structure
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+uap_suspend(struct sdio_func *func)
-+{
-+    ENTER();
-+    LEAVE();
-+    return 0;
-+}
-+
-+/**
-+ *  @brief This function handles client driver resume
-+ *
-+ *  @param func    A pointer to sdio_func structure
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+uap_resume(struct sdio_func *func)
-+{
-+    ENTER();
-+    LEAVE();
-+    return 0;
-+}
-+#endif
-+
-+/** Device ID for SD8688 */
-+#define  SD_DEVICE_ID_8688_UAP 0x9104
-+/** UAP IDs */
-+static const struct sdio_device_id uap_ids[] = {
-+    {SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, SD_DEVICE_ID_8688_UAP)},
-+    {},
-+};
-+
-+MODULE_DEVICE_TABLE(sdio, uap_ids);
-+
-+static struct sdio_driver uap_sdio = {
-+    .name = "uap_sdio",
-+    .id_table = uap_ids,
-+    .probe = uap_probe,
-+    .remove = uap_remove,
-+#ifdef CONFIG_PM
-+/*    .suspend        = uap_suspend, */
-+/*    .resume = uap_resume, */
-+#endif
-+
-+};
-+
-+/**
-+ *  @brief This function registers the IF module in bus driver.
-+ *
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int __init
-+sbi_register()
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+
-+    ENTER();
-+
-+    /* SDIO Driver Registration */
-+    if (sdio_register_driver(&uap_sdio) != 0) {
-+        PRINTM(FATAL, "SDIO Driver Registration Failed \n");
-+        ret = UAP_STATUS_FAILURE;
-+    }
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function de-registers the IF module in bus driver.
-+ *
-+ *  @return      n/a
-+ */
-+void __exit
-+sbi_unregister(void)
-+{
-+    ENTER();
-+
-+    /* SDIO Driver Unregistration */
-+    sdio_unregister_driver(&uap_sdio);
-+
-+    LEAVE();
-+}
-+
-+/**
-+ *  @brief This function checks the interrupt status and handle it accordingly.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param ireg    A pointer to variable that keeps returned value
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+sbi_get_int_status(uap_private * priv, u8 * ireg)
-+{
-+    int ret = UAP_STATUS_SUCCESS;
-+    u8 sdio_ireg = 0;
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+
-+    ENTER();
-+
-+    *ireg = 0;
-+    OS_INT_DISABLE;
-+    sdio_ireg = sd_ireg;
-+    sd_ireg = 0;
-+    OS_INT_RESTORE;
-+
-+    sdio_claim_host(card->func);
-+
-+    if (sdio_ireg & DN_LD_HOST_INT_STATUS) {    /* tx_done INT */
-+        if (!priv->uap_dev.cmd_sent) {  /* tx_done already received */
-+            PRINTM(INFO,
-+                   "warning: tx_done already received: tx_dnld_rdy=0x%x int status=0x%x\n",
-+                   priv->uap_dev.cmd_sent, sdio_ireg);
-+        } else {
-+            priv->uap_dev.cmd_sent = FALSE;
-+            priv->uap_dev.data_sent = FALSE;
-+            if ( (priv->uap_dev.netdev->reg_state == NETREG_REGISTERED) && (skb_queue_len(&priv->adapter->tx_queue) < TX_LOW_WATERMARK)) {
-+                os_start_queue(priv);
-+          }
-+        }
-+    }
-+    if (sdio_ireg & UP_LD_HOST_INT_STATUS) {
-+        sd_card_to_host(priv);
-+    }
-+
-+    *ireg = sdio_ireg;
-+    ret = UAP_STATUS_SUCCESS;
-+    sdio_release_host(card->func);
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function disables the host interrupts.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+sbi_disable_host_int(uap_private * priv)
-+{
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+    int ret;
-+
-+    ENTER();
-+
-+    sdio_claim_host(card->func);
-+    ret = disable_host_int_mask(priv, HIM_DISABLE);
-+    sdio_release_host(card->func);
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function enables the host interrupts.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS
-+ */
-+int
-+sbi_enable_host_int(uap_private * priv)
-+{
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+    int ret;
-+
-+    ENTER();
-+
-+    sdio_claim_host(card->func);
-+    ret = enable_host_int_mask(priv, HIM_ENABLE);
-+    sdio_release_host(card->func);
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function de-registers the device.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS
-+ */
-+int
-+sbi_unregister_dev(uap_private * priv)
-+{
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+
-+    ENTER();
-+
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "Error: card or function is NULL!\n");
-+        goto done;
-+    }
-+
-+    sdio_claim_host(card->func);
-+    sdio_release_irq(card->func);
-+    sdio_disable_func(card->func);
-+    sdio_release_host(card->func);
-+
-+    sdio_set_drvdata(card->func, NULL);
-+
-+  done:
-+    LEAVE();
-+    return UAP_STATUS_SUCCESS;
-+}
-+
-+/**
-+ *  @brief This function registers the device.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+sbi_register_dev(uap_private * priv)
-+{
-+    int ret = UAP_STATUS_FAILURE;
-+    u8 reg;
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+    struct sdio_func *func;
-+
-+    ENTER();
-+
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "Error: card or function is NULL!\n");
-+        goto done;
-+    }
-+
-+    func = card->func;
-+
-+    /* Initialize the private structure */
-+    priv->uap_dev.ioport = 0;
-+
-+    sdio_claim_host(func);
-+
-+    ret = sdio_enable_func(func);
-+    if (ret) {
-+        PRINTM(FATAL, "sdio_enable_func() failed: ret=%d\n", ret);
-+        goto release_host;
-+    }
-+
-+    ret = sdio_claim_irq(func, sbi_interrupt);
-+    if (ret) {
-+        PRINTM(FATAL, "sdio_claim_irq failed: ret=%d\n", ret);
-+        goto disable_func;
-+    }
-+
-+    /* Read the IO port */
-+    ret = sbi_read_ioreg(priv, IO_PORT_0_REG, &reg);
-+    if (ret)
-+        goto release_irq;
-+    else
-+        priv->uap_dev.ioport |= reg;
-+
-+    ret = sbi_read_ioreg(priv, IO_PORT_1_REG, &reg);
-+    if (ret)
-+        goto release_irq;
-+    else
-+        priv->uap_dev.ioport |= (reg << 8);
-+
-+    ret = sbi_read_ioreg(priv, IO_PORT_2_REG, &reg);
-+    if (ret)
-+        goto release_irq;
-+    else
-+        priv->uap_dev.ioport |= (reg << 16);
-+
-+    PRINTM(INFO, "SDIO FUNC #%d IO port: 0x%x\n", func->num,
-+           priv->uap_dev.ioport);
-+
-+    ret = sdio_set_block_size(card->func, SD_BLOCK_SIZE);
-+    if (ret) {
-+        PRINTM(ERROR, "%s: cannot set SDIO block size\n", __FUNCTION__);
-+        ret = UAP_STATUS_FAILURE;
-+        goto release_irq;
-+    }
-+    priv->hotplug_device = &func->dev;
-+
-+    if (helper_name == NULL) {
-+        helper_name = DEFAULT_HELPER_NAME;
-+    }
-+    if (fw_name == NULL) {
-+        fw_name = DEFAULT_FW_NAME;
-+    }
-+    sdio_release_host(func);
-+
-+    sdio_set_drvdata(func, card);
-+
-+    ret = UAP_STATUS_SUCCESS;
-+    goto done;
-+
-+  release_irq:
-+    sdio_release_irq(func);
-+  disable_func:
-+    sdio_disable_func(func);
-+  release_host:
-+    sdio_release_host(func);
-+
-+  done:
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function sends data to the card.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param payload A pointer to the data/cmd buffer
-+ *  @param nb    the length of data/cmd
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+sbi_host_to_card(uap_private * priv, u8 * payload, u16 nb)
-+{
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+    int ret = UAP_STATUS_SUCCESS;
-+    int buf_block_len;
-+    int blksz;
-+    int i = 0;
-+    u8 *buf = NULL;
-+#ifdef PXA3XX_DMA_ALIGN
-+    void *tmpbuf = NULL;
-+    int tmpbufsz;
-+#endif
-+
-+    ENTER();
-+
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "card or function is NULL!\n");
-+        LEAVE();
-+        return UAP_STATUS_FAILURE;
-+    }
-+    buf = payload;
-+#ifdef PXA3XX_DMA_ALIGN
-+    if ((u32) payload & (PXA3XX_DMA_ALIGNMENT - 1)) {
-+        tmpbufsz = ALIGN_SZ(nb, PXA3XX_DMA_ALIGNMENT);
-+        tmpbuf = kmalloc(tmpbufsz, GFP_KERNEL);
-+        memset(tmpbuf, 0, tmpbufsz);
-+        /* Ensure 8-byte aligned CMD buffer */
-+        buf = (u8 *) ALIGN_ADDR(tmpbuf, PXA3XX_DMA_ALIGNMENT);
-+        memcpy(buf, payload, nb);
-+    }
-+#endif
-+    /* Allocate buffer and copy payload */
-+    blksz = SD_BLOCK_SIZE;
-+    buf_block_len = (nb + blksz - 1) / blksz;
-+    sdio_claim_host(card->func);
-+#define MAX_WRITE_IOMEM_RETRY 2
-+    priv->uap_dev.cmd_sent = TRUE;
-+    priv->uap_dev.data_sent = TRUE;
-+    do {
-+        /* Transfer data to card */
-+        ret = sdio_writesb(card->func, priv->uap_dev.ioport, buf,
-+                           buf_block_len * blksz);
-+        if (ret < 0) {
-+            i++;
-+            PRINTM(ERROR, "host_to_card, write iomem (%d) failed: %d\n", i,
-+                   ret);
-+            ret = UAP_STATUS_FAILURE;
-+            if (i > MAX_WRITE_IOMEM_RETRY)
-+                goto exit;
-+        } else {
-+            HEXDUMP("SDIO Blk Wr", payload, nb);
-+        }
-+    } while (ret == UAP_STATUS_FAILURE);
-+  exit:
-+    sdio_release_host(card->func);
-+#ifdef PXA3XX_DMA_ALIGN
-+    if (tmpbuf)
-+        kfree(tmpbuf);
-+#endif
-+    if (ret == UAP_STATUS_FAILURE) {
-+        priv->uap_dev.cmd_sent = FALSE;
-+        priv->uap_dev.data_sent = FALSE;
-+    }
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function reads CIS information.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param cisinfo A pointer to CIS information output buffer
-+ *  @param cislen  A pointer to length of CIS info output buffer
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+#if 0
-+static int
-+sbi_get_cis_info(uap_private * priv, void *cisinfo, int *cislen)
-+{
-+#define CIS_PTR (0x8000)
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+    unsigned int i, cis_ptr = CIS_PTR;
-+    int ret = UAP_STATUS_FAILURE;
-+
-+    ENTER();
-+
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "sbi_get_cis_info(): card or function is NULL!\n");
-+        goto exit;
-+    }
-+#define MAX_SDIO_CIS_INFO_LEN (256)
-+    if (!cisinfo || (*cislen < MAX_SDIO_CIS_INFO_LEN)) {
-+        PRINTM(WARN, "ERROR! get_cis_info: insufficient buffer passed\n");
-+        goto exit;
-+    }
-+
-+    *cislen = MAX_SDIO_CIS_INFO_LEN;
-+
-+    sdio_claim_host(card->func);
-+
-+    PRINTM(INFO, "cis_ptr=%#x\n", cis_ptr);
-+
-+    /* Read the Tuple Data */
-+    for (i = 0; i < *cislen; i++) {
-+        ((unsigned char *) cisinfo)[i] =
-+            sdio_readb(card->func, cis_ptr + i, &ret);
-+        if (ret) {
-+            PRINTM(WARN, "get_cis_info error: ret=%d\n", ret);
-+            ret = UAP_STATUS_FAILURE;
-+            goto done;
-+        }
-+        PRINTM(INFO, "cisinfo[%d]=%#x\n", i, ((unsigned char *) cisinfo)[i]);
-+    }
-+
-+  done:
-+    sdio_release_host(card->func);
-+  exit:
-+    LEAVE();
-+    return ret;
-+}
-+#endif
-+/**
-+ *  @brief This function downloads helper image to the card.
-+ *
-+ *  @param priv       A pointer to uap_private structure
-+ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+sbi_prog_helper(uap_private * priv)
-+{
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+    u8 *helper = NULL;
-+    int helperlen;
-+    int ret = UAP_STATUS_SUCCESS;
-+    void *tmphlprbuf = NULL;
-+    int tmphlprbufsz;
-+    u8 *hlprbuf;
-+    int hlprblknow;
-+    u32 tx_len;
-+#ifdef FW_DOWNLOAD_SPEED
-+    u32 tv1, tv2;
-+#endif
-+
-+    ENTER();
-+
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "sbi_prog_helper(): card or function is NULL!\n");
-+        goto done;
-+    }
-+
-+    if (priv->fw_helper) {
-+        helper = (u8 *) priv->fw_helper->data;
-+        helperlen = priv->fw_helper->size;
-+    } else {
-+        PRINTM(MSG, "No helper image found! Terminating download.\n");
-+        LEAVE();
-+        return UAP_STATUS_FAILURE;
-+    }
-+
-+    PRINTM(INFO, "Downloading helper image (%d bytes), block size %d bytes\n",
-+           helperlen, SD_BLOCK_SIZE);
-+
-+#ifdef FW_DOWNLOAD_SPEED
-+    tv1 = get_utimeofday();
-+#endif
-+
-+#ifdef PXA3XX_DMA_ALIGN
-+    tmphlprbufsz = ALIGN_SZ(UAP_UPLD_SIZE, PXA3XX_DMA_ALIGNMENT);
-+#else /* !PXA3XX_DMA_ALIGN */
-+    tmphlprbufsz = UAP_UPLD_SIZE;
-+#endif /* !PXA3XX_DMA_ALIGN */
-+    tmphlprbuf = kmalloc(tmphlprbufsz, GFP_KERNEL);
-+    if (!tmphlprbuf) {
-+        PRINTM(ERROR,
-+               "Unable to allocate buffer for helper. Terminating download\n");
-+        ret = UAP_STATUS_FAILURE;
-+        goto done;
-+    }
-+    memset(tmphlprbuf, 0, tmphlprbufsz);
-+#ifdef PXA3XX_DMA_ALIGN
-+    hlprbuf = (u8 *) ALIGN_ADDR(tmphlprbuf, PXA3XX_DMA_ALIGNMENT);
-+#else /* !PXA3XX_DMA_ALIGN */
-+    hlprbuf = (u8 *) tmphlprbuf;
-+#endif /* !PXA3XX_DMA_ALIGN */
-+
-+    sdio_claim_host(card->func);
-+
-+    /* Perform helper data transfer */
-+    tx_len = (FIRMWARE_TRANSFER_NBLOCK * SD_BLOCK_SIZE) - INTF_HEADER_LEN;
-+    hlprblknow = 0;
-+    do {
-+        /* The host polls for the DN_LD_CARD_RDY and CARD_IO_READY bits */
-+        ret = mv_sdio_poll_card_status(priv, CARD_IO_READY | DN_LD_CARD_RDY);
-+        if (ret < 0) {
-+            PRINTM(FATAL, "Helper download poll status timeout @ %d\n",
-+                   hlprblknow);
-+            goto done;
-+        }
-+
-+        /* More data? */
-+        if (hlprblknow >= helperlen)
-+            break;
-+
-+        /* Set blocksize to transfer - checking for last block */
-+        if (helperlen - hlprblknow < tx_len)
-+            tx_len = helperlen - hlprblknow;
-+
-+        /* Set length to the 4-byte header */
-+        *(u32 *) hlprbuf = uap_cpu_to_le32(tx_len);
-+
-+        /* Copy payload to buffer */
-+        memcpy(&hlprbuf[INTF_HEADER_LEN], &helper[hlprblknow], tx_len);
-+
-+        PRINTM(INFO, ".");
-+
-+        /* Send data */
-+        ret = sdio_writesb(card->func, priv->uap_dev.ioport,
-+                           hlprbuf, FIRMWARE_TRANSFER_NBLOCK * SD_BLOCK_SIZE);
-+
-+        if (ret < 0) {
-+            PRINTM(FATAL, "IO error during helper download @ %d\n", hlprblknow);
-+            goto done;
-+        }
-+
-+        hlprblknow += tx_len;
-+    } while (TRUE);
-+
-+#ifdef FW_DOWNLOAD_SPEED
-+    tv2 = get_utimeofday();
-+    PRINTM(INFO, "helper: %ld.%03ld.%03ld ", tv1 / 1000000,
-+           (tv1 % 1000000) / 1000, tv1 % 1000);
-+    PRINTM(INFO, " -> %ld.%03ld.%03ld ", tv2 / 1000000, (tv2 % 1000000) / 1000,
-+           tv2 % 1000);
-+    tv2 -= tv1;
-+    PRINTM(INFO, " == %ld.%03ld.%03ld\n", tv2 / 1000000, (tv2 % 1000000) / 1000,
-+           tv2 % 1000);
-+#endif
-+
-+    /* Write last EOF data */
-+    PRINTM(INFO, "\nTransferring helper image EOF block\n");
-+    memset(hlprbuf, 0x0, SD_BLOCK_SIZE);
-+    ret = sdio_writesb(card->func, priv->uap_dev.ioport,
-+                       hlprbuf, SD_BLOCK_SIZE);
-+
-+    if (ret < 0) {
-+        PRINTM(FATAL, "IO error in writing helper image EOF block\n");
-+        goto done;
-+    }
-+
-+    ret = UAP_STATUS_SUCCESS;
-+
-+  done:
-+    sdio_release_host(card->func);
-+    if (tmphlprbuf)
-+        kfree(tmphlprbuf);
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function downloads firmware image to the card.
-+ *
-+ *  @param priv       A pointer to uap_private structure
-+ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+sbi_prog_fw_w_helper(uap_private * priv)
-+{
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+    u8 *firmware = NULL;
-+    int firmwarelen;
-+    u8 base0;
-+    u8 base1;
-+    int ret = UAP_STATUS_SUCCESS;
-+    int offset;
-+    void *tmpfwbuf = NULL;
-+    int tmpfwbufsz;
-+    u8 *fwbuf;
-+    u16 len;
-+    int txlen = 0;
-+    int tx_blocks = 0;
-+    int i = 0;
-+    int tries = 0;
-+#ifdef FW_DOWNLOAD_SPEED
-+    u32 tv1, tv2;
-+#endif
-+
-+    ENTER();
-+
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "sbi_prog_fw_w_helper(): card or function is NULL!\n");
-+        goto done;
-+    }
-+
-+    if (priv->firmware) {
-+        firmware = (u8 *) priv->firmware->data;
-+        firmwarelen = priv->firmware->size;
-+    } else {
-+        PRINTM(MSG, "No firmware image found! Terminating download.\n");
-+        LEAVE();
-+        return UAP_STATUS_FAILURE;
-+    }
-+
-+    PRINTM(INFO, "Downloading FW image (%d bytes)\n", firmwarelen);
-+
-+#ifdef FW_DOWNLOAD_SPEED
-+    tv1 = get_utimeofday();
-+#endif
-+
-+#ifdef PXA3XX_DMA_ALIGN
-+    tmpfwbufsz = ALIGN_SZ(UAP_UPLD_SIZE, PXA3XX_DMA_ALIGNMENT);
-+#else /* PXA3XX_DMA_ALIGN */
-+    tmpfwbufsz = UAP_UPLD_SIZE;
-+#endif /* PXA3XX_DMA_ALIGN */
-+    tmpfwbuf = kmalloc(tmpfwbufsz, GFP_KERNEL);
-+    if (!tmpfwbuf) {
-+        PRINTM(ERROR,
-+               "Unable to allocate buffer for firmware. Terminating download.\n");
-+        ret = UAP_STATUS_FAILURE;
-+        goto done;
-+    }
-+    memset(tmpfwbuf, 0, tmpfwbufsz);
-+#ifdef PXA3XX_DMA_ALIGN
-+    /* Ensure 8-byte aligned firmware buffer */
-+    fwbuf = (u8 *) ALIGN_ADDR(tmpfwbuf, PXA3XX_DMA_ALIGNMENT);
-+#else /* PXA3XX_DMA_ALIGN */
-+    fwbuf = (u8 *) tmpfwbuf;
-+#endif /* PXA3XX_DMA_ALIGN */
-+
-+    sdio_claim_host(card->func);
-+
-+    /* Perform firmware data transfer */
-+    offset = 0;
-+    do {
-+        /* The host polls for the DN_LD_CARD_RDY and CARD_IO_READY bits */
-+        ret = mv_sdio_poll_card_status(priv, CARD_IO_READY | DN_LD_CARD_RDY);
-+        if (ret < 0) {
-+            PRINTM(FATAL, "FW download with helper poll status timeout @ %d\n",
-+                   offset);
-+            goto done;
-+        }
-+
-+        /* More data? */
-+        if (offset >= firmwarelen)
-+            break;
-+
-+        for (tries = 0; tries < MAX_POLL_TRIES; tries++) {
-+            if ((ret = sbi_read_ioreg(priv, HOST_F1_RD_BASE_0, &base0)) < 0) {
-+                PRINTM(WARN, "Dev BASE0 register read failed:"
-+                       " base0=0x%04X(%d). Terminating download.\n", base0,
-+                       base0);
-+                ret = UAP_STATUS_FAILURE;
-+                goto done;
-+            }
-+            if ((ret = sbi_read_ioreg(priv, HOST_F1_RD_BASE_1, &base1)) < 0) {
-+                PRINTM(WARN, "Dev BASE1 register read failed:"
-+                       " base1=0x%04X(%d). Terminating download.\n", base1,
-+                       base1);
-+                ret = UAP_STATUS_FAILURE;
-+                goto done;
-+            }
-+            len = (((u16) base1) << 8) | base0;
-+
-+            /* For SD8688 wait until the length is not 0, 1 or 2 before
-+               downloading the first FW block, since BOOT code writes the
-+               register to indicate the helper/FW download winner, the value
-+               could be 1 or 2 (Func1 or Func2). */
-+            if ((len && offset) || (len > 2))
-+                break;
-+            udelay(10);
-+        }
-+
-+        if (len == 0)
-+            break;
-+        else if (len > UAP_UPLD_SIZE) {
-+            PRINTM(FATAL, "FW download failure @ %d, invalid length %d\n",
-+                   offset, len);
-+            ret = UAP_STATUS_FAILURE;
-+            goto done;
-+        }
-+
-+        txlen = len;
-+
-+        if (len & BIT(0)) {
-+            i++;
-+            if (i > MAX_WRITE_IOMEM_RETRY) {
-+                PRINTM(FATAL,
-+                       "FW download failure @ %d, over max retry count\n",
-+                       offset);
-+                ret = UAP_STATUS_FAILURE;
-+                goto done;
-+            }
-+            PRINTM(ERROR, "FW CRC error indicated by the helper:"
-+                   " len = 0x%04X, txlen = %d\n", len, txlen);
-+            len &= ~BIT(0);
-+            /* Setting this to 0 to resend from same offset */
-+            txlen = 0;
-+        } else {
-+            i = 0;
-+
-+            /* Set blocksize to transfer - checking for last block */
-+            if (firmwarelen - offset < txlen) {
-+                txlen = firmwarelen - offset;
-+            }
-+            PRINTM(INFO, ".");
-+
-+            tx_blocks = (txlen + SD_BLOCK_SIZE - 1) / SD_BLOCK_SIZE;
-+
-+            /* Copy payload to buffer */
-+            memcpy(fwbuf, &firmware[offset], txlen);
-+        }
-+
-+        /* Send data */
-+        ret = sdio_writesb(card->func, priv->uap_dev.ioport,
-+                           fwbuf, tx_blocks * SD_BLOCK_SIZE);
-+
-+        if (ret < 0) {
-+            PRINTM(ERROR, "FW download, write iomem (%d) failed @ %d\n", i,
-+                   offset);
-+            if (sbi_write_ioreg(priv, CONFIGURATION_REG, 0x04) < 0) {
-+                PRINTM(ERROR, "write ioreg failed (CFG)\n");
-+            }
-+        }
-+
-+        offset += txlen;
-+    } while (TRUE);
-+
-+    PRINTM(INFO, "\nFW download over, size %d bytes\n", offset);
-+
-+    ret = UAP_STATUS_SUCCESS;
-+  done:
-+#ifdef FW_DOWNLOAD_SPEED
-+    tv2 = get_utimeofday();
-+    PRINTM(INFO, "FW: %ld.%03ld.%03ld ", tv1 / 1000000,
-+           (tv1 % 1000000) / 1000, tv1 % 1000);
-+    PRINTM(INFO, " -> %ld.%03ld.%03ld ", tv2 / 1000000,
-+           (tv2 % 1000000) / 1000, tv2 % 1000);
-+    tv2 -= tv1;
-+    PRINTM(INFO, " == %ld.%03ld.%03ld\n", tv2 / 1000000,
-+           (tv2 % 1000000) / 1000, tv2 % 1000);
-+#endif
-+    sdio_release_host(card->func);
-+    if (tmpfwbuf)
-+        kfree(tmpfwbuf);
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function checks if the firmware is ready to accept
-+ *  command or not.
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param pollnum Poll number
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+sbi_check_fw_status(uap_private * priv, int pollnum)
-+{
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+    int ret = UAP_STATUS_SUCCESS;
-+    u16 firmwarestat;
-+    int tries;
-+
-+    ENTER();
-+
-+    sdio_claim_host(card->func);
-+
-+    /* Wait for firmware initialization event */
-+    for (tries = 0; tries < pollnum; tries++) {
-+        if ((ret = sd_read_firmware_status(priv, &firmwarestat)) < 0)
-+            continue;
-+        if (firmwarestat == FIRMWARE_READY) {
-+            ret = UAP_STATUS_SUCCESS;
-+            break;
-+        } else {
-+            mdelay(10);
-+            ret = UAP_STATUS_FAILURE;
-+        }
-+    }
-+
-+    if (ret < 0)
-+        goto done;
-+
-+    ret = UAP_STATUS_SUCCESS;
-+    sd_get_rx_unit(priv);
-+
-+  done:
-+    sdio_release_host(card->func);
-+
-+    LEAVE();
-+    return ret;
-+}
-+
-+/**
-+ *  @brief This function set bus clock on/off
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @param option    TRUE--on , FALSE--off
-+ *  @return      UAP_STATUS_SUCCESS
-+ */
-+#if 0
-+static int
-+sbi_set_bus_clock(uap_private * priv, u8 option)
-+{
-+    ENTER();
-+    LEAVE();
-+    return UAP_STATUS_SUCCESS;
-+}
-+#endif
-+
-+/**
-+ *  @brief This function wakeup firmware
-+ *
-+ *  @param priv    A pointer to uap_private structure
-+ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
-+ */
-+int
-+sbi_wakeup_firmware(uap_private * priv)
-+{
-+    struct sdio_mmc_card *card = priv->uap_dev.card;
-+    int ret = UAP_STATUS_SUCCESS;
-+
-+    ENTER();
-+
-+    if (!card || !card->func) {
-+        PRINTM(ERROR, "card or function is NULL!\n");
-+        LEAVE();
-+        return UAP_STATUS_FAILURE;
-+    }
-+    sdio_claim_host(card->func);
-+    sdio_writeb(card->func, HOST_POWER_UP, CONFIGURATION_REG, &ret);
-+    sdio_release_host(card->func);
-+    LEAVE();
-+    return ret;
-+}
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h
---- backports-3.18.1-1.org/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h    1970-01-01 01:00:00.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h        2014-12-29 20:37:43.955764567 +0100
-@@ -0,0 +1,136 @@
-+/** @file uap_sdio_mmc.h
-+ *  @brief This file contains SDIO IF (interface) module
-+ *  related macros, enum, and structure.
-+ *
-+ * Copyright (C) 2007-2009, Marvell International Ltd.
-+ *
-+ * This software file (the "File") is distributed by Marvell International
-+ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
-+ * (the "License").  You may use, redistribute and/or modify this File in
-+ * accordance with the terms and conditions of the License, a copy of which
-+ * is available along with the File in the gpl.txt file or by writing to
-+ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
-+ *
-+ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
-+ * this warranty disclaimer.
-+ *
-+ */
-+/****************************************************
-+Change log:
-+      10/10/07: initial version
-+****************************************************/
-+
-+#ifndef       _UAP_SDIO_MMC_H
-+#define       _UAP_SDIO_MMC_H
-+
-+#include      <linux/mmc/sdio.h>
-+#include      <linux/mmc/sdio_ids.h>
-+#include      <linux/mmc/sdio_func.h>
-+#include      <linux/mmc/card.h>
-+
-+#include      "uap_headers.h"
-+
-+/** The number of times to try when waiting for downloaded firmware to
-+     become active. (polling the scratch register). */
-+#define MAX_FIRMWARE_POLL_TRIES               100
-+
-+/** Firmware ready */
-+#define FIRMWARE_READY                        0xfedc
-+
-+/** Number of firmware blocks to transfer */
-+#define FIRMWARE_TRANSFER_NBLOCK      2
-+
-+/* Host Control Registers */
-+/** Host Control Registers : I/O port 0 */
-+#define IO_PORT_0_REG                 0x00
-+/** Host Control Registers : I/O port 1 */
-+#define IO_PORT_1_REG                 0x01
-+/** Host Control Registers : I/O port 2 */
-+#define IO_PORT_2_REG                 0x02
-+
-+/** Host Control Registers : Configuration */
-+#define CONFIGURATION_REG             0x03
-+/** Host Control Registers : Host without Command 53 finish host */
-+#define HOST_WO_CMD53_FINISH_HOST     (0x1U << 2)
-+/** Host Control Registers : Host power up */
-+#define HOST_POWER_UP                 (0x1U << 1)
-+/** Host Control Registers : Host power down */
-+#define HOST_POWER_DOWN                       (0x1U << 0)
-+
-+/** Host Control Registers : Host interrupt mask */
-+#define HOST_INT_MASK_REG             0x04
-+/** Host Control Registers : Upload host interrupt mask */
-+#define UP_LD_HOST_INT_MASK           (0x1U)
-+/** Host Control Registers : Download host interrupt mask */
-+#define DN_LD_HOST_INT_MASK           (0x2U)
-+/** Enable Host interrupt mask */
-+#define HIM_ENABLE                    (UP_LD_HOST_INT_MASK | DN_LD_HOST_INT_MASK)
-+/** Disable Host interrupt mask */
-+#define       HIM_DISABLE                     0xff
-+
-+/** Host Control Registers : Host interrupt status */
-+#define HOST_INTSTATUS_REG            0x05
-+/** Host Control Registers : Upload host interrupt status */
-+#define UP_LD_HOST_INT_STATUS         (0x1U)
-+/** Host Control Registers : Download host interrupt status */
-+#define DN_LD_HOST_INT_STATUS         (0x2U)
-+
-+/** Host F1 read base 0 */
-+#define HOST_F1_RD_BASE_0             0x10
-+/** Host F1 read base 1 */
-+#define HOST_F1_RD_BASE_1             0x11
-+
-+/** Card Control Registers : Card status register */
-+#define CARD_STATUS_REG               0x20
-+/** Card Control Registers : Card I/O ready */
-+#define CARD_IO_READY                 (0x1U << 3)
-+/** Card Control Registers : CIS card ready */
-+#define CIS_CARD_RDY                  (0x1U << 2)
-+/** Card Control Registers : Upload card ready */
-+#define UP_LD_CARD_RDY                (0x1U << 1)
-+/** Card Control Registers : Download card ready */
-+#define DN_LD_CARD_RDY                (0x1U << 0)
-+
-+/** Card Control Registers : Card OCR 0 register */
-+#define CARD_OCR_0_REG                0x34
-+/** Card Control Registers : Card OCR 1 register */
-+#define CARD_OCR_1_REG                0x35
-+
-+/** Firmware status 0 register */
-+#define CARD_FW_STATUS0_REG           0x40
-+/** Firmware status 1 register */
-+#define CARD_FW_STATUS1_REG           0x41
-+/** Rx length register */
-+#define CARD_RX_LEN_REG                       0x42
-+/** Rx unit register */
-+#define CARD_RX_UNIT_REG              0x43
-+
-+/** Chip Id Register 0 */
-+#define CARD_CHIP_ID_0_REG            0x801c
-+/** Chip Id Register 1 */
-+#define CARD_CHIP_ID_1_REG            0x801d
-+
-+#ifdef PXA3XX_DMA_ALIGN
-+/** DMA alignment value for PXA3XX platforms */
-+#define PXA3XX_DMA_ALIGNMENT    8
-+/** Macros for Data Alignment : size */
-+#define ALIGN_SZ(p, a)  \
-+    (((p) + ((a) - 1)) & ~((a) - 1))
-+
-+/** Macros for Data Alignment : address */
-+#define ALIGN_ADDR(p, a)    \
-+    ((((u32)(p)) + (((u32)(a)) - 1)) & ~(((u32)(a)) - 1))
-+#endif /* PXA3XX_DMA_ALIGN */
-+
-+struct sdio_mmc_card
-+{
-+        /** sdio_func structure pointer */
-+    struct sdio_func *func;
-+        /** uap_private structure pointer */
-+    uap_private *priv;
-+};
-+
-+#endif /* _UAP_SDIO_MMC_H */
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/Makefile backports-3.18.1-1/drivers/net/wireless/Makefile
---- backports-3.18.1-1.org/drivers/net/wireless/Makefile       2014-12-21 22:37:15.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/Makefile   2014-12-29 20:40:33.632440784 +0100
-@@ -60,3 +60,5 @@
- obj-$(CPTCFG_CW1200)  += cw1200/
- obj-$(CPTCFG_RSI_91X) += rsi/
-+
-+obj-$(CPTCFG_LIBERTAS_UAP)    += libertas_uap/
diff --git a/src/patches/backports-3.18.1-1_no_dma_sgtable_on_x86_64.patch b/src/patches/backports-3.18.1-1_no_dma_sgtable_on_x86_64.patch
deleted file mode 100644 (file)
index 5a2d04e..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -Naur backports-4.1.1-1.org/compat/dma-shared-helpers.c backports-4.1.1-1/compat/dma-shared-helpers.c
---- backports-4.1.1-1.org/compat/dma-shared-helpers.c  2015-07-01 23:10:37.000000000 +0200
-+++ backports-4.1.1-1/compat/dma-shared-helpers.c      2015-09-25 13:29:14.006762269 +0200
-@@ -20,22 +20,3 @@
- #endif /* LINUX_VERSION_CODE <= KERNEL_VERSION(3,6,0) */
- #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0) */
--#if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(7,0)
--/*
-- * Create scatter-list for the already allocated DMA buffer.
-- */
--int dma_common_get_sgtable(struct device *dev, struct sg_table *sgt,
--               void *cpu_addr, dma_addr_t handle, size_t size)
--{
--      struct page *page = virt_to_page(cpu_addr);
--      int ret;
--
--      ret = sg_alloc_table(sgt, 1, GFP_KERNEL);
--      if (unlikely(ret))
--              return ret;
--
--      sg_set_page(sgt->sgl, page, PAGE_ALIGN(size), 0);
--      return 0;
--}
--EXPORT_SYMBOL_GPL(dma_common_get_sgtable);
--#endif /* RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(7,0) */
diff --git a/src/patches/backports-3.18.1-1_rt2x00usb_suppress_queue_warnings.patch b/src/patches/backports-3.18.1-1_rt2x00usb_suppress_queue_warnings.patch
deleted file mode 100644 (file)
index 3f9308e..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/rt2x00/rt2800usb.c backports-3.18.1-1/drivers/net/wireless/rt2x00/rt2800usb.c
---- backports-3.18.1-1.org/drivers/net/wireless/rt2x00/rt2800usb.c     2014-12-21 22:37:14.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/rt2x00/rt2800usb.c 2015-04-07 11:44:16.647963570 +0200
-@@ -444,7 +444,7 @@
-       rt2x00usb_register_read(rt2x00dev, TXRXQ_PCNT, &reg);
-       if (rt2x00_get_field32(reg, TXRXQ_PCNT_TX0Q)) {
--              rt2x00_warn(rt2x00dev, "TX HW queue 0 timed out, invoke forced kick\n");
-+              rt2x00_dbg(rt2x00dev, "TX HW queue 0 timed out, invoke forced kick\n");
-               rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf40012);
-@@ -459,7 +459,7 @@
-       rt2x00usb_register_read(rt2x00dev, TXRXQ_PCNT, &reg);
-       if (rt2x00_get_field32(reg, TXRXQ_PCNT_TX1Q)) {
--              rt2x00_warn(rt2x00dev, "TX HW queue 1 timed out, invoke forced kick\n");
-+              rt2x00_dbg(rt2x00dev, "TX HW queue 1 timed out, invoke forced kick\n");
-               rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf4000a);
-@@ -609,7 +609,7 @@
-               if (unlikely(test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
-                            !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))) {
--                      rt2x00_warn(rt2x00dev, "Data pending for entry %u in queue %u\n",
-+                      rt2x00_dbg(rt2x00dev, "Data pending for entry %u in queue %u\n",
-                                   entry->entry_idx, qid);
-                       break;
-               }
-diff -Naur backports-3.18.1-1.org/drivers/net/wireless/rt2x00/rt2x00usb.c backports-3.18.1-1/drivers/net/wireless/rt2x00/rt2x00usb.c
---- backports-3.18.1-1.org/drivers/net/wireless/rt2x00/rt2x00usb.c     2014-12-21 22:37:14.000000000 +0100
-+++ backports-3.18.1-1/drivers/net/wireless/rt2x00/rt2x00usb.c 2015-04-07 11:42:41.723492892 +0200
-@@ -524,7 +524,7 @@
- static void rt2x00usb_watchdog_tx_dma(struct data_queue *queue)
- {
--      rt2x00_warn(queue->rt2x00dev, "TX queue %d DMA timed out, invoke forced forced reset\n",
-+      rt2x00_dbg(queue->rt2x00dev, "TX queue %d DMA timed out, invoke forced reset\n",
-                   queue->qid);
-       rt2x00queue_stop_queue(queue);
diff --git a/src/patches/backports-4.2.6-1-add_usbnet_modules.patch b/src/patches/backports-4.2.6-1-add_usbnet_modules.patch
deleted file mode 100644 (file)
index 7ee228d..0000000
+++ /dev/null
@@ -1,29007 +0,0 @@
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/asix_common.c backports-4.2.6-1/drivers/net/usb/asix_common.c
---- backports-4.2.6-1.org/drivers/net/usb/asix_common.c        1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/asix_common.c    2016-06-28 14:35:17.965307221 +0200
-@@ -0,0 +1,584 @@
-+/*
-+ * ASIX AX8817X based USB 2.0 Ethernet Devices
-+ * Copyright (C) 2003-2006 David Hollis <dhollis@davehollis.com>
-+ * Copyright (C) 2005 Phil Chang <pchang23@sbcglobal.net>
-+ * Copyright (C) 2006 James Painter <jamie.painter@iname.com>
-+ * Copyright (c) 2002-2003 TiVo Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include "asix.h"
-+
-+int asix_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                u16 size, void *data)
-+{
-+      int ret;
-+      ret = usbnet_read_cmd(dev, cmd,
-+                             USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+                             value, index, data, size);
-+
-+      if (ret != size && ret >= 0)
-+              return -EINVAL;
-+      return ret;
-+}
-+
-+int asix_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                 u16 size, void *data)
-+{
-+      return usbnet_write_cmd(dev, cmd,
-+                              USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+                              value, index, data, size);
-+}
-+
-+void asix_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                        u16 size, void *data)
-+{
-+      usbnet_write_cmd_async(dev, cmd,
-+                             USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+                             value, index, data, size);
-+}
-+
-+int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
-+                         struct asix_rx_fixup_info *rx)
-+{
-+      int offset = 0;
-+
-+      while (offset + sizeof(u16) <= skb->len) {
-+              u16 remaining = 0;
-+              unsigned char *data;
-+
-+              if (!rx->size) {
-+                      if ((skb->len - offset == sizeof(u16)) ||
-+                          rx->split_head) {
-+                              if(!rx->split_head) {
-+                                      rx->header = get_unaligned_le16(
-+                                                      skb->data + offset);
-+                                      rx->split_head = true;
-+                                      offset += sizeof(u16);
-+                                      break;
-+                              } else {
-+                                      rx->header |= (get_unaligned_le16(
-+                                                      skb->data + offset)
-+                                                      << 16);
-+                                      rx->split_head = false;
-+                                      offset += sizeof(u16);
-+                              }
-+                      } else {
-+                              rx->header = get_unaligned_le32(skb->data +
-+                                                              offset);
-+                              offset += sizeof(u32);
-+                      }
-+
-+                      /* get the packet length */
-+                      rx->size = (u16) (rx->header & 0x7ff);
-+                      if (rx->size != ((~rx->header >> 16) & 0x7ff)) {
-+                              netdev_err(dev->net, "asix_rx_fixup() Bad Header Length 0x%x, offset %d\n",
-+                                         rx->header, offset);
-+                              rx->size = 0;
-+                              return 0;
-+                      }
-+                      rx->ax_skb = netdev_alloc_skb_ip_align(dev->net,
-+                                                             rx->size);
-+                      if (!rx->ax_skb)
-+                              return 0;
-+              }
-+
-+              if (rx->size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) {
-+                      netdev_err(dev->net, "asix_rx_fixup() Bad RX Length %d\n",
-+                                 rx->size);
-+                      kfree_skb(rx->ax_skb);
-+                      rx->ax_skb = NULL;
-+                      rx->size = 0U;
-+
-+                      return 0;
-+              }
-+
-+              if (rx->size > skb->len - offset) {
-+                      remaining = rx->size - (skb->len - offset);
-+                      rx->size = skb->len - offset;
-+              }
-+
-+              data = skb_put(rx->ax_skb, rx->size);
-+              memcpy(data, skb->data + offset, rx->size);
-+              if (!remaining)
-+                      usbnet_skb_return(dev, rx->ax_skb);
-+
-+              offset += (rx->size + 1) & 0xfffe;
-+              rx->size = remaining;
-+      }
-+
-+      if (skb->len != offset) {
-+              netdev_err(dev->net, "asix_rx_fixup() Bad SKB Length %d, %d\n",
-+                         skb->len, offset);
-+              return 0;
-+      }
-+
-+      return 1;
-+}
-+
-+int asix_rx_fixup_common(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      struct asix_common_private *dp = dev->driver_priv;
-+      struct asix_rx_fixup_info *rx = &dp->rx_fixup_info;
-+
-+      return asix_rx_fixup_internal(dev, skb, rx);
-+}
-+
-+struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
-+                            gfp_t flags)
-+{
-+      int padlen;
-+      int headroom = skb_headroom(skb);
-+      int tailroom = skb_tailroom(skb);
-+      u32 packet_len;
-+      u32 padbytes = 0xffff0000;
-+
-+      padlen = ((skb->len + 4) & (dev->maxpacket - 1)) ? 0 : 4;
-+
-+      /* We need to push 4 bytes in front of frame (packet_len)
-+       * and maybe add 4 bytes after the end (if padlen is 4)
-+       *
-+       * Avoid skb_copy_expand() expensive call, using following rules :
-+       * - We are allowed to push 4 bytes in headroom if skb_header_cloned()
-+       *   is false (and if we have 4 bytes of headroom)
-+       * - We are allowed to put 4 bytes at tail if skb_cloned()
-+       *   is false (and if we have 4 bytes of tailroom)
-+       *
-+       * TCP packets for example are cloned, but skb_header_release()
-+       * was called in tcp stack, allowing us to use headroom for our needs.
-+       */
-+      if (!skb_header_cloned(skb) &&
-+          !(padlen && skb_cloned(skb)) &&
-+          headroom + tailroom >= 4 + padlen) {
-+              /* following should not happen, but better be safe */
-+              if (headroom < 4 ||
-+                  tailroom < padlen) {
-+                      skb->data = memmove(skb->head + 4, skb->data, skb->len);
-+                      skb_set_tail_pointer(skb, skb->len);
-+              }
-+      } else {
-+              struct sk_buff *skb2;
-+
-+              skb2 = skb_copy_expand(skb, 4, padlen, flags);
-+              dev_kfree_skb_any(skb);
-+              skb = skb2;
-+              if (!skb)
-+                      return NULL;
-+      }
-+
-+      packet_len = ((skb->len ^ 0x0000ffff) << 16) + skb->len;
-+      skb_push(skb, 4);
-+      cpu_to_le32s(&packet_len);
-+      skb_copy_to_linear_data(skb, &packet_len, sizeof(packet_len));
-+
-+      if (padlen) {
-+              cpu_to_le32s(&padbytes);
-+              memcpy(skb_tail_pointer(skb), &padbytes, sizeof(padbytes));
-+              skb_put(skb, sizeof(padbytes));
-+      }
-+
-+      usbnet_set_skb_tx_stats(skb, 1, 0);
-+      return skb;
-+}
-+
-+int asix_set_sw_mii(struct usbnet *dev)
-+{
-+      int ret;
-+      ret = asix_write_cmd(dev, AX_CMD_SET_SW_MII, 0x0000, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to enable software MII access\n");
-+      return ret;
-+}
-+
-+int asix_set_hw_mii(struct usbnet *dev)
-+{
-+      int ret;
-+      ret = asix_write_cmd(dev, AX_CMD_SET_HW_MII, 0x0000, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to enable hardware MII access\n");
-+      return ret;
-+}
-+
-+int asix_read_phy_addr(struct usbnet *dev, int internal)
-+{
-+      int offset = (internal ? 1 : 0);
-+      u8 buf[2];
-+      int ret = asix_read_cmd(dev, AX_CMD_READ_PHY_ID, 0, 0, 2, buf);
-+
-+      netdev_dbg(dev->net, "asix_get_phy_addr()\n");
-+
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Error reading PHYID register: %02x\n", ret);
-+              goto out;
-+      }
-+      netdev_dbg(dev->net, "asix_get_phy_addr() returning 0x%04x\n",
-+                 *((__le16 *)buf));
-+      ret = buf[offset];
-+
-+out:
-+      return ret;
-+}
-+
-+int asix_get_phy_addr(struct usbnet *dev)
-+{
-+      /* return the address of the internal phy */
-+      return asix_read_phy_addr(dev, 1);
-+}
-+
-+
-+int asix_sw_reset(struct usbnet *dev, u8 flags)
-+{
-+      int ret;
-+
-+        ret = asix_write_cmd(dev, AX_CMD_SW_RESET, flags, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to send software reset: %02x\n", ret);
-+
-+      return ret;
-+}
-+
-+u16 asix_read_rx_ctl(struct usbnet *dev)
-+{
-+      __le16 v;
-+      int ret = asix_read_cmd(dev, AX_CMD_READ_RX_CTL, 0, 0, 2, &v);
-+
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Error reading RX_CTL register: %02x\n", ret);
-+              goto out;
-+      }
-+      ret = le16_to_cpu(v);
-+out:
-+      return ret;
-+}
-+
-+int asix_write_rx_ctl(struct usbnet *dev, u16 mode)
-+{
-+      int ret;
-+
-+      netdev_dbg(dev->net, "asix_write_rx_ctl() - mode = 0x%04x\n", mode);
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_RX_CTL, mode, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to write RX_CTL mode to 0x%04x: %02x\n",
-+                         mode, ret);
-+
-+      return ret;
-+}
-+
-+u16 asix_read_medium_status(struct usbnet *dev)
-+{
-+      __le16 v;
-+      int ret = asix_read_cmd(dev, AX_CMD_READ_MEDIUM_STATUS, 0, 0, 2, &v);
-+
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Error reading Medium Status register: %02x\n",
-+                         ret);
-+              return ret;     /* TODO: callers not checking for error ret */
-+      }
-+
-+      return le16_to_cpu(v);
-+
-+}
-+
-+int asix_write_medium_mode(struct usbnet *dev, u16 mode)
-+{
-+      int ret;
-+
-+      netdev_dbg(dev->net, "asix_write_medium_mode() - mode = 0x%04x\n", mode);
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_MEDIUM_MODE, mode, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to write Medium Mode mode to 0x%04x: %02x\n",
-+                         mode, ret);
-+
-+      return ret;
-+}
-+
-+int asix_write_gpio(struct usbnet *dev, u16 value, int sleep)
-+{
-+      int ret;
-+
-+      netdev_dbg(dev->net, "asix_write_gpio() - value = 0x%04x\n", value);
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_GPIOS, value, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to write GPIO value 0x%04x: %02x\n",
-+                         value, ret);
-+
-+      if (sleep)
-+              msleep(sleep);
-+
-+      return ret;
-+}
-+
-+/*
-+ * AX88772 & AX88178 have a 16-bit RX_CTL value
-+ */
-+void asix_set_multicast(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct asix_data *data = (struct asix_data *)&dev->data;
-+      u16 rx_ctl = AX_DEFAULT_RX_CTL;
-+
-+      if (net->flags & IFF_PROMISC) {
-+              rx_ctl |= AX_RX_CTL_PRO;
-+      } else if (net->flags & IFF_ALLMULTI ||
-+                 netdev_mc_count(net) > AX_MAX_MCAST) {
-+              rx_ctl |= AX_RX_CTL_AMALL;
-+      } else if (netdev_mc_empty(net)) {
-+              /* just broadcast and directed */
-+      } else {
-+              /* We use the 20 byte dev->data
-+               * for our 8 byte filter buffer
-+               * to avoid allocating memory that
-+               * is tricky to free later */
-+              struct netdev_hw_addr *ha;
-+              u32 crc_bits;
-+
-+              memset(data->multi_filter, 0, AX_MCAST_FILTER_SIZE);
-+
-+              /* Build the multicast hash filter. */
-+              netdev_for_each_mc_addr(ha, net) {
-+                      crc_bits = ether_crc(ETH_ALEN, ha->addr) >> 26;
-+                      data->multi_filter[crc_bits >> 3] |=
-+                          1 << (crc_bits & 7);
-+              }
-+
-+              asix_write_cmd_async(dev, AX_CMD_WRITE_MULTI_FILTER, 0, 0,
-+                                 AX_MCAST_FILTER_SIZE, data->multi_filter);
-+
-+              rx_ctl |= AX_RX_CTL_AM;
-+      }
-+
-+      asix_write_cmd_async(dev, AX_CMD_WRITE_RX_CTL, rx_ctl, 0, 0, NULL);
-+}
-+
-+int asix_mdio_read(struct net_device *netdev, int phy_id, int loc)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      __le16 res;
-+
-+      mutex_lock(&dev->phy_mutex);
-+      asix_set_sw_mii(dev);
-+      asix_read_cmd(dev, AX_CMD_READ_MII_REG, phy_id,
-+                              (__u16)loc, 2, &res);
-+      asix_set_hw_mii(dev);
-+      mutex_unlock(&dev->phy_mutex);
-+
-+      netdev_dbg(dev->net, "asix_mdio_read() phy_id=0x%02x, loc=0x%02x, returns=0x%04x\n",
-+                 phy_id, loc, le16_to_cpu(res));
-+
-+      return le16_to_cpu(res);
-+}
-+
-+void asix_mdio_write(struct net_device *netdev, int phy_id, int loc, int val)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      __le16 res = cpu_to_le16(val);
-+
-+      netdev_dbg(dev->net, "asix_mdio_write() phy_id=0x%02x, loc=0x%02x, val=0x%04x\n",
-+                 phy_id, loc, val);
-+      mutex_lock(&dev->phy_mutex);
-+      asix_set_sw_mii(dev);
-+      asix_write_cmd(dev, AX_CMD_WRITE_MII_REG, phy_id, (__u16)loc, 2, &res);
-+      asix_set_hw_mii(dev);
-+      mutex_unlock(&dev->phy_mutex);
-+}
-+
-+void asix_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u8 opt;
-+
-+      if (asix_read_cmd(dev, AX_CMD_READ_MONITOR_MODE, 0, 0, 1, &opt) < 0) {
-+              wolinfo->supported = 0;
-+              wolinfo->wolopts = 0;
-+              return;
-+      }
-+      wolinfo->supported = WAKE_PHY | WAKE_MAGIC;
-+      wolinfo->wolopts = 0;
-+      if (opt & AX_MONITOR_LINK)
-+              wolinfo->wolopts |= WAKE_PHY;
-+      if (opt & AX_MONITOR_MAGIC)
-+              wolinfo->wolopts |= WAKE_MAGIC;
-+}
-+
-+int asix_set_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u8 opt = 0;
-+
-+      if (wolinfo->wolopts & WAKE_PHY)
-+              opt |= AX_MONITOR_LINK;
-+      if (wolinfo->wolopts & WAKE_MAGIC)
-+              opt |= AX_MONITOR_MAGIC;
-+
-+      if (asix_write_cmd(dev, AX_CMD_WRITE_MONITOR_MODE,
-+                            opt, 0, 0, NULL) < 0)
-+              return -EINVAL;
-+
-+      return 0;
-+}
-+
-+int asix_get_eeprom_len(struct net_device *net)
-+{
-+      return AX_EEPROM_LEN;
-+}
-+
-+int asix_get_eeprom(struct net_device *net, struct ethtool_eeprom *eeprom,
-+                  u8 *data)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u16 *eeprom_buff;
-+      int first_word, last_word;
-+      int i;
-+
-+      if (eeprom->len == 0)
-+              return -EINVAL;
-+
-+      eeprom->magic = AX_EEPROM_MAGIC;
-+
-+      first_word = eeprom->offset >> 1;
-+      last_word = (eeprom->offset + eeprom->len - 1) >> 1;
-+
-+      eeprom_buff = kmalloc(sizeof(u16) * (last_word - first_word + 1),
-+                            GFP_KERNEL);
-+      if (!eeprom_buff)
-+              return -ENOMEM;
-+
-+      /* ax8817x returns 2 bytes from eeprom on read */
-+      for (i = first_word; i <= last_word; i++) {
-+              if (asix_read_cmd(dev, AX_CMD_READ_EEPROM, i, 0, 2,
-+                                &(eeprom_buff[i - first_word])) < 0) {
-+                      kfree(eeprom_buff);
-+                      return -EIO;
-+              }
-+      }
-+
-+      memcpy(data, (u8 *)eeprom_buff + (eeprom->offset & 1), eeprom->len);
-+      kfree(eeprom_buff);
-+      return 0;
-+}
-+
-+int asix_set_eeprom(struct net_device *net, struct ethtool_eeprom *eeprom,
-+                  u8 *data)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u16 *eeprom_buff;
-+      int first_word, last_word;
-+      int i;
-+      int ret;
-+
-+      netdev_dbg(net, "write EEPROM len %d, offset %d, magic 0x%x\n",
-+                 eeprom->len, eeprom->offset, eeprom->magic);
-+
-+      if (eeprom->len == 0)
-+              return -EINVAL;
-+
-+      if (eeprom->magic != AX_EEPROM_MAGIC)
-+              return -EINVAL;
-+
-+      first_word = eeprom->offset >> 1;
-+      last_word = (eeprom->offset + eeprom->len - 1) >> 1;
-+
-+      eeprom_buff = kmalloc(sizeof(u16) * (last_word - first_word + 1),
-+                            GFP_KERNEL);
-+      if (!eeprom_buff)
-+              return -ENOMEM;
-+
-+      /* align data to 16 bit boundaries, read the missing data from
-+         the EEPROM */
-+      if (eeprom->offset & 1) {
-+              ret = asix_read_cmd(dev, AX_CMD_READ_EEPROM, first_word, 0, 2,
-+                                  &(eeprom_buff[0]));
-+              if (ret < 0) {
-+                      netdev_err(net, "Failed to read EEPROM at offset 0x%02x.\n", first_word);
-+                      goto free;
-+              }
-+      }
-+
-+      if ((eeprom->offset + eeprom->len) & 1) {
-+              ret = asix_read_cmd(dev, AX_CMD_READ_EEPROM, last_word, 0, 2,
-+                                  &(eeprom_buff[last_word - first_word]));
-+              if (ret < 0) {
-+                      netdev_err(net, "Failed to read EEPROM at offset 0x%02x.\n", last_word);
-+                      goto free;
-+              }
-+      }
-+
-+      memcpy((u8 *)eeprom_buff + (eeprom->offset & 1), data, eeprom->len);
-+
-+      /* write data to EEPROM */
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_ENABLE, 0x0000, 0, 0, NULL);
-+      if (ret < 0) {
-+              netdev_err(net, "Failed to enable EEPROM write\n");
-+              goto free;
-+      }
-+      msleep(20);
-+
-+      for (i = first_word; i <= last_word; i++) {
-+              netdev_dbg(net, "write to EEPROM at offset 0x%02x, data 0x%04x\n",
-+                         i, eeprom_buff[i - first_word]);
-+              ret = asix_write_cmd(dev, AX_CMD_WRITE_EEPROM, i,
-+                                   eeprom_buff[i - first_word], 0, NULL);
-+              if (ret < 0) {
-+                      netdev_err(net, "Failed to write EEPROM at offset 0x%02x.\n",
-+                                 i);
-+                      goto free;
-+              }
-+              msleep(20);
-+      }
-+
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_DISABLE, 0x0000, 0, 0, NULL);
-+      if (ret < 0) {
-+              netdev_err(net, "Failed to disable EEPROM write\n");
-+              goto free;
-+      }
-+
-+      ret = 0;
-+free:
-+      kfree(eeprom_buff);
-+      return ret;
-+}
-+
-+void asix_get_drvinfo(struct net_device *net, struct ethtool_drvinfo *info)
-+{
-+      /* Inherit standard device info */
-+      usbnet_get_drvinfo(net, info);
-+      strlcpy(info->driver, DRIVER_NAME, sizeof(info->driver));
-+      strlcpy(info->version, DRIVER_VERSION, sizeof(info->version));
-+      info->eedump_len = AX_EEPROM_LEN;
-+}
-+
-+int asix_set_mac_address(struct net_device *net, void *p)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct asix_data *data = (struct asix_data *)&dev->data;
-+      struct sockaddr *addr = p;
-+
-+      if (netif_running(net))
-+              return -EBUSY;
-+      if (!is_valid_ether_addr(addr->sa_data))
-+              return -EADDRNOTAVAIL;
-+
-+      memcpy(net->dev_addr, addr->sa_data, ETH_ALEN);
-+
-+      /* We use the 20 byte dev->data
-+       * for our 6 byte mac buffer
-+       * to avoid allocating memory that
-+       * is tricky to free later */
-+      memcpy(data->mac_addr, addr->sa_data, ETH_ALEN);
-+      asix_write_cmd_async(dev, AX_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN,
-+                                                      data->mac_addr);
-+
-+      return 0;
-+}
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/asix_devices.c backports-4.2.6-1/drivers/net/usb/asix_devices.c
---- backports-4.2.6-1.org/drivers/net/usb/asix_devices.c       1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/asix_devices.c   2016-06-28 14:35:17.965307221 +0200
-@@ -0,0 +1,1107 @@
-+/*
-+ * ASIX AX8817X based USB 2.0 Ethernet Devices
-+ * Copyright (C) 2003-2006 David Hollis <dhollis@davehollis.com>
-+ * Copyright (C) 2005 Phil Chang <pchang23@sbcglobal.net>
-+ * Copyright (C) 2006 James Painter <jamie.painter@iname.com>
-+ * Copyright (c) 2002-2003 TiVo Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include "asix.h"
-+
-+#define PHY_MODE_MARVELL      0x0000
-+#define MII_MARVELL_LED_CTRL  0x0018
-+#define MII_MARVELL_STATUS    0x001b
-+#define MII_MARVELL_CTRL      0x0014
-+
-+#define MARVELL_LED_MANUAL    0x0019
-+
-+#define MARVELL_STATUS_HWCFG  0x0004
-+
-+#define MARVELL_CTRL_TXDELAY  0x0002
-+#define MARVELL_CTRL_RXDELAY  0x0080
-+
-+#define       PHY_MODE_RTL8211CL      0x000C
-+
-+struct ax88172_int_data {
-+      __le16 res1;
-+      u8 link;
-+      __le16 res2;
-+      u8 status;
-+      __le16 res3;
-+} __packed;
-+
-+static void asix_status(struct usbnet *dev, struct urb *urb)
-+{
-+      struct ax88172_int_data *event;
-+      int link;
-+
-+      if (urb->actual_length < 8)
-+              return;
-+
-+      event = urb->transfer_buffer;
-+      link = event->link & 0x01;
-+      if (netif_carrier_ok(dev->net) != link) {
-+              usbnet_link_change(dev, link, 1);
-+              netdev_dbg(dev->net, "Link Status is: %d\n", link);
-+      }
-+}
-+
-+static void asix_set_netdev_dev_addr(struct usbnet *dev, u8 *addr)
-+{
-+      if (is_valid_ether_addr(addr)) {
-+              memcpy(dev->net->dev_addr, addr, ETH_ALEN);
-+      } else {
-+              netdev_info(dev->net, "invalid hw address, using random\n");
-+              eth_hw_addr_random(dev->net);
-+      }
-+}
-+
-+/* Get the PHY Identifier from the PHYSID1 & PHYSID2 MII registers */
-+static u32 asix_get_phyid(struct usbnet *dev)
-+{
-+      int phy_reg;
-+      u32 phy_id;
-+      int i;
-+
-+      /* Poll for the rare case the FW or phy isn't ready yet.  */
-+      for (i = 0; i < 100; i++) {
-+              phy_reg = asix_mdio_read(dev->net, dev->mii.phy_id, MII_PHYSID1);
-+              if (phy_reg != 0 && phy_reg != 0xFFFF)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      if (phy_reg <= 0 || phy_reg == 0xFFFF)
-+              return 0;
-+
-+      phy_id = (phy_reg & 0xffff) << 16;
-+
-+      phy_reg = asix_mdio_read(dev->net, dev->mii.phy_id, MII_PHYSID2);
-+      if (phy_reg < 0)
-+              return 0;
-+
-+      phy_id |= (phy_reg & 0xffff);
-+
-+      return phy_id;
-+}
-+
-+static u32 asix_get_link(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      return mii_link_ok(&dev->mii);
-+}
-+
-+static int asix_ioctl (struct net_device *net, struct ifreq *rq, int cmd)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
-+}
-+
-+/* We need to override some ethtool_ops so we require our
-+   own structure so we don't interfere with other usbnet
-+   devices that may be connected at the same time. */
-+static const struct ethtool_ops ax88172_ethtool_ops = {
-+      .get_drvinfo            = asix_get_drvinfo,
-+      .get_link               = asix_get_link,
-+      .get_msglevel           = usbnet_get_msglevel,
-+      .set_msglevel           = usbnet_set_msglevel,
-+      .get_wol                = asix_get_wol,
-+      .set_wol                = asix_set_wol,
-+      .get_eeprom_len         = asix_get_eeprom_len,
-+      .get_eeprom             = asix_get_eeprom,
-+      .set_eeprom             = asix_set_eeprom,
-+      .get_settings           = usbnet_get_settings,
-+      .set_settings           = usbnet_set_settings,
-+      .nway_reset             = usbnet_nway_reset,
-+};
-+
-+static void ax88172_set_multicast(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct asix_data *data = (struct asix_data *)&dev->data;
-+      u8 rx_ctl = 0x8c;
-+
-+      if (net->flags & IFF_PROMISC) {
-+              rx_ctl |= 0x01;
-+      } else if (net->flags & IFF_ALLMULTI ||
-+                 netdev_mc_count(net) > AX_MAX_MCAST) {
-+              rx_ctl |= 0x02;
-+      } else if (netdev_mc_empty(net)) {
-+              /* just broadcast and directed */
-+      } else {
-+              /* We use the 20 byte dev->data
-+               * for our 8 byte filter buffer
-+               * to avoid allocating memory that
-+               * is tricky to free later */
-+              struct netdev_hw_addr *ha;
-+              u32 crc_bits;
-+
-+              memset(data->multi_filter, 0, AX_MCAST_FILTER_SIZE);
-+
-+              /* Build the multicast hash filter. */
-+              netdev_for_each_mc_addr(ha, net) {
-+                      crc_bits = ether_crc(ETH_ALEN, ha->addr) >> 26;
-+                      data->multi_filter[crc_bits >> 3] |=
-+                          1 << (crc_bits & 7);
-+              }
-+
-+              asix_write_cmd_async(dev, AX_CMD_WRITE_MULTI_FILTER, 0, 0,
-+                                 AX_MCAST_FILTER_SIZE, data->multi_filter);
-+
-+              rx_ctl |= 0x10;
-+      }
-+
-+      asix_write_cmd_async(dev, AX_CMD_WRITE_RX_CTL, rx_ctl, 0, 0, NULL);
-+}
-+
-+static int ax88172_link_reset(struct usbnet *dev)
-+{
-+      u8 mode;
-+      struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
-+
-+      mii_check_media(&dev->mii, 1, 1);
-+      mii_ethtool_gset(&dev->mii, &ecmd);
-+      mode = AX88172_MEDIUM_DEFAULT;
-+
-+      if (ecmd.duplex != DUPLEX_FULL)
-+              mode |= ~AX88172_MEDIUM_FD;
-+
-+      netdev_dbg(dev->net, "ax88172_link_reset() speed: %u duplex: %d setting mode to 0x%04x\n",
-+                 ethtool_cmd_speed(&ecmd), ecmd.duplex, mode);
-+
-+      asix_write_medium_mode(dev, mode);
-+
-+      return 0;
-+}
-+
-+static const struct net_device_ops ax88172_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = usbnet_change_mtu,
-+      .ndo_set_mac_address    = eth_mac_addr,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = asix_ioctl,
-+      .ndo_set_rx_mode        = ax88172_set_multicast,
-+};
-+
-+static int ax88172_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int ret = 0;
-+      u8 buf[ETH_ALEN];
-+      int i;
-+      unsigned long gpio_bits = dev->driver_info->data;
-+
-+      usbnet_get_endpoints(dev,intf);
-+
-+      /* Toggle the GPIOs in a manufacturer/model specific way */
-+      for (i = 2; i >= 0; i--) {
-+              ret = asix_write_cmd(dev, AX_CMD_WRITE_GPIOS,
-+                              (gpio_bits >> (i * 8)) & 0xff, 0, 0, NULL);
-+              if (ret < 0)
-+                      goto out;
-+              msleep(5);
-+      }
-+
-+      ret = asix_write_rx_ctl(dev, 0x80);
-+      if (ret < 0)
-+              goto out;
-+
-+      /* Get the MAC address */
-+      ret = asix_read_cmd(dev, AX88172_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, buf);
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "read AX_CMD_READ_NODE_ID failed: %d\n",
-+                         ret);
-+              goto out;
-+      }
-+
-+      asix_set_netdev_dev_addr(dev, buf);
-+
-+      /* Initialize MII structure */
-+      dev->mii.dev = dev->net;
-+      dev->mii.mdio_read = asix_mdio_read;
-+      dev->mii.mdio_write = asix_mdio_write;
-+      dev->mii.phy_id_mask = 0x3f;
-+      dev->mii.reg_num_mask = 0x1f;
-+      dev->mii.phy_id = asix_get_phy_addr(dev);
-+
-+      dev->net->netdev_ops = &ax88172_netdev_ops;
-+      dev->net->ethtool_ops = &ax88172_ethtool_ops;
-+      dev->net->needed_headroom = 4; /* cf asix_tx_fixup() */
-+      dev->net->needed_tailroom = 4; /* cf asix_tx_fixup() */
-+
-+      asix_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET);
-+      asix_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE,
-+              ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP);
-+      mii_nway_restart(&dev->mii);
-+
-+      return 0;
-+
-+out:
-+      return ret;
-+}
-+
-+static const struct ethtool_ops ax88772_ethtool_ops = {
-+      .get_drvinfo            = asix_get_drvinfo,
-+      .get_link               = asix_get_link,
-+      .get_msglevel           = usbnet_get_msglevel,
-+      .set_msglevel           = usbnet_set_msglevel,
-+      .get_wol                = asix_get_wol,
-+      .set_wol                = asix_set_wol,
-+      .get_eeprom_len         = asix_get_eeprom_len,
-+      .get_eeprom             = asix_get_eeprom,
-+      .set_eeprom             = asix_set_eeprom,
-+      .get_settings           = usbnet_get_settings,
-+      .set_settings           = usbnet_set_settings,
-+      .nway_reset             = usbnet_nway_reset,
-+};
-+
-+static int ax88772_link_reset(struct usbnet *dev)
-+{
-+      u16 mode;
-+      struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
-+
-+      mii_check_media(&dev->mii, 1, 1);
-+      mii_ethtool_gset(&dev->mii, &ecmd);
-+      mode = AX88772_MEDIUM_DEFAULT;
-+
-+      if (ethtool_cmd_speed(&ecmd) != SPEED_100)
-+              mode &= ~AX_MEDIUM_PS;
-+
-+      if (ecmd.duplex != DUPLEX_FULL)
-+              mode &= ~AX_MEDIUM_FD;
-+
-+      netdev_dbg(dev->net, "ax88772_link_reset() speed: %u duplex: %d setting mode to 0x%04x\n",
-+                 ethtool_cmd_speed(&ecmd), ecmd.duplex, mode);
-+
-+      asix_write_medium_mode(dev, mode);
-+
-+      return 0;
-+}
-+
-+static int ax88772_reset(struct usbnet *dev)
-+{
-+      struct asix_data *data = (struct asix_data *)&dev->data;
-+      int ret, embd_phy;
-+      u16 rx_ctl;
-+
-+      ret = asix_write_gpio(dev,
-+                      AX_GPIO_RSE | AX_GPIO_GPO_2 | AX_GPIO_GPO2EN, 5);
-+      if (ret < 0)
-+              goto out;
-+
-+      embd_phy = ((asix_get_phy_addr(dev) & 0x1f) == 0x10 ? 1 : 0);
-+
-+      ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL);
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret);
-+              goto out;
-+      }
-+
-+      ret = asix_sw_reset(dev, AX_SWRESET_IPPD | AX_SWRESET_PRL);
-+      if (ret < 0)
-+              goto out;
-+
-+      msleep(150);
-+
-+      ret = asix_sw_reset(dev, AX_SWRESET_CLEAR);
-+      if (ret < 0)
-+              goto out;
-+
-+      msleep(150);
-+
-+      if (embd_phy) {
-+              ret = asix_sw_reset(dev, AX_SWRESET_IPRL);
-+              if (ret < 0)
-+                      goto out;
-+      } else {
-+              ret = asix_sw_reset(dev, AX_SWRESET_PRTE);
-+              if (ret < 0)
-+                      goto out;
-+      }
-+
-+      msleep(150);
-+      rx_ctl = asix_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl);
-+      ret = asix_write_rx_ctl(dev, 0x0000);
-+      if (ret < 0)
-+              goto out;
-+
-+      rx_ctl = asix_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl);
-+
-+      ret = asix_sw_reset(dev, AX_SWRESET_PRL);
-+      if (ret < 0)
-+              goto out;
-+
-+      msleep(150);
-+
-+      ret = asix_sw_reset(dev, AX_SWRESET_IPRL | AX_SWRESET_PRL);
-+      if (ret < 0)
-+              goto out;
-+
-+      msleep(150);
-+
-+      asix_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET);
-+      asix_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE,
-+                      ADVERTISE_ALL | ADVERTISE_CSMA);
-+      mii_nway_restart(&dev->mii);
-+
-+      ret = asix_write_medium_mode(dev, AX88772_MEDIUM_DEFAULT);
-+      if (ret < 0)
-+              goto out;
-+
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_IPG0,
-+                              AX88772_IPG0_DEFAULT | AX88772_IPG1_DEFAULT,
-+                              AX88772_IPG2_DEFAULT, 0, NULL);
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "Write IPG,IPG1,IPG2 failed: %d\n", ret);
-+              goto out;
-+      }
-+
-+      /* Rewrite MAC address */
-+      memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN);
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN,
-+                                                      data->mac_addr);
-+      if (ret < 0)
-+              goto out;
-+
-+      /* Set RX_CTL to default values with 2k buffer, and enable cactus */
-+      ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL);
-+      if (ret < 0)
-+              goto out;
-+
-+      rx_ctl = asix_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x after all initializations\n",
-+                 rx_ctl);
-+
-+      rx_ctl = asix_read_medium_status(dev);
-+      netdev_dbg(dev->net,
-+                 "Medium Status is 0x%04x after all initializations\n",
-+                 rx_ctl);
-+
-+      return 0;
-+
-+out:
-+      return ret;
-+
-+}
-+
-+static const struct net_device_ops ax88772_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = usbnet_change_mtu,
-+      .ndo_set_mac_address    = asix_set_mac_address,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = asix_ioctl,
-+      .ndo_set_rx_mode        = asix_set_multicast,
-+};
-+
-+static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int ret, embd_phy, i;
-+      u8 buf[ETH_ALEN];
-+      u32 phyid;
-+
-+      usbnet_get_endpoints(dev,intf);
-+
-+      /* Get the MAC address */
-+      if (dev->driver_info->data & FLAG_EEPROM_MAC) {
-+              for (i = 0; i < (ETH_ALEN >> 1); i++) {
-+                      ret = asix_read_cmd(dev, AX_CMD_READ_EEPROM, 0x04 + i,
-+                                      0, 2, buf + i * 2);
-+                      if (ret < 0)
-+                              break;
-+              }
-+      } else {
-+              ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID,
-+                              0, 0, ETH_ALEN, buf);
-+      }
-+
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret);
-+              return ret;
-+      }
-+
-+      asix_set_netdev_dev_addr(dev, buf);
-+
-+      /* Initialize MII structure */
-+      dev->mii.dev = dev->net;
-+      dev->mii.mdio_read = asix_mdio_read;
-+      dev->mii.mdio_write = asix_mdio_write;
-+      dev->mii.phy_id_mask = 0x1f;
-+      dev->mii.reg_num_mask = 0x1f;
-+      dev->mii.phy_id = asix_get_phy_addr(dev);
-+
-+      dev->net->netdev_ops = &ax88772_netdev_ops;
-+      dev->net->ethtool_ops = &ax88772_ethtool_ops;
-+      dev->net->needed_headroom = 4; /* cf asix_tx_fixup() */
-+      dev->net->needed_tailroom = 4; /* cf asix_tx_fixup() */
-+
-+      embd_phy = ((dev->mii.phy_id & 0x1f) == 0x10 ? 1 : 0);
-+
-+      /* Reset the PHY to normal operation mode */
-+      ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL);
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ax88772_reset(dev);
-+
-+      /* Read PHYID register *AFTER* the PHY was reset properly */
-+      phyid = asix_get_phyid(dev);
-+      netdev_dbg(dev->net, "PHYID=0x%08x\n", phyid);
-+
-+      /* Asix framing packs multiple eth frames into a 2K usb bulk transfer */
-+      if (dev->driver_info->flags & FLAG_FRAMING_AX) {
-+              /* hard_mtu  is still the default - the device does not support
-+                 jumbo eth frames */
-+              dev->rx_urb_size = 2048;
-+      }
-+
-+      dev->driver_priv = kzalloc(sizeof(struct asix_common_private), GFP_KERNEL);
-+      if (!dev->driver_priv)
-+              return -ENOMEM;
-+
-+      return 0;
-+}
-+
-+static void ax88772_unbind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      kfree(dev->driver_priv);
-+}
-+
-+static const struct ethtool_ops ax88178_ethtool_ops = {
-+      .get_drvinfo            = asix_get_drvinfo,
-+      .get_link               = asix_get_link,
-+      .get_msglevel           = usbnet_get_msglevel,
-+      .set_msglevel           = usbnet_set_msglevel,
-+      .get_wol                = asix_get_wol,
-+      .set_wol                = asix_set_wol,
-+      .get_eeprom_len         = asix_get_eeprom_len,
-+      .get_eeprom             = asix_get_eeprom,
-+      .set_eeprom             = asix_set_eeprom,
-+      .get_settings           = usbnet_get_settings,
-+      .set_settings           = usbnet_set_settings,
-+      .nway_reset             = usbnet_nway_reset,
-+};
-+
-+static int marvell_phy_init(struct usbnet *dev)
-+{
-+      struct asix_data *data = (struct asix_data *)&dev->data;
-+      u16 reg;
-+
-+      netdev_dbg(dev->net, "marvell_phy_init()\n");
-+
-+      reg = asix_mdio_read(dev->net, dev->mii.phy_id, MII_MARVELL_STATUS);
-+      netdev_dbg(dev->net, "MII_MARVELL_STATUS = 0x%04x\n", reg);
-+
-+      asix_mdio_write(dev->net, dev->mii.phy_id, MII_MARVELL_CTRL,
-+                      MARVELL_CTRL_RXDELAY | MARVELL_CTRL_TXDELAY);
-+
-+      if (data->ledmode) {
-+              reg = asix_mdio_read(dev->net, dev->mii.phy_id,
-+                      MII_MARVELL_LED_CTRL);
-+              netdev_dbg(dev->net, "MII_MARVELL_LED_CTRL (1) = 0x%04x\n", reg);
-+
-+              reg &= 0xf8ff;
-+              reg |= (1 + 0x0100);
-+              asix_mdio_write(dev->net, dev->mii.phy_id,
-+                      MII_MARVELL_LED_CTRL, reg);
-+
-+              reg = asix_mdio_read(dev->net, dev->mii.phy_id,
-+                      MII_MARVELL_LED_CTRL);
-+              netdev_dbg(dev->net, "MII_MARVELL_LED_CTRL (2) = 0x%04x\n", reg);
-+              reg &= 0xfc0f;
-+      }
-+
-+      return 0;
-+}
-+
-+static int rtl8211cl_phy_init(struct usbnet *dev)
-+{
-+      struct asix_data *data = (struct asix_data *)&dev->data;
-+
-+      netdev_dbg(dev->net, "rtl8211cl_phy_init()\n");
-+
-+      asix_mdio_write (dev->net, dev->mii.phy_id, 0x1f, 0x0005);
-+      asix_mdio_write (dev->net, dev->mii.phy_id, 0x0c, 0);
-+      asix_mdio_write (dev->net, dev->mii.phy_id, 0x01,
-+              asix_mdio_read (dev->net, dev->mii.phy_id, 0x01) | 0x0080);
-+      asix_mdio_write (dev->net, dev->mii.phy_id, 0x1f, 0);
-+
-+      if (data->ledmode == 12) {
-+              asix_mdio_write (dev->net, dev->mii.phy_id, 0x1f, 0x0002);
-+              asix_mdio_write (dev->net, dev->mii.phy_id, 0x1a, 0x00cb);
-+              asix_mdio_write (dev->net, dev->mii.phy_id, 0x1f, 0);
-+      }
-+
-+      return 0;
-+}
-+
-+static int marvell_led_status(struct usbnet *dev, u16 speed)
-+{
-+      u16 reg = asix_mdio_read(dev->net, dev->mii.phy_id, MARVELL_LED_MANUAL);
-+
-+      netdev_dbg(dev->net, "marvell_led_status() read 0x%04x\n", reg);
-+
-+      /* Clear out the center LED bits - 0x03F0 */
-+      reg &= 0xfc0f;
-+
-+      switch (speed) {
-+              case SPEED_1000:
-+                      reg |= 0x03e0;
-+                      break;
-+              case SPEED_100:
-+                      reg |= 0x03b0;
-+                      break;
-+              default:
-+                      reg |= 0x02f0;
-+      }
-+
-+      netdev_dbg(dev->net, "marvell_led_status() writing 0x%04x\n", reg);
-+      asix_mdio_write(dev->net, dev->mii.phy_id, MARVELL_LED_MANUAL, reg);
-+
-+      return 0;
-+}
-+
-+static int ax88178_reset(struct usbnet *dev)
-+{
-+      struct asix_data *data = (struct asix_data *)&dev->data;
-+      int ret;
-+      __le16 eeprom;
-+      u8 status;
-+      int gpio0 = 0;
-+      u32 phyid;
-+
-+      asix_read_cmd(dev, AX_CMD_READ_GPIOS, 0, 0, 1, &status);
-+      netdev_dbg(dev->net, "GPIO Status: 0x%04x\n", status);
-+
-+      asix_write_cmd(dev, AX_CMD_WRITE_ENABLE, 0, 0, 0, NULL);
-+      asix_read_cmd(dev, AX_CMD_READ_EEPROM, 0x0017, 0, 2, &eeprom);
-+      asix_write_cmd(dev, AX_CMD_WRITE_DISABLE, 0, 0, 0, NULL);
-+
-+      netdev_dbg(dev->net, "EEPROM index 0x17 is 0x%04x\n", eeprom);
-+
-+      if (eeprom == cpu_to_le16(0xffff)) {
-+              data->phymode = PHY_MODE_MARVELL;
-+              data->ledmode = 0;
-+              gpio0 = 1;
-+      } else {
-+              data->phymode = le16_to_cpu(eeprom) & 0x7F;
-+              data->ledmode = le16_to_cpu(eeprom) >> 8;
-+              gpio0 = (le16_to_cpu(eeprom) & 0x80) ? 0 : 1;
-+      }
-+      netdev_dbg(dev->net, "GPIO0: %d, PhyMode: %d\n", gpio0, data->phymode);
-+
-+      /* Power up external GigaPHY through AX88178 GPIO pin */
-+      asix_write_gpio(dev, AX_GPIO_RSE | AX_GPIO_GPO_1 | AX_GPIO_GPO1EN, 40);
-+      if ((le16_to_cpu(eeprom) >> 8) != 1) {
-+              asix_write_gpio(dev, 0x003c, 30);
-+              asix_write_gpio(dev, 0x001c, 300);
-+              asix_write_gpio(dev, 0x003c, 30);
-+      } else {
-+              netdev_dbg(dev->net, "gpio phymode == 1 path\n");
-+              asix_write_gpio(dev, AX_GPIO_GPO1EN, 30);
-+              asix_write_gpio(dev, AX_GPIO_GPO1EN | AX_GPIO_GPO_1, 30);
-+      }
-+
-+      /* Read PHYID register *AFTER* powering up PHY */
-+      phyid = asix_get_phyid(dev);
-+      netdev_dbg(dev->net, "PHYID=0x%08x\n", phyid);
-+
-+      /* Set AX88178 to enable MII/GMII/RGMII interface for external PHY */
-+      asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT, 0, 0, 0, NULL);
-+
-+      asix_sw_reset(dev, 0);
-+      msleep(150);
-+
-+      asix_sw_reset(dev, AX_SWRESET_PRL | AX_SWRESET_IPPD);
-+      msleep(150);
-+
-+      asix_write_rx_ctl(dev, 0);
-+
-+      if (data->phymode == PHY_MODE_MARVELL) {
-+              marvell_phy_init(dev);
-+              msleep(60);
-+      } else if (data->phymode == PHY_MODE_RTL8211CL)
-+              rtl8211cl_phy_init(dev);
-+
-+      asix_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR,
-+                      BMCR_RESET | BMCR_ANENABLE);
-+      asix_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE,
-+                      ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP);
-+      asix_mdio_write(dev->net, dev->mii.phy_id, MII_CTRL1000,
-+                      ADVERTISE_1000FULL);
-+
-+      mii_nway_restart(&dev->mii);
-+
-+      ret = asix_write_medium_mode(dev, AX88178_MEDIUM_DEFAULT);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* Rewrite MAC address */
-+      memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN);
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN,
-+                                                      data->mac_addr);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL);
-+      if (ret < 0)
-+              return ret;
-+
-+      return 0;
-+}
-+
-+static int ax88178_link_reset(struct usbnet *dev)
-+{
-+      u16 mode;
-+      struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
-+      struct asix_data *data = (struct asix_data *)&dev->data;
-+      u32 speed;
-+
-+      netdev_dbg(dev->net, "ax88178_link_reset()\n");
-+
-+      mii_check_media(&dev->mii, 1, 1);
-+      mii_ethtool_gset(&dev->mii, &ecmd);
-+      mode = AX88178_MEDIUM_DEFAULT;
-+      speed = ethtool_cmd_speed(&ecmd);
-+
-+      if (speed == SPEED_1000)
-+              mode |= AX_MEDIUM_GM;
-+      else if (speed == SPEED_100)
-+              mode |= AX_MEDIUM_PS;
-+      else
-+              mode &= ~(AX_MEDIUM_PS | AX_MEDIUM_GM);
-+
-+      mode |= AX_MEDIUM_ENCK;
-+
-+      if (ecmd.duplex == DUPLEX_FULL)
-+              mode |= AX_MEDIUM_FD;
-+      else
-+              mode &= ~AX_MEDIUM_FD;
-+
-+      netdev_dbg(dev->net, "ax88178_link_reset() speed: %u duplex: %d setting mode to 0x%04x\n",
-+                 speed, ecmd.duplex, mode);
-+
-+      asix_write_medium_mode(dev, mode);
-+
-+      if (data->phymode == PHY_MODE_MARVELL && data->ledmode)
-+              marvell_led_status(dev, speed);
-+
-+      return 0;
-+}
-+
-+static void ax88178_set_mfb(struct usbnet *dev)
-+{
-+      u16 mfb = AX_RX_CTL_MFB_16384;
-+      u16 rxctl;
-+      u16 medium;
-+      int old_rx_urb_size = dev->rx_urb_size;
-+
-+      if (dev->hard_mtu < 2048) {
-+              dev->rx_urb_size = 2048;
-+              mfb = AX_RX_CTL_MFB_2048;
-+      } else if (dev->hard_mtu < 4096) {
-+              dev->rx_urb_size = 4096;
-+              mfb = AX_RX_CTL_MFB_4096;
-+      } else if (dev->hard_mtu < 8192) {
-+              dev->rx_urb_size = 8192;
-+              mfb = AX_RX_CTL_MFB_8192;
-+      } else if (dev->hard_mtu < 16384) {
-+              dev->rx_urb_size = 16384;
-+              mfb = AX_RX_CTL_MFB_16384;
-+      }
-+
-+      rxctl = asix_read_rx_ctl(dev);
-+      asix_write_rx_ctl(dev, (rxctl & ~AX_RX_CTL_MFB_16384) | mfb);
-+
-+      medium = asix_read_medium_status(dev);
-+      if (dev->net->mtu > 1500)
-+              medium |= AX_MEDIUM_JFE;
-+      else
-+              medium &= ~AX_MEDIUM_JFE;
-+      asix_write_medium_mode(dev, medium);
-+
-+      if (dev->rx_urb_size > old_rx_urb_size)
-+              usbnet_unlink_rx_urbs(dev);
-+}
-+
-+static int ax88178_change_mtu(struct net_device *net, int new_mtu)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      int ll_mtu = new_mtu + net->hard_header_len + 4;
-+
-+      netdev_dbg(dev->net, "ax88178_change_mtu() new_mtu=%d\n", new_mtu);
-+
-+      if (new_mtu <= 0 || ll_mtu > 16384)
-+              return -EINVAL;
-+
-+      if ((ll_mtu % dev->maxpacket) == 0)
-+              return -EDOM;
-+
-+      net->mtu = new_mtu;
-+      dev->hard_mtu = net->mtu + net->hard_header_len;
-+      ax88178_set_mfb(dev);
-+
-+      /* max qlen depend on hard_mtu and rx_urb_size */
-+      usbnet_update_max_qlen(dev);
-+
-+      return 0;
-+}
-+
-+static const struct net_device_ops ax88178_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_set_mac_address    = asix_set_mac_address,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_set_rx_mode        = asix_set_multicast,
-+      .ndo_do_ioctl           = asix_ioctl,
-+      .ndo_change_mtu         = ax88178_change_mtu,
-+};
-+
-+static int ax88178_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int ret;
-+      u8 buf[ETH_ALEN];
-+
-+      usbnet_get_endpoints(dev,intf);
-+
-+      /* Get the MAC address */
-+      ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, buf);
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret);
-+              return ret;
-+      }
-+
-+      asix_set_netdev_dev_addr(dev, buf);
-+
-+      /* Initialize MII structure */
-+      dev->mii.dev = dev->net;
-+      dev->mii.mdio_read = asix_mdio_read;
-+      dev->mii.mdio_write = asix_mdio_write;
-+      dev->mii.phy_id_mask = 0x1f;
-+      dev->mii.reg_num_mask = 0xff;
-+      dev->mii.supports_gmii = 1;
-+      dev->mii.phy_id = asix_get_phy_addr(dev);
-+
-+      dev->net->netdev_ops = &ax88178_netdev_ops;
-+      dev->net->ethtool_ops = &ax88178_ethtool_ops;
-+
-+      /* Blink LEDS so users know driver saw dongle */
-+      asix_sw_reset(dev, 0);
-+      msleep(150);
-+
-+      asix_sw_reset(dev, AX_SWRESET_PRL | AX_SWRESET_IPPD);
-+      msleep(150);
-+
-+      /* Asix framing packs multiple eth frames into a 2K usb bulk transfer */
-+      if (dev->driver_info->flags & FLAG_FRAMING_AX) {
-+              /* hard_mtu  is still the default - the device does not support
-+                 jumbo eth frames */
-+              dev->rx_urb_size = 2048;
-+      }
-+
-+      dev->driver_priv = kzalloc(sizeof(struct asix_common_private), GFP_KERNEL);
-+      if (!dev->driver_priv)
-+                      return -ENOMEM;
-+
-+      return 0;
-+}
-+
-+static const struct driver_info ax8817x_info = {
-+      .description = "ASIX AX8817x USB 2.0 Ethernet",
-+      .bind = ax88172_bind,
-+      .status = asix_status,
-+      .link_reset = ax88172_link_reset,
-+      .reset = ax88172_link_reset,
-+      .flags =  FLAG_ETHER | FLAG_LINK_INTR,
-+      .data = 0x00130103,
-+};
-+
-+static const struct driver_info dlink_dub_e100_info = {
-+      .description = "DLink DUB-E100 USB Ethernet",
-+      .bind = ax88172_bind,
-+      .status = asix_status,
-+      .link_reset = ax88172_link_reset,
-+      .reset = ax88172_link_reset,
-+      .flags =  FLAG_ETHER | FLAG_LINK_INTR,
-+      .data = 0x009f9d9f,
-+};
-+
-+static const struct driver_info netgear_fa120_info = {
-+      .description = "Netgear FA-120 USB Ethernet",
-+      .bind = ax88172_bind,
-+      .status = asix_status,
-+      .link_reset = ax88172_link_reset,
-+      .reset = ax88172_link_reset,
-+      .flags =  FLAG_ETHER | FLAG_LINK_INTR,
-+      .data = 0x00130103,
-+};
-+
-+static const struct driver_info hawking_uf200_info = {
-+      .description = "Hawking UF200 USB Ethernet",
-+      .bind = ax88172_bind,
-+      .status = asix_status,
-+      .link_reset = ax88172_link_reset,
-+      .reset = ax88172_link_reset,
-+      .flags =  FLAG_ETHER | FLAG_LINK_INTR,
-+      .data = 0x001f1d1f,
-+};
-+
-+static const struct driver_info ax88772_info = {
-+      .description = "ASIX AX88772 USB 2.0 Ethernet",
-+      .bind = ax88772_bind,
-+      .unbind = ax88772_unbind,
-+      .status = asix_status,
-+      .link_reset = ax88772_link_reset,
-+      .reset = ax88772_link_reset,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR | FLAG_MULTI_PACKET,
-+      .rx_fixup = asix_rx_fixup_common,
-+      .tx_fixup = asix_tx_fixup,
-+};
-+
-+static const struct driver_info ax88772b_info = {
-+      .description = "ASIX AX88772B USB 2.0 Ethernet",
-+      .bind = ax88772_bind,
-+      .unbind = ax88772_unbind,
-+      .status = asix_status,
-+      .link_reset = ax88772_link_reset,
-+      .reset = ax88772_reset,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR |
-+               FLAG_MULTI_PACKET,
-+      .rx_fixup = asix_rx_fixup_common,
-+      .tx_fixup = asix_tx_fixup,
-+      .data = FLAG_EEPROM_MAC,
-+};
-+
-+static const struct driver_info ax88178_info = {
-+      .description = "ASIX AX88178 USB 2.0 Ethernet",
-+      .bind = ax88178_bind,
-+      .unbind = ax88772_unbind,
-+      .status = asix_status,
-+      .link_reset = ax88178_link_reset,
-+      .reset = ax88178_reset,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR |
-+               FLAG_MULTI_PACKET,
-+      .rx_fixup = asix_rx_fixup_common,
-+      .tx_fixup = asix_tx_fixup,
-+};
-+
-+/*
-+ * USBLINK 20F9 "USB 2.0 LAN" USB ethernet adapter, typically found in
-+ * no-name packaging.
-+ * USB device strings are:
-+ *   1: Manufacturer: USBLINK
-+ *   2: Product: HG20F9 USB2.0
-+ *   3: Serial: 000003
-+ * Appears to be compatible with Asix 88772B.
-+ */
-+static const struct driver_info hg20f9_info = {
-+      .description = "HG20F9 USB 2.0 Ethernet",
-+      .bind = ax88772_bind,
-+      .unbind = ax88772_unbind,
-+      .status = asix_status,
-+      .link_reset = ax88772_link_reset,
-+      .reset = ax88772_reset,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR |
-+               FLAG_MULTI_PACKET,
-+      .rx_fixup = asix_rx_fixup_common,
-+      .tx_fixup = asix_tx_fixup,
-+      .data = FLAG_EEPROM_MAC,
-+};
-+
-+static const struct usb_device_id     products [] = {
-+{
-+      // Linksys USB200M
-+      USB_DEVICE (0x077b, 0x2226),
-+      .driver_info =  (unsigned long) &ax8817x_info,
-+}, {
-+      // Netgear FA120
-+      USB_DEVICE (0x0846, 0x1040),
-+      .driver_info =  (unsigned long) &netgear_fa120_info,
-+}, {
-+      // DLink DUB-E100
-+      USB_DEVICE (0x2001, 0x1a00),
-+      .driver_info =  (unsigned long) &dlink_dub_e100_info,
-+}, {
-+      // Intellinet, ST Lab USB Ethernet
-+      USB_DEVICE (0x0b95, 0x1720),
-+      .driver_info =  (unsigned long) &ax8817x_info,
-+}, {
-+      // Hawking UF200, TrendNet TU2-ET100
-+      USB_DEVICE (0x07b8, 0x420a),
-+      .driver_info =  (unsigned long) &hawking_uf200_info,
-+}, {
-+      // Billionton Systems, USB2AR
-+      USB_DEVICE (0x08dd, 0x90ff),
-+      .driver_info =  (unsigned long) &ax8817x_info,
-+}, {
-+      // ATEN UC210T
-+      USB_DEVICE (0x0557, 0x2009),
-+      .driver_info =  (unsigned long) &ax8817x_info,
-+}, {
-+      // Buffalo LUA-U2-KTX
-+      USB_DEVICE (0x0411, 0x003d),
-+      .driver_info =  (unsigned long) &ax8817x_info,
-+}, {
-+      // Buffalo LUA-U2-GT 10/100/1000
-+      USB_DEVICE (0x0411, 0x006e),
-+      .driver_info =  (unsigned long) &ax88178_info,
-+}, {
-+      // Sitecom LN-029 "USB 2.0 10/100 Ethernet adapter"
-+      USB_DEVICE (0x6189, 0x182d),
-+      .driver_info =  (unsigned long) &ax8817x_info,
-+}, {
-+      // Sitecom LN-031 "USB 2.0 10/100/1000 Ethernet adapter"
-+      USB_DEVICE (0x0df6, 0x0056),
-+      .driver_info =  (unsigned long) &ax88178_info,
-+}, {
-+      // Sitecom LN-028 "USB 2.0 10/100/1000 Ethernet adapter"
-+      USB_DEVICE (0x0df6, 0x061c),
-+      .driver_info =  (unsigned long) &ax88178_info,
-+}, {
-+      // corega FEther USB2-TX
-+      USB_DEVICE (0x07aa, 0x0017),
-+      .driver_info =  (unsigned long) &ax8817x_info,
-+}, {
-+      // Surecom EP-1427X-2
-+      USB_DEVICE (0x1189, 0x0893),
-+      .driver_info = (unsigned long) &ax8817x_info,
-+}, {
-+      // goodway corp usb gwusb2e
-+      USB_DEVICE (0x1631, 0x6200),
-+      .driver_info = (unsigned long) &ax8817x_info,
-+}, {
-+      // JVC MP-PRX1 Port Replicator
-+      USB_DEVICE (0x04f1, 0x3008),
-+      .driver_info = (unsigned long) &ax8817x_info,
-+}, {
-+      // Lenovo U2L100P 10/100
-+      USB_DEVICE (0x17ef, 0x7203),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      // ASIX AX88772B 10/100
-+      USB_DEVICE (0x0b95, 0x772b),
-+      .driver_info = (unsigned long) &ax88772b_info,
-+}, {
-+      // ASIX AX88772 10/100
-+      USB_DEVICE (0x0b95, 0x7720),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      // ASIX AX88178 10/100/1000
-+      USB_DEVICE (0x0b95, 0x1780),
-+      .driver_info = (unsigned long) &ax88178_info,
-+}, {
-+      // Logitec LAN-GTJ/U2A
-+      USB_DEVICE (0x0789, 0x0160),
-+      .driver_info = (unsigned long) &ax88178_info,
-+}, {
-+      // Linksys USB200M Rev 2
-+      USB_DEVICE (0x13b1, 0x0018),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      // 0Q0 cable ethernet
-+      USB_DEVICE (0x1557, 0x7720),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      // DLink DUB-E100 H/W Ver B1
-+      USB_DEVICE (0x07d1, 0x3c05),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      // DLink DUB-E100 H/W Ver B1 Alternate
-+      USB_DEVICE (0x2001, 0x3c05),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+       // DLink DUB-E100 H/W Ver C1
-+       USB_DEVICE (0x2001, 0x1a02),
-+       .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      // Linksys USB1000
-+      USB_DEVICE (0x1737, 0x0039),
-+      .driver_info = (unsigned long) &ax88178_info,
-+}, {
-+      // IO-DATA ETG-US2
-+      USB_DEVICE (0x04bb, 0x0930),
-+      .driver_info = (unsigned long) &ax88178_info,
-+}, {
-+      // Belkin F5D5055
-+      USB_DEVICE(0x050d, 0x5055),
-+      .driver_info = (unsigned long) &ax88178_info,
-+}, {
-+      // Apple USB Ethernet Adapter
-+      USB_DEVICE(0x05ac, 0x1402),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      // Cables-to-Go USB Ethernet Adapter
-+      USB_DEVICE(0x0b95, 0x772a),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      // ABOCOM for pci
-+      USB_DEVICE(0x14ea, 0xab11),
-+      .driver_info = (unsigned long) &ax88178_info,
-+}, {
-+      // ASIX 88772a
-+      USB_DEVICE(0x0db0, 0xa877),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      // Asus USB Ethernet Adapter
-+      USB_DEVICE (0x0b95, 0x7e2b),
-+      .driver_info = (unsigned long) &ax88772_info,
-+}, {
-+      /* ASIX 88172a demo board */
-+      USB_DEVICE(0x0b95, 0x172a),
-+      .driver_info = (unsigned long) &ax88172a_info,
-+}, {
-+      /*
-+       * USBLINK HG20F9 "USB 2.0 LAN"
-+       * Appears to have gazumped Linksys's manufacturer ID but
-+       * doesn't (yet) conflict with any known Linksys product.
-+       */
-+      USB_DEVICE(0x066b, 0x20f9),
-+      .driver_info = (unsigned long) &hg20f9_info,
-+},
-+      { },            // END
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver asix_driver = {
-+      .name =         DRIVER_NAME,
-+      .id_table =     products,
-+      .probe =        usbnet_probe,
-+      .suspend =      usbnet_suspend,
-+      .resume =       usbnet_resume,
-+      .disconnect =   usbnet_disconnect,
-+      .supports_autosuspend = 1,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(asix_driver);
-+
-+MODULE_AUTHOR("David Hollis");
-+MODULE_VERSION(DRIVER_VERSION);
-+MODULE_DESCRIPTION("ASIX AX8817X based USB 2.0 Ethernet Devices");
-+MODULE_LICENSE("GPL");
-+
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/asix.h backports-4.2.6-1/drivers/net/usb/asix.h
---- backports-4.2.6-1.org/drivers/net/usb/asix.h       1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/asix.h   2016-06-28 14:35:17.965307221 +0200
-@@ -0,0 +1,234 @@
-+/*
-+ * ASIX AX8817X based USB 2.0 Ethernet Devices
-+ * Copyright (C) 2003-2006 David Hollis <dhollis@davehollis.com>
-+ * Copyright (C) 2005 Phil Chang <pchang23@sbcglobal.net>
-+ * Copyright (C) 2006 James Painter <jamie.painter@iname.com>
-+ * Copyright (c) 2002-2003 TiVo Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#ifndef _ASIX_H
-+#define _ASIX_H
-+
-+// #define    DEBUG                   // error path messages, extra info
-+// #define    VERBOSE                 // more; success messages
-+
-+#include <linux/module.h>
-+#include <linux/kmod.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/crc32.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/slab.h>
-+#include <linux/if_vlan.h>
-+
-+#define DRIVER_VERSION "22-Dec-2011"
-+#define DRIVER_NAME "asix"
-+
-+/* ASIX AX8817X based USB 2.0 Ethernet Devices */
-+
-+#define AX_CMD_SET_SW_MII             0x06
-+#define AX_CMD_READ_MII_REG           0x07
-+#define AX_CMD_WRITE_MII_REG          0x08
-+#define AX_CMD_SET_HW_MII             0x0a
-+#define AX_CMD_READ_EEPROM            0x0b
-+#define AX_CMD_WRITE_EEPROM           0x0c
-+#define AX_CMD_WRITE_ENABLE           0x0d
-+#define AX_CMD_WRITE_DISABLE          0x0e
-+#define AX_CMD_READ_RX_CTL            0x0f
-+#define AX_CMD_WRITE_RX_CTL           0x10
-+#define AX_CMD_READ_IPG012            0x11
-+#define AX_CMD_WRITE_IPG0             0x12
-+#define AX_CMD_WRITE_IPG1             0x13
-+#define AX_CMD_READ_NODE_ID           0x13
-+#define AX_CMD_WRITE_NODE_ID          0x14
-+#define AX_CMD_WRITE_IPG2             0x14
-+#define AX_CMD_WRITE_MULTI_FILTER     0x16
-+#define AX88172_CMD_READ_NODE_ID      0x17
-+#define AX_CMD_READ_PHY_ID            0x19
-+#define AX_CMD_READ_MEDIUM_STATUS     0x1a
-+#define AX_CMD_WRITE_MEDIUM_MODE      0x1b
-+#define AX_CMD_READ_MONITOR_MODE      0x1c
-+#define AX_CMD_WRITE_MONITOR_MODE     0x1d
-+#define AX_CMD_READ_GPIOS             0x1e
-+#define AX_CMD_WRITE_GPIOS            0x1f
-+#define AX_CMD_SW_RESET                       0x20
-+#define AX_CMD_SW_PHY_STATUS          0x21
-+#define AX_CMD_SW_PHY_SELECT          0x22
-+
-+#define AX_PHY_SELECT_MASK            (BIT(3) | BIT(2))
-+#define AX_PHY_SELECT_INTERNAL                0
-+#define AX_PHY_SELECT_EXTERNAL                BIT(2)
-+
-+#define AX_MONITOR_MODE                       0x01
-+#define AX_MONITOR_LINK                       0x02
-+#define AX_MONITOR_MAGIC              0x04
-+#define AX_MONITOR_HSFS                       0x10
-+
-+/* AX88172 Medium Status Register values */
-+#define AX88172_MEDIUM_FD             0x02
-+#define AX88172_MEDIUM_TX             0x04
-+#define AX88172_MEDIUM_FC             0x10
-+#define AX88172_MEDIUM_DEFAULT \
-+              ( AX88172_MEDIUM_FD | AX88172_MEDIUM_TX | AX88172_MEDIUM_FC )
-+
-+#define AX_MCAST_FILTER_SIZE          8
-+#define AX_MAX_MCAST                  64
-+
-+#define AX_SWRESET_CLEAR              0x00
-+#define AX_SWRESET_RR                 0x01
-+#define AX_SWRESET_RT                 0x02
-+#define AX_SWRESET_PRTE                       0x04
-+#define AX_SWRESET_PRL                        0x08
-+#define AX_SWRESET_BZ                 0x10
-+#define AX_SWRESET_IPRL                       0x20
-+#define AX_SWRESET_IPPD                       0x40
-+
-+#define AX88772_IPG0_DEFAULT          0x15
-+#define AX88772_IPG1_DEFAULT          0x0c
-+#define AX88772_IPG2_DEFAULT          0x12
-+
-+/* AX88772 & AX88178 Medium Mode Register */
-+#define AX_MEDIUM_PF          0x0080
-+#define AX_MEDIUM_JFE         0x0040
-+#define AX_MEDIUM_TFC         0x0020
-+#define AX_MEDIUM_RFC         0x0010
-+#define AX_MEDIUM_ENCK                0x0008
-+#define AX_MEDIUM_AC          0x0004
-+#define AX_MEDIUM_FD          0x0002
-+#define AX_MEDIUM_GM          0x0001
-+#define AX_MEDIUM_SM          0x1000
-+#define AX_MEDIUM_SBP         0x0800
-+#define AX_MEDIUM_PS          0x0200
-+#define AX_MEDIUM_RE          0x0100
-+
-+#define AX88178_MEDIUM_DEFAULT        \
-+      (AX_MEDIUM_PS | AX_MEDIUM_FD | AX_MEDIUM_AC | \
-+       AX_MEDIUM_RFC | AX_MEDIUM_TFC | AX_MEDIUM_JFE | \
-+       AX_MEDIUM_RE)
-+
-+#define AX88772_MEDIUM_DEFAULT        \
-+      (AX_MEDIUM_FD | AX_MEDIUM_RFC | \
-+       AX_MEDIUM_TFC | AX_MEDIUM_PS | \
-+       AX_MEDIUM_AC | AX_MEDIUM_RE)
-+
-+/* AX88772 & AX88178 RX_CTL values */
-+#define AX_RX_CTL_SO          0x0080
-+#define AX_RX_CTL_AP          0x0020
-+#define AX_RX_CTL_AM          0x0010
-+#define AX_RX_CTL_AB          0x0008
-+#define AX_RX_CTL_SEP         0x0004
-+#define AX_RX_CTL_AMALL               0x0002
-+#define AX_RX_CTL_PRO         0x0001
-+#define AX_RX_CTL_MFB_2048    0x0000
-+#define AX_RX_CTL_MFB_4096    0x0100
-+#define AX_RX_CTL_MFB_8192    0x0200
-+#define AX_RX_CTL_MFB_16384   0x0300
-+
-+#define AX_DEFAULT_RX_CTL     (AX_RX_CTL_SO | AX_RX_CTL_AB)
-+
-+/* GPIO 0 .. 2 toggles */
-+#define AX_GPIO_GPO0EN                0x01    /* GPIO0 Output enable */
-+#define AX_GPIO_GPO_0         0x02    /* GPIO0 Output value */
-+#define AX_GPIO_GPO1EN                0x04    /* GPIO1 Output enable */
-+#define AX_GPIO_GPO_1         0x08    /* GPIO1 Output value */
-+#define AX_GPIO_GPO2EN                0x10    /* GPIO2 Output enable */
-+#define AX_GPIO_GPO_2         0x20    /* GPIO2 Output value */
-+#define AX_GPIO_RESERVED      0x40    /* Reserved */
-+#define AX_GPIO_RSE           0x80    /* Reload serial EEPROM */
-+
-+#define AX_EEPROM_MAGIC               0xdeadbeef
-+#define AX_EEPROM_LEN         0x200
-+
-+/* This structure cannot exceed sizeof(unsigned long [5]) AKA 20 bytes */
-+struct asix_data {
-+      u8 multi_filter[AX_MCAST_FILTER_SIZE];
-+      u8 mac_addr[ETH_ALEN];
-+      u8 phymode;
-+      u8 ledmode;
-+      u8 res;
-+};
-+
-+struct asix_rx_fixup_info {
-+      struct sk_buff *ax_skb;
-+      u32 header;
-+      u16 size;
-+      bool split_head;
-+};
-+
-+struct asix_common_private {
-+      struct asix_rx_fixup_info rx_fixup_info;
-+};
-+
-+extern const struct driver_info ax88172a_info;
-+
-+/* ASIX specific flags */
-+#define FLAG_EEPROM_MAC               (1UL << 0)  /* init device MAC from eeprom */
-+
-+int asix_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                u16 size, void *data);
-+
-+int asix_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                 u16 size, void *data);
-+
-+void asix_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value,
-+                        u16 index, u16 size, void *data);
-+
-+int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
-+                         struct asix_rx_fixup_info *rx);
-+int asix_rx_fixup_common(struct usbnet *dev, struct sk_buff *skb);
-+
-+struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
-+                            gfp_t flags);
-+
-+int asix_set_sw_mii(struct usbnet *dev);
-+int asix_set_hw_mii(struct usbnet *dev);
-+
-+int asix_read_phy_addr(struct usbnet *dev, int internal);
-+int asix_get_phy_addr(struct usbnet *dev);
-+
-+int asix_sw_reset(struct usbnet *dev, u8 flags);
-+
-+u16 asix_read_rx_ctl(struct usbnet *dev);
-+int asix_write_rx_ctl(struct usbnet *dev, u16 mode);
-+
-+u16 asix_read_medium_status(struct usbnet *dev);
-+int asix_write_medium_mode(struct usbnet *dev, u16 mode);
-+
-+int asix_write_gpio(struct usbnet *dev, u16 value, int sleep);
-+
-+void asix_set_multicast(struct net_device *net);
-+
-+int asix_mdio_read(struct net_device *netdev, int phy_id, int loc);
-+void asix_mdio_write(struct net_device *netdev, int phy_id, int loc, int val);
-+
-+void asix_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo);
-+int asix_set_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo);
-+
-+int asix_get_eeprom_len(struct net_device *net);
-+int asix_get_eeprom(struct net_device *net, struct ethtool_eeprom *eeprom,
-+                  u8 *data);
-+int asix_set_eeprom(struct net_device *net, struct ethtool_eeprom *eeprom,
-+                  u8 *data);
-+
-+void asix_get_drvinfo(struct net_device *net, struct ethtool_drvinfo *info);
-+
-+int asix_set_mac_address(struct net_device *net, void *p);
-+
-+#endif /* _ASIX_H */
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/ax88172a.c backports-4.2.6-1/drivers/net/usb/ax88172a.c
---- backports-4.2.6-1.org/drivers/net/usb/ax88172a.c   1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/ax88172a.c       2016-06-28 14:35:17.965307221 +0200
-@@ -0,0 +1,422 @@
-+/*
-+ * ASIX AX88172A based USB 2.0 Ethernet Devices
-+ * Copyright (C) 2012 OMICRON electronics GmbH
-+ *
-+ * Supports external PHYs via phylib. Based on the driver for the
-+ * AX88772. Original copyrights follow:
-+ *
-+ * Copyright (C) 2003-2006 David Hollis <dhollis@davehollis.com>
-+ * Copyright (C) 2005 Phil Chang <pchang23@sbcglobal.net>
-+ * Copyright (C) 2006 James Painter <jamie.painter@iname.com>
-+ * Copyright (c) 2002-2003 TiVo Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include "asix.h"
-+#include <linux/phy.h>
-+
-+struct ax88172a_private {
-+      struct mii_bus *mdio;
-+      struct phy_device *phydev;
-+      char phy_name[20];
-+      u16 phy_addr;
-+      u16 oldmode;
-+      int use_embdphy;
-+      struct asix_rx_fixup_info rx_fixup_info;
-+};
-+
-+/* MDIO read and write wrappers for phylib */
-+static int asix_mdio_bus_read(struct mii_bus *bus, int phy_id, int regnum)
-+{
-+      return asix_mdio_read(((struct usbnet *)bus->priv)->net, phy_id,
-+                            regnum);
-+}
-+
-+static int asix_mdio_bus_write(struct mii_bus *bus, int phy_id, int regnum,
-+                             u16 val)
-+{
-+      asix_mdio_write(((struct usbnet *)bus->priv)->net, phy_id, regnum, val);
-+      return 0;
-+}
-+
-+static int ax88172a_ioctl(struct net_device *net, struct ifreq *rq, int cmd)
-+{
-+      if (!netif_running(net))
-+              return -EINVAL;
-+
-+      if (!net->phydev)
-+              return -ENODEV;
-+
-+      return phy_mii_ioctl(net->phydev, rq, cmd);
-+}
-+
-+/* set MAC link settings according to information from phylib */
-+static void ax88172a_adjust_link(struct net_device *netdev)
-+{
-+      struct phy_device *phydev = netdev->phydev;
-+      struct usbnet *dev = netdev_priv(netdev);
-+      struct ax88172a_private *priv = dev->driver_priv;
-+      u16 mode = 0;
-+
-+      if (phydev->link) {
-+              mode = AX88772_MEDIUM_DEFAULT;
-+
-+              if (phydev->duplex == DUPLEX_HALF)
-+                      mode &= ~AX_MEDIUM_FD;
-+
-+              if (phydev->speed != SPEED_100)
-+                      mode &= ~AX_MEDIUM_PS;
-+      }
-+
-+      if (mode != priv->oldmode) {
-+              asix_write_medium_mode(dev, mode);
-+              priv->oldmode = mode;
-+              netdev_dbg(netdev, "speed %u duplex %d, setting mode to 0x%04x\n",
-+                         phydev->speed, phydev->duplex, mode);
-+              phy_print_status(phydev);
-+      }
-+}
-+
-+static void ax88172a_status(struct usbnet *dev, struct urb *urb)
-+{
-+      /* link changes are detected by polling the phy */
-+}
-+
-+/* use phylib infrastructure */
-+static int ax88172a_init_mdio(struct usbnet *dev)
-+{
-+      struct ax88172a_private *priv = dev->driver_priv;
-+      int ret, i;
-+
-+      priv->mdio = mdiobus_alloc();
-+      if (!priv->mdio) {
-+              netdev_err(dev->net, "Could not allocate MDIO bus\n");
-+              return -ENOMEM;
-+      }
-+
-+      priv->mdio->priv = (void *)dev;
-+      priv->mdio->read = &asix_mdio_bus_read;
-+      priv->mdio->write = &asix_mdio_bus_write;
-+      priv->mdio->name = "Asix MDIO Bus";
-+      /* mii bus name is usb-<usb bus number>-<usb device number> */
-+      snprintf(priv->mdio->id, MII_BUS_ID_SIZE, "usb-%03d:%03d",
-+               dev->udev->bus->busnum, dev->udev->devnum);
-+
-+      priv->mdio->irq = kzalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
-+      if (!priv->mdio->irq) {
-+              ret = -ENOMEM;
-+              goto mfree;
-+      }
-+      for (i = 0; i < PHY_MAX_ADDR; i++)
-+              priv->mdio->irq[i] = PHY_POLL;
-+
-+      ret = mdiobus_register(priv->mdio);
-+      if (ret) {
-+              netdev_err(dev->net, "Could not register MDIO bus\n");
-+              goto ifree;
-+      }
-+
-+      netdev_info(dev->net, "registered mdio bus %s\n", priv->mdio->id);
-+      return 0;
-+
-+ifree:
-+      kfree(priv->mdio->irq);
-+mfree:
-+      mdiobus_free(priv->mdio);
-+      return ret;
-+}
-+
-+static void ax88172a_remove_mdio(struct usbnet *dev)
-+{
-+      struct ax88172a_private *priv = dev->driver_priv;
-+
-+      netdev_info(dev->net, "deregistering mdio bus %s\n", priv->mdio->id);
-+      mdiobus_unregister(priv->mdio);
-+      kfree(priv->mdio->irq);
-+      mdiobus_free(priv->mdio);
-+}
-+
-+static const struct net_device_ops ax88172a_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = usbnet_change_mtu,
-+      .ndo_set_mac_address    = asix_set_mac_address,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = ax88172a_ioctl,
-+      .ndo_set_rx_mode        = asix_set_multicast,
-+};
-+
-+static int ax88172a_get_settings(struct net_device *net,
-+                               struct ethtool_cmd *cmd)
-+{
-+      if (!net->phydev)
-+              return -ENODEV;
-+
-+      return phy_ethtool_gset(net->phydev, cmd);
-+}
-+
-+static int ax88172a_set_settings(struct net_device *net,
-+                               struct ethtool_cmd *cmd)
-+{
-+      if (!net->phydev)
-+              return -ENODEV;
-+
-+      return phy_ethtool_sset(net->phydev, cmd);
-+}
-+
-+static int ax88172a_nway_reset(struct net_device *net)
-+{
-+      if (!net->phydev)
-+              return -ENODEV;
-+
-+      return phy_start_aneg(net->phydev);
-+}
-+
-+static const struct ethtool_ops ax88172a_ethtool_ops = {
-+      .get_drvinfo            = asix_get_drvinfo,
-+      .get_link               = usbnet_get_link,
-+      .get_msglevel           = usbnet_get_msglevel,
-+      .set_msglevel           = usbnet_set_msglevel,
-+      .get_wol                = asix_get_wol,
-+      .set_wol                = asix_set_wol,
-+      .get_eeprom_len         = asix_get_eeprom_len,
-+      .get_eeprom             = asix_get_eeprom,
-+      .set_eeprom             = asix_set_eeprom,
-+      .get_settings           = ax88172a_get_settings,
-+      .set_settings           = ax88172a_set_settings,
-+      .nway_reset             = ax88172a_nway_reset,
-+};
-+
-+static int ax88172a_reset_phy(struct usbnet *dev, int embd_phy)
-+{
-+      int ret;
-+
-+      ret = asix_sw_reset(dev, AX_SWRESET_IPPD);
-+      if (ret < 0)
-+              goto err;
-+
-+      msleep(150);
-+      ret = asix_sw_reset(dev, AX_SWRESET_CLEAR);
-+      if (ret < 0)
-+              goto err;
-+
-+      msleep(150);
-+
-+      ret = asix_sw_reset(dev, embd_phy ? AX_SWRESET_IPRL : AX_SWRESET_IPPD);
-+      if (ret < 0)
-+              goto err;
-+
-+      return 0;
-+
-+err:
-+      return ret;
-+}
-+
-+
-+static int ax88172a_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int ret;
-+      u8 buf[ETH_ALEN];
-+      struct ax88172a_private *priv;
-+
-+      usbnet_get_endpoints(dev, intf);
-+
-+      priv = kzalloc(sizeof(*priv), GFP_KERNEL);
-+      if (!priv)
-+              return -ENOMEM;
-+
-+      dev->driver_priv = priv;
-+
-+      /* Get the MAC address */
-+      ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, buf);
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Failed to read MAC address: %d\n", ret);
-+              goto free;
-+      }
-+      memcpy(dev->net->dev_addr, buf, ETH_ALEN);
-+
-+      dev->net->netdev_ops = &ax88172a_netdev_ops;
-+      dev->net->ethtool_ops = &ax88172a_ethtool_ops;
-+
-+      /* are we using the internal or the external phy? */
-+      ret = asix_read_cmd(dev, AX_CMD_SW_PHY_STATUS, 0, 0, 1, buf);
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Failed to read software interface selection register: %d\n",
-+                         ret);
-+              goto free;
-+      }
-+
-+      netdev_dbg(dev->net, "AX_CMD_SW_PHY_STATUS = 0x%02x\n", buf[0]);
-+      switch (buf[0] & AX_PHY_SELECT_MASK) {
-+      case AX_PHY_SELECT_INTERNAL:
-+              netdev_dbg(dev->net, "use internal phy\n");
-+              priv->use_embdphy = 1;
-+              break;
-+      case AX_PHY_SELECT_EXTERNAL:
-+              netdev_dbg(dev->net, "use external phy\n");
-+              priv->use_embdphy = 0;
-+              break;
-+      default:
-+              netdev_err(dev->net, "Interface mode not supported by driver\n");
-+              ret = -ENOTSUPP;
-+              goto free;
-+      }
-+
-+      priv->phy_addr = asix_read_phy_addr(dev, priv->use_embdphy);
-+      ax88172a_reset_phy(dev, priv->use_embdphy);
-+
-+      /* Asix framing packs multiple eth frames into a 2K usb bulk transfer */
-+      if (dev->driver_info->flags & FLAG_FRAMING_AX) {
-+              /* hard_mtu  is still the default - the device does not support
-+                 jumbo eth frames */
-+              dev->rx_urb_size = 2048;
-+      }
-+
-+      /* init MDIO bus */
-+      ret = ax88172a_init_mdio(dev);
-+      if (ret)
-+              goto free;
-+
-+      return 0;
-+
-+free:
-+      kfree(priv);
-+      return ret;
-+}
-+
-+static int ax88172a_stop(struct usbnet *dev)
-+{
-+      struct ax88172a_private *priv = dev->driver_priv;
-+
-+      netdev_dbg(dev->net, "Stopping interface\n");
-+
-+      if (priv->phydev) {
-+              netdev_info(dev->net, "Disconnecting from phy %s\n",
-+                          priv->phy_name);
-+              phy_stop(priv->phydev);
-+              phy_disconnect(priv->phydev);
-+      }
-+
-+      return 0;
-+}
-+
-+static void ax88172a_unbind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      struct ax88172a_private *priv = dev->driver_priv;
-+
-+      ax88172a_remove_mdio(dev);
-+      kfree(priv);
-+}
-+
-+static int ax88172a_reset(struct usbnet *dev)
-+{
-+      struct asix_data *data = (struct asix_data *)&dev->data;
-+      struct ax88172a_private *priv = dev->driver_priv;
-+      int ret;
-+      u16 rx_ctl;
-+
-+      ax88172a_reset_phy(dev, priv->use_embdphy);
-+
-+      msleep(150);
-+      rx_ctl = asix_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl);
-+      ret = asix_write_rx_ctl(dev, 0x0000);
-+      if (ret < 0)
-+              goto out;
-+
-+      rx_ctl = asix_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl);
-+
-+      msleep(150);
-+
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_IPG0,
-+                           AX88772_IPG0_DEFAULT | AX88772_IPG1_DEFAULT,
-+                           AX88772_IPG2_DEFAULT, 0, NULL);
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Write IPG,IPG1,IPG2 failed: %d\n", ret);
-+              goto out;
-+      }
-+
-+      /* Rewrite MAC address */
-+      memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN);
-+      ret = asix_write_cmd(dev, AX_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN,
-+                           data->mac_addr);
-+      if (ret < 0)
-+              goto out;
-+
-+      /* Set RX_CTL to default values with 2k buffer, and enable cactus */
-+      ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL);
-+      if (ret < 0)
-+              goto out;
-+
-+      rx_ctl = asix_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x after all initializations\n",
-+                 rx_ctl);
-+
-+      rx_ctl = asix_read_medium_status(dev);
-+      netdev_dbg(dev->net, "Medium Status is 0x%04x after all initializations\n",
-+                 rx_ctl);
-+
-+      /* Connect to PHY */
-+      snprintf(priv->phy_name, 20, PHY_ID_FMT,
-+               priv->mdio->id, priv->phy_addr);
-+
-+      priv->phydev = phy_connect(dev->net, priv->phy_name,
-+                                 &ax88172a_adjust_link,
-+                                 PHY_INTERFACE_MODE_MII);
-+      if (IS_ERR(priv->phydev)) {
-+              netdev_err(dev->net, "Could not connect to PHY device %s\n",
-+                         priv->phy_name);
-+              ret = PTR_ERR(priv->phydev);
-+              goto out;
-+      }
-+
-+      netdev_info(dev->net, "Connected to phy %s\n", priv->phy_name);
-+
-+      /* During power-up, the AX88172A set the power down (BMCR_PDOWN)
-+       * bit of the PHY. Bring the PHY up again.
-+       */
-+      genphy_resume(priv->phydev);
-+      phy_start(priv->phydev);
-+
-+      return 0;
-+
-+out:
-+      return ret;
-+
-+}
-+
-+static int ax88172a_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      struct ax88172a_private *dp = dev->driver_priv;
-+      struct asix_rx_fixup_info *rx = &dp->rx_fixup_info;
-+
-+      return asix_rx_fixup_internal(dev, skb, rx);
-+}
-+
-+const struct driver_info ax88172a_info = {
-+      .description = "ASIX AX88172A USB 2.0 Ethernet",
-+      .bind = ax88172a_bind,
-+      .reset = ax88172a_reset,
-+      .stop = ax88172a_stop,
-+      .unbind = ax88172a_unbind,
-+      .status = ax88172a_status,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR |
-+               FLAG_MULTI_PACKET,
-+      .rx_fixup = ax88172a_rx_fixup,
-+      .tx_fixup = asix_tx_fixup,
-+};
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/ax88179_178a.c backports-4.2.6-1/drivers/net/usb/ax88179_178a.c
---- backports-4.2.6-1.org/drivers/net/usb/ax88179_178a.c       1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/ax88179_178a.c   2016-06-28 14:35:17.968640554 +0200
-@@ -0,0 +1,1756 @@
-+/*
-+ * ASIX AX88179/178A USB 3.0/2.0 to Gigabit Ethernet Devices
-+ *
-+ * Copyright (C) 2011-2013 ASIX
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/etherdevice.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/crc32.h>
-+#include <linux/usb/usbnet.h>
-+#include <uapi/linux/mdio.h>
-+#include <linux/mdio.h>
-+
-+#define AX88179_PHY_ID                                0x03
-+#define AX_EEPROM_LEN                         0x100
-+#define AX88179_EEPROM_MAGIC                  0x17900b95
-+#define AX_MCAST_FLTSIZE                      8
-+#define AX_MAX_MCAST                          64
-+#define AX_INT_PPLS_LINK                      ((u32)BIT(16))
-+#define AX_RXHDR_L4_TYPE_MASK                 0x1c
-+#define AX_RXHDR_L4_TYPE_UDP                  4
-+#define AX_RXHDR_L4_TYPE_TCP                  16
-+#define AX_RXHDR_L3CSUM_ERR                   2
-+#define AX_RXHDR_L4CSUM_ERR                   1
-+#define AX_RXHDR_CRC_ERR                      ((u32)BIT(29))
-+#define AX_RXHDR_DROP_ERR                     ((u32)BIT(31))
-+#define AX_ACCESS_MAC                         0x01
-+#define AX_ACCESS_PHY                         0x02
-+#define AX_ACCESS_EEPROM                      0x04
-+#define AX_ACCESS_EFUS                                0x05
-+#define AX_PAUSE_WATERLVL_HIGH                        0x54
-+#define AX_PAUSE_WATERLVL_LOW                 0x55
-+
-+#define PHYSICAL_LINK_STATUS                  0x02
-+      #define AX_USB_SS               0x04
-+      #define AX_USB_HS               0x02
-+
-+#define GENERAL_STATUS                                0x03
-+/* Check AX88179 version. UA1:Bit2 = 0,  UA2:Bit2 = 1 */
-+      #define AX_SECLD                0x04
-+
-+#define AX_SROM_ADDR                          0x07
-+#define AX_SROM_CMD                           0x0a
-+      #define EEP_RD                  0x04
-+      #define EEP_BUSY                0x10
-+
-+#define AX_SROM_DATA_LOW                      0x08
-+#define AX_SROM_DATA_HIGH                     0x09
-+
-+#define AX_RX_CTL                             0x0b
-+      #define AX_RX_CTL_DROPCRCERR    0x0100
-+      #define AX_RX_CTL_IPE           0x0200
-+      #define AX_RX_CTL_START         0x0080
-+      #define AX_RX_CTL_AP            0x0020
-+      #define AX_RX_CTL_AM            0x0010
-+      #define AX_RX_CTL_AB            0x0008
-+      #define AX_RX_CTL_AMALL         0x0002
-+      #define AX_RX_CTL_PRO           0x0001
-+      #define AX_RX_CTL_STOP          0x0000
-+
-+#define AX_NODE_ID                            0x10
-+#define AX_MULFLTARY                          0x16
-+
-+#define AX_MEDIUM_STATUS_MODE                 0x22
-+      #define AX_MEDIUM_GIGAMODE      0x01
-+      #define AX_MEDIUM_FULL_DUPLEX   0x02
-+      #define AX_MEDIUM_EN_125MHZ     0x08
-+      #define AX_MEDIUM_RXFLOW_CTRLEN 0x10
-+      #define AX_MEDIUM_TXFLOW_CTRLEN 0x20
-+      #define AX_MEDIUM_RECEIVE_EN    0x100
-+      #define AX_MEDIUM_PS            0x200
-+      #define AX_MEDIUM_JUMBO_EN      0x8040
-+
-+#define AX_MONITOR_MOD                                0x24
-+      #define AX_MONITOR_MODE_RWLC    0x02
-+      #define AX_MONITOR_MODE_RWMP    0x04
-+      #define AX_MONITOR_MODE_PMEPOL  0x20
-+      #define AX_MONITOR_MODE_PMETYPE 0x40
-+
-+#define AX_GPIO_CTRL                          0x25
-+      #define AX_GPIO_CTRL_GPIO3EN    0x80
-+      #define AX_GPIO_CTRL_GPIO2EN    0x40
-+      #define AX_GPIO_CTRL_GPIO1EN    0x20
-+
-+#define AX_PHYPWR_RSTCTL                      0x26
-+      #define AX_PHYPWR_RSTCTL_BZ     0x0010
-+      #define AX_PHYPWR_RSTCTL_IPRL   0x0020
-+      #define AX_PHYPWR_RSTCTL_AT     0x1000
-+
-+#define AX_RX_BULKIN_QCTRL                    0x2e
-+#define AX_CLK_SELECT                         0x33
-+      #define AX_CLK_SELECT_BCS       0x01
-+      #define AX_CLK_SELECT_ACS       0x02
-+      #define AX_CLK_SELECT_ULR       0x08
-+
-+#define AX_RXCOE_CTL                          0x34
-+      #define AX_RXCOE_IP             0x01
-+      #define AX_RXCOE_TCP            0x02
-+      #define AX_RXCOE_UDP            0x04
-+      #define AX_RXCOE_TCPV6          0x20
-+      #define AX_RXCOE_UDPV6          0x40
-+
-+#define AX_TXCOE_CTL                          0x35
-+      #define AX_TXCOE_IP             0x01
-+      #define AX_TXCOE_TCP            0x02
-+      #define AX_TXCOE_UDP            0x04
-+      #define AX_TXCOE_TCPV6          0x20
-+      #define AX_TXCOE_UDPV6          0x40
-+
-+#define AX_LEDCTRL                            0x73
-+
-+#define GMII_PHY_PHYSR                                0x11
-+      #define GMII_PHY_PHYSR_SMASK    0xc000
-+      #define GMII_PHY_PHYSR_GIGA     0x8000
-+      #define GMII_PHY_PHYSR_100      0x4000
-+      #define GMII_PHY_PHYSR_FULL     0x2000
-+      #define GMII_PHY_PHYSR_LINK     0x400
-+
-+#define GMII_LED_ACT                          0x1a
-+      #define GMII_LED_ACTIVE_MASK    0xff8f
-+      #define GMII_LED0_ACTIVE        BIT(4)
-+      #define GMII_LED1_ACTIVE        BIT(5)
-+      #define GMII_LED2_ACTIVE        BIT(6)
-+
-+#define GMII_LED_LINK                         0x1c
-+      #define GMII_LED_LINK_MASK      0xf888
-+      #define GMII_LED0_LINK_10       BIT(0)
-+      #define GMII_LED0_LINK_100      BIT(1)
-+      #define GMII_LED0_LINK_1000     BIT(2)
-+      #define GMII_LED1_LINK_10       BIT(4)
-+      #define GMII_LED1_LINK_100      BIT(5)
-+      #define GMII_LED1_LINK_1000     BIT(6)
-+      #define GMII_LED2_LINK_10       BIT(8)
-+      #define GMII_LED2_LINK_100      BIT(9)
-+      #define GMII_LED2_LINK_1000     BIT(10)
-+      #define LED0_ACTIVE             BIT(0)
-+      #define LED0_LINK_10            BIT(1)
-+      #define LED0_LINK_100           BIT(2)
-+      #define LED0_LINK_1000          BIT(3)
-+      #define LED0_FD                 BIT(4)
-+      #define LED0_USB3_MASK          0x001f
-+      #define LED1_ACTIVE             BIT(5)
-+      #define LED1_LINK_10            BIT(6)
-+      #define LED1_LINK_100           BIT(7)
-+      #define LED1_LINK_1000          BIT(8)
-+      #define LED1_FD                 BIT(9)
-+      #define LED1_USB3_MASK          0x03e0
-+      #define LED2_ACTIVE             BIT(10)
-+      #define LED2_LINK_1000          BIT(13)
-+      #define LED2_LINK_100           BIT(12)
-+      #define LED2_LINK_10            BIT(11)
-+      #define LED2_FD                 BIT(14)
-+      #define LED_VALID               BIT(15)
-+      #define LED2_USB3_MASK          0x7c00
-+
-+#define GMII_PHYPAGE                          0x1e
-+#define GMII_PHY_PAGE_SELECT                  0x1f
-+      #define GMII_PHY_PGSEL_EXT      0x0007
-+      #define GMII_PHY_PGSEL_PAGE0    0x0000
-+      #define GMII_PHY_PGSEL_PAGE3    0x0003
-+      #define GMII_PHY_PGSEL_PAGE5    0x0005
-+
-+struct ax88179_data {
-+      u8  eee_enabled;
-+      u8  eee_active;
-+      u16 rxctl;
-+      u16 reserved;
-+};
-+
-+struct ax88179_int_data {
-+      __le32 intdata1;
-+      __le32 intdata2;
-+};
-+
-+static const struct {
-+      unsigned char ctrl, timer_l, timer_h, size, ifg;
-+} AX88179_BULKIN_SIZE[] =     {
-+      {7, 0x4f, 0,    0x12, 0xff},
-+      {7, 0x20, 3,    0x16, 0xff},
-+      {7, 0xae, 7,    0x18, 0xff},
-+      {7, 0xcc, 0x4c, 0x18, 8},
-+};
-+
-+static int __ax88179_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                            u16 size, void *data, int in_pm)
-+{
-+      int ret;
-+      int (*fn)(struct usbnet *, u8, u8, u16, u16, void *, u16);
-+
-+      BUG_ON(!dev);
-+
-+      if (!in_pm)
-+              fn = usbnet_read_cmd;
-+      else
-+              fn = usbnet_read_cmd_nopm;
-+
-+      ret = fn(dev, cmd, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+               value, index, data, size);
-+
-+      if (unlikely(ret < 0))
-+              netdev_warn(dev->net, "Failed to read reg index 0x%04x: %d\n",
-+                          index, ret);
-+
-+      return ret;
-+}
-+
-+static int __ax88179_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                             u16 size, void *data, int in_pm)
-+{
-+      int ret;
-+      int (*fn)(struct usbnet *, u8, u8, u16, u16, const void *, u16);
-+
-+      BUG_ON(!dev);
-+
-+      if (!in_pm)
-+              fn = usbnet_write_cmd;
-+      else
-+              fn = usbnet_write_cmd_nopm;
-+
-+      ret = fn(dev, cmd, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+               value, index, data, size);
-+
-+      if (unlikely(ret < 0))
-+              netdev_warn(dev->net, "Failed to write reg index 0x%04x: %d\n",
-+                          index, ret);
-+
-+      return ret;
-+}
-+
-+static void ax88179_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value,
-+                                  u16 index, u16 size, void *data)
-+{
-+      u16 buf;
-+
-+      if (2 == size) {
-+              buf = *((u16 *)data);
-+              cpu_to_le16s(&buf);
-+              usbnet_write_cmd_async(dev, cmd, USB_DIR_OUT | USB_TYPE_VENDOR |
-+                                     USB_RECIP_DEVICE, value, index, &buf,
-+                                     size);
-+      } else {
-+              usbnet_write_cmd_async(dev, cmd, USB_DIR_OUT | USB_TYPE_VENDOR |
-+                                     USB_RECIP_DEVICE, value, index, data,
-+                                     size);
-+      }
-+}
-+
-+static int ax88179_read_cmd_nopm(struct usbnet *dev, u8 cmd, u16 value,
-+                               u16 index, u16 size, void *data)
-+{
-+      int ret;
-+
-+      if (2 == size) {
-+              u16 buf;
-+              ret = __ax88179_read_cmd(dev, cmd, value, index, size, &buf, 1);
-+              le16_to_cpus(&buf);
-+              *((u16 *)data) = buf;
-+      } else if (4 == size) {
-+              u32 buf;
-+              ret = __ax88179_read_cmd(dev, cmd, value, index, size, &buf, 1);
-+              le32_to_cpus(&buf);
-+              *((u32 *)data) = buf;
-+      } else {
-+              ret = __ax88179_read_cmd(dev, cmd, value, index, size, data, 1);
-+      }
-+
-+      return ret;
-+}
-+
-+static int ax88179_write_cmd_nopm(struct usbnet *dev, u8 cmd, u16 value,
-+                                u16 index, u16 size, void *data)
-+{
-+      int ret;
-+
-+      if (2 == size) {
-+              u16 buf;
-+              buf = *((u16 *)data);
-+              cpu_to_le16s(&buf);
-+              ret = __ax88179_write_cmd(dev, cmd, value, index,
-+                                        size, &buf, 1);
-+      } else {
-+              ret = __ax88179_write_cmd(dev, cmd, value, index,
-+                                        size, data, 1);
-+      }
-+
-+      return ret;
-+}
-+
-+static int ax88179_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                          u16 size, void *data)
-+{
-+      int ret;
-+
-+      if (2 == size) {
-+              u16 buf;
-+              ret = __ax88179_read_cmd(dev, cmd, value, index, size, &buf, 0);
-+              le16_to_cpus(&buf);
-+              *((u16 *)data) = buf;
-+      } else if (4 == size) {
-+              u32 buf;
-+              ret = __ax88179_read_cmd(dev, cmd, value, index, size, &buf, 0);
-+              le32_to_cpus(&buf);
-+              *((u32 *)data) = buf;
-+      } else {
-+              ret = __ax88179_read_cmd(dev, cmd, value, index, size, data, 0);
-+      }
-+
-+      return ret;
-+}
-+
-+static int ax88179_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                           u16 size, void *data)
-+{
-+      int ret;
-+
-+      if (2 == size) {
-+              u16 buf;
-+              buf = *((u16 *)data);
-+              cpu_to_le16s(&buf);
-+              ret = __ax88179_write_cmd(dev, cmd, value, index,
-+                                        size, &buf, 0);
-+      } else {
-+              ret = __ax88179_write_cmd(dev, cmd, value, index,
-+                                        size, data, 0);
-+      }
-+
-+      return ret;
-+}
-+
-+static void ax88179_status(struct usbnet *dev, struct urb *urb)
-+{
-+      struct ax88179_int_data *event;
-+      u32 link;
-+
-+      if (urb->actual_length < 8)
-+              return;
-+
-+      event = urb->transfer_buffer;
-+      le32_to_cpus((void *)&event->intdata1);
-+
-+      link = (((__force u32)event->intdata1) & AX_INT_PPLS_LINK) >> 16;
-+
-+      if (netif_carrier_ok(dev->net) != link) {
-+              usbnet_link_change(dev, link, 1);
-+              netdev_info(dev->net, "ax88179 - Link status is: %d\n", link);
-+      }
-+}
-+
-+static int ax88179_mdio_read(struct net_device *netdev, int phy_id, int loc)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      u16 res;
-+
-+      ax88179_read_cmd(dev, AX_ACCESS_PHY, phy_id, (__u16)loc, 2, &res);
-+      return res;
-+}
-+
-+static void ax88179_mdio_write(struct net_device *netdev, int phy_id, int loc,
-+                             int val)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      u16 res = (u16) val;
-+
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, phy_id, (__u16)loc, 2, &res);
-+}
-+
-+static inline int ax88179_phy_mmd_indirect(struct usbnet *dev, u16 prtad,
-+                                         u16 devad)
-+{
-+      u16 tmp16;
-+      int ret;
-+
-+      tmp16 = devad;
-+      ret = ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                              MII_MMD_CTRL, 2, &tmp16);
-+
-+      tmp16 = prtad;
-+      ret = ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                              MII_MMD_DATA, 2, &tmp16);
-+
-+      tmp16 = devad | MII_MMD_CTRL_NOINCR;
-+      ret = ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                              MII_MMD_CTRL, 2, &tmp16);
-+
-+      return ret;
-+}
-+
-+static int
-+ax88179_phy_read_mmd_indirect(struct usbnet *dev, u16 prtad, u16 devad)
-+{
-+      int ret;
-+      u16 tmp16;
-+
-+      ax88179_phy_mmd_indirect(dev, prtad, devad);
-+
-+      ret = ax88179_read_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                             MII_MMD_DATA, 2, &tmp16);
-+      if (ret < 0)
-+              return ret;
-+
-+      return tmp16;
-+}
-+
-+static int
-+ax88179_phy_write_mmd_indirect(struct usbnet *dev, u16 prtad, u16 devad,
-+                             u16 data)
-+{
-+      int ret;
-+
-+      ax88179_phy_mmd_indirect(dev, prtad, devad);
-+
-+      ret = ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                              MII_MMD_DATA, 2, &data);
-+
-+      if (ret < 0)
-+              return ret;
-+
-+      return 0;
-+}
-+
-+static int ax88179_suspend(struct usb_interface *intf, pm_message_t message)
-+{
-+      struct usbnet *dev = usb_get_intfdata(intf);
-+      u16 tmp16;
-+      u8 tmp8;
-+
-+      usbnet_suspend(intf, message);
-+
-+      /* Disable RX path */
-+      ax88179_read_cmd_nopm(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                            2, 2, &tmp16);
-+      tmp16 &= ~AX_MEDIUM_RECEIVE_EN;
-+      ax88179_write_cmd_nopm(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                             2, 2, &tmp16);
-+
-+      /* Force bulk-in zero length */
-+      ax88179_read_cmd_nopm(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL,
-+                            2, 2, &tmp16);
-+
-+      tmp16 |= AX_PHYPWR_RSTCTL_BZ | AX_PHYPWR_RSTCTL_IPRL;
-+      ax88179_write_cmd_nopm(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL,
-+                             2, 2, &tmp16);
-+
-+      /* change clock */
-+      tmp8 = 0;
-+      ax88179_write_cmd_nopm(dev, AX_ACCESS_MAC, AX_CLK_SELECT, 1, 1, &tmp8);
-+
-+      /* Configure RX control register => stop operation */
-+      tmp16 = AX_RX_CTL_STOP;
-+      ax88179_write_cmd_nopm(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2, &tmp16);
-+
-+      return 0;
-+}
-+
-+/* This function is used to enable the autodetach function. */
-+/* This function is determined by offset 0x43 of EEPROM */
-+static int ax88179_auto_detach(struct usbnet *dev, int in_pm)
-+{
-+      u16 tmp16;
-+      u8 tmp8;
-+      int (*fnr)(struct usbnet *, u8, u16, u16, u16, void *);
-+      int (*fnw)(struct usbnet *, u8, u16, u16, u16, void *);
-+
-+      if (!in_pm) {
-+              fnr = ax88179_read_cmd;
-+              fnw = ax88179_write_cmd;
-+      } else {
-+              fnr = ax88179_read_cmd_nopm;
-+              fnw = ax88179_write_cmd_nopm;
-+      }
-+
-+      if (fnr(dev, AX_ACCESS_EEPROM, 0x43, 1, 2, &tmp16) < 0)
-+              return 0;
-+
-+      if ((tmp16 == 0xFFFF) || (!(tmp16 & 0x0100)))
-+              return 0;
-+
-+      /* Enable Auto Detach bit */
-+      tmp8 = 0;
-+      fnr(dev, AX_ACCESS_MAC, AX_CLK_SELECT, 1, 1, &tmp8);
-+      tmp8 |= AX_CLK_SELECT_ULR;
-+      fnw(dev, AX_ACCESS_MAC, AX_CLK_SELECT, 1, 1, &tmp8);
-+
-+      fnr(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, &tmp16);
-+      tmp16 |= AX_PHYPWR_RSTCTL_AT;
-+      fnw(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, &tmp16);
-+
-+      return 0;
-+}
-+
-+static int ax88179_resume(struct usb_interface *intf)
-+{
-+      struct usbnet *dev = usb_get_intfdata(intf);
-+      u16 tmp16;
-+      u8 tmp8;
-+
-+      usbnet_link_change(dev, 0, 0);
-+
-+      /* Power up ethernet PHY */
-+      tmp16 = 0;
-+      ax88179_write_cmd_nopm(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL,
-+                             2, 2, &tmp16);
-+      udelay(1000);
-+
-+      tmp16 = AX_PHYPWR_RSTCTL_IPRL;
-+      ax88179_write_cmd_nopm(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL,
-+                             2, 2, &tmp16);
-+      msleep(200);
-+
-+      /* Ethernet PHY Auto Detach*/
-+      ax88179_auto_detach(dev, 1);
-+
-+      /* Enable clock */
-+      ax88179_read_cmd_nopm(dev, AX_ACCESS_MAC,  AX_CLK_SELECT, 1, 1, &tmp8);
-+      tmp8 |= AX_CLK_SELECT_ACS | AX_CLK_SELECT_BCS;
-+      ax88179_write_cmd_nopm(dev, AX_ACCESS_MAC, AX_CLK_SELECT, 1, 1, &tmp8);
-+      msleep(100);
-+
-+      /* Configure RX control register => start operation */
-+      tmp16 = AX_RX_CTL_DROPCRCERR | AX_RX_CTL_IPE | AX_RX_CTL_START |
-+              AX_RX_CTL_AP | AX_RX_CTL_AMALL | AX_RX_CTL_AB;
-+      ax88179_write_cmd_nopm(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2, &tmp16);
-+
-+      return usbnet_resume(intf);
-+}
-+
-+static void
-+ax88179_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u8 opt;
-+
-+      if (ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_MONITOR_MOD,
-+                           1, 1, &opt) < 0) {
-+              wolinfo->supported = 0;
-+              wolinfo->wolopts = 0;
-+              return;
-+      }
-+
-+      wolinfo->supported = WAKE_PHY | WAKE_MAGIC;
-+      wolinfo->wolopts = 0;
-+      if (opt & AX_MONITOR_MODE_RWLC)
-+              wolinfo->wolopts |= WAKE_PHY;
-+      if (opt & AX_MONITOR_MODE_RWMP)
-+              wolinfo->wolopts |= WAKE_MAGIC;
-+}
-+
-+static int
-+ax88179_set_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u8 opt = 0;
-+
-+      if (wolinfo->wolopts & WAKE_PHY)
-+              opt |= AX_MONITOR_MODE_RWLC;
-+      if (wolinfo->wolopts & WAKE_MAGIC)
-+              opt |= AX_MONITOR_MODE_RWMP;
-+
-+      if (ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_MONITOR_MOD,
-+                            1, 1, &opt) < 0)
-+              return -EINVAL;
-+
-+      return 0;
-+}
-+
-+static int ax88179_get_eeprom_len(struct net_device *net)
-+{
-+      return AX_EEPROM_LEN;
-+}
-+
-+static int
-+ax88179_get_eeprom(struct net_device *net, struct ethtool_eeprom *eeprom,
-+                 u8 *data)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u16 *eeprom_buff;
-+      int first_word, last_word;
-+      int i, ret;
-+
-+      if (eeprom->len == 0)
-+              return -EINVAL;
-+
-+      eeprom->magic = AX88179_EEPROM_MAGIC;
-+
-+      first_word = eeprom->offset >> 1;
-+      last_word = (eeprom->offset + eeprom->len - 1) >> 1;
-+      eeprom_buff = kmalloc(sizeof(u16) * (last_word - first_word + 1),
-+                            GFP_KERNEL);
-+      if (!eeprom_buff)
-+              return -ENOMEM;
-+
-+      /* ax88179/178A returns 2 bytes from eeprom on read */
-+      for (i = first_word; i <= last_word; i++) {
-+              ret = __ax88179_read_cmd(dev, AX_ACCESS_EEPROM, i, 1, 2,
-+                                       &eeprom_buff[i - first_word],
-+                                       0);
-+              if (ret < 0) {
-+                      kfree(eeprom_buff);
-+                      return -EIO;
-+              }
-+      }
-+
-+      memcpy(data, (u8 *)eeprom_buff + (eeprom->offset & 1), eeprom->len);
-+      kfree(eeprom_buff);
-+      return 0;
-+}
-+
-+static int ax88179_get_settings(struct net_device *net, struct ethtool_cmd *cmd)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      return mii_ethtool_gset(&dev->mii, cmd);
-+}
-+
-+static int ax88179_set_settings(struct net_device *net, struct ethtool_cmd *cmd)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      return mii_ethtool_sset(&dev->mii, cmd);
-+}
-+
-+static int
-+ax88179_ethtool_get_eee(struct usbnet *dev, struct ethtool_eee *data)
-+{
-+      int val;
-+
-+      /* Get Supported EEE */
-+      val = ax88179_phy_read_mmd_indirect(dev, MDIO_PCS_EEE_ABLE,
-+                                          MDIO_MMD_PCS);
-+      if (val < 0)
-+              return val;
-+      data->supported = mmd_eee_cap_to_ethtool_sup_t(val);
-+
-+      /* Get advertisement EEE */
-+      val = ax88179_phy_read_mmd_indirect(dev, MDIO_AN_EEE_ADV,
-+                                          MDIO_MMD_AN);
-+      if (val < 0)
-+              return val;
-+      data->advertised = mmd_eee_adv_to_ethtool_adv_t(val);
-+
-+      /* Get LP advertisement EEE */
-+      val = ax88179_phy_read_mmd_indirect(dev, MDIO_AN_EEE_LPABLE,
-+                                          MDIO_MMD_AN);
-+      if (val < 0)
-+              return val;
-+      data->lp_advertised = mmd_eee_adv_to_ethtool_adv_t(val);
-+
-+      return 0;
-+}
-+
-+static int
-+ax88179_ethtool_set_eee(struct usbnet *dev, struct ethtool_eee *data)
-+{
-+      u16 tmp16 = ethtool_adv_to_mmd_eee_adv_t(data->advertised);
-+
-+      return ax88179_phy_write_mmd_indirect(dev, MDIO_AN_EEE_ADV,
-+                                            MDIO_MMD_AN, tmp16);
-+}
-+
-+static int ax88179_chk_eee(struct usbnet *dev)
-+{
-+      struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
-+      struct ax88179_data *priv = (struct ax88179_data *)dev->data;
-+
-+      mii_ethtool_gset(&dev->mii, &ecmd);
-+
-+      if (ecmd.duplex & DUPLEX_FULL) {
-+              int eee_lp, eee_cap, eee_adv;
-+              u32 lp, cap, adv, supported = 0;
-+
-+              eee_cap = ax88179_phy_read_mmd_indirect(dev,
-+                                                      MDIO_PCS_EEE_ABLE,
-+                                                      MDIO_MMD_PCS);
-+              if (eee_cap < 0) {
-+                      priv->eee_active = 0;
-+                      return false;
-+              }
-+
-+              cap = mmd_eee_cap_to_ethtool_sup_t(eee_cap);
-+              if (!cap) {
-+                      priv->eee_active = 0;
-+                      return false;
-+              }
-+
-+              eee_lp = ax88179_phy_read_mmd_indirect(dev,
-+                                                     MDIO_AN_EEE_LPABLE,
-+                                                     MDIO_MMD_AN);
-+              if (eee_lp < 0) {
-+                      priv->eee_active = 0;
-+                      return false;
-+              }
-+
-+              eee_adv = ax88179_phy_read_mmd_indirect(dev,
-+                                                      MDIO_AN_EEE_ADV,
-+                                                      MDIO_MMD_AN);
-+
-+              if (eee_adv < 0) {
-+                      priv->eee_active = 0;
-+                      return false;
-+              }
-+
-+              adv = mmd_eee_adv_to_ethtool_adv_t(eee_adv);
-+              lp = mmd_eee_adv_to_ethtool_adv_t(eee_lp);
-+              supported = (ecmd.speed == SPEED_1000) ?
-+                           SUPPORTED_1000baseT_Full :
-+                           SUPPORTED_100baseT_Full;
-+
-+              if (!(lp & adv & supported)) {
-+                      priv->eee_active = 0;
-+                      return false;
-+              }
-+
-+              priv->eee_active = 1;
-+              return true;
-+      }
-+
-+      priv->eee_active = 0;
-+      return false;
-+}
-+
-+static void ax88179_disable_eee(struct usbnet *dev)
-+{
-+      u16 tmp16;
-+
-+      tmp16 = GMII_PHY_PGSEL_PAGE3;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_PHY_PAGE_SELECT, 2, &tmp16);
-+
-+      tmp16 = 0x3246;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        MII_PHYADDR, 2, &tmp16);
-+
-+      tmp16 = GMII_PHY_PGSEL_PAGE0;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_PHY_PAGE_SELECT, 2, &tmp16);
-+}
-+
-+static void ax88179_enable_eee(struct usbnet *dev)
-+{
-+      u16 tmp16;
-+
-+      tmp16 = GMII_PHY_PGSEL_PAGE3;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_PHY_PAGE_SELECT, 2, &tmp16);
-+
-+      tmp16 = 0x3247;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        MII_PHYADDR, 2, &tmp16);
-+
-+      tmp16 = GMII_PHY_PGSEL_PAGE5;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_PHY_PAGE_SELECT, 2, &tmp16);
-+
-+      tmp16 = 0x0680;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        MII_BMSR, 2, &tmp16);
-+
-+      tmp16 = GMII_PHY_PGSEL_PAGE0;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_PHY_PAGE_SELECT, 2, &tmp16);
-+}
-+
-+static int ax88179_get_eee(struct net_device *net, struct ethtool_eee *edata)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct ax88179_data *priv = (struct ax88179_data *)dev->data;
-+
-+      edata->eee_enabled = priv->eee_enabled;
-+      edata->eee_active = priv->eee_active;
-+
-+      return ax88179_ethtool_get_eee(dev, edata);
-+}
-+
-+static int ax88179_set_eee(struct net_device *net, struct ethtool_eee *edata)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct ax88179_data *priv = (struct ax88179_data *)dev->data;
-+      int ret = -EOPNOTSUPP;
-+
-+      priv->eee_enabled = edata->eee_enabled;
-+      if (!priv->eee_enabled) {
-+              ax88179_disable_eee(dev);
-+      } else {
-+              priv->eee_enabled = ax88179_chk_eee(dev);
-+              if (!priv->eee_enabled)
-+                      return -EOPNOTSUPP;
-+
-+              ax88179_enable_eee(dev);
-+      }
-+
-+      ret = ax88179_ethtool_set_eee(dev, edata);
-+      if (ret)
-+              return ret;
-+
-+      mii_nway_restart(&dev->mii);
-+
-+      usbnet_link_change(dev, 0, 0);
-+
-+      return ret;
-+}
-+
-+static int ax88179_ioctl(struct net_device *net, struct ifreq *rq, int cmd)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
-+}
-+
-+static const struct ethtool_ops ax88179_ethtool_ops = {
-+      .get_link               = ethtool_op_get_link,
-+      .get_msglevel           = usbnet_get_msglevel,
-+      .set_msglevel           = usbnet_set_msglevel,
-+      .get_wol                = ax88179_get_wol,
-+      .set_wol                = ax88179_set_wol,
-+      .get_eeprom_len         = ax88179_get_eeprom_len,
-+      .get_eeprom             = ax88179_get_eeprom,
-+      .get_settings           = ax88179_get_settings,
-+      .set_settings           = ax88179_set_settings,
-+      .get_eee                = ax88179_get_eee,
-+      .set_eee                = ax88179_set_eee,
-+      .nway_reset             = usbnet_nway_reset,
-+};
-+
-+static void ax88179_set_multicast(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct ax88179_data *data = (struct ax88179_data *)dev->data;
-+      u8 *m_filter = ((u8 *)dev->data) + 12;
-+
-+      data->rxctl = (AX_RX_CTL_START | AX_RX_CTL_AB | AX_RX_CTL_IPE);
-+
-+      if (net->flags & IFF_PROMISC) {
-+              data->rxctl |= AX_RX_CTL_PRO;
-+      } else if (net->flags & IFF_ALLMULTI ||
-+                 netdev_mc_count(net) > AX_MAX_MCAST) {
-+              data->rxctl |= AX_RX_CTL_AMALL;
-+      } else if (netdev_mc_empty(net)) {
-+              /* just broadcast and directed */
-+      } else {
-+              /* We use the 20 byte dev->data for our 8 byte filter buffer
-+               * to avoid allocating memory that is tricky to free later
-+               */
-+              u32 crc_bits;
-+              struct netdev_hw_addr *ha;
-+
-+              memset(m_filter, 0, AX_MCAST_FLTSIZE);
-+
-+              netdev_for_each_mc_addr(ha, net) {
-+                      crc_bits = ether_crc(ETH_ALEN, ha->addr) >> 26;
-+                      *(m_filter + (crc_bits >> 3)) |= (1 << (crc_bits & 7));
-+              }
-+
-+              ax88179_write_cmd_async(dev, AX_ACCESS_MAC, AX_MULFLTARY,
-+                                      AX_MCAST_FLTSIZE, AX_MCAST_FLTSIZE,
-+                                      m_filter);
-+
-+              data->rxctl |= AX_RX_CTL_AM;
-+      }
-+
-+      ax88179_write_cmd_async(dev, AX_ACCESS_MAC, AX_RX_CTL,
-+                              2, 2, &data->rxctl);
-+}
-+
-+static int
-+ax88179_set_features(struct net_device *net, netdev_features_t features)
-+{
-+      u8 tmp;
-+      struct usbnet *dev = netdev_priv(net);
-+      netdev_features_t changed = net->features ^ features;
-+
-+      if (changed & NETIF_F_IP_CSUM) {
-+              ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_TXCOE_CTL, 1, 1, &tmp);
-+              tmp ^= AX_TXCOE_TCP | AX_TXCOE_UDP;
-+              ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_TXCOE_CTL, 1, 1, &tmp);
-+      }
-+
-+      if (changed & NETIF_F_IPV6_CSUM) {
-+              ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_TXCOE_CTL, 1, 1, &tmp);
-+              tmp ^= AX_TXCOE_TCPV6 | AX_TXCOE_UDPV6;
-+              ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_TXCOE_CTL, 1, 1, &tmp);
-+      }
-+
-+      if (changed & NETIF_F_RXCSUM) {
-+              ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_RXCOE_CTL, 1, 1, &tmp);
-+              tmp ^= AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP |
-+                     AX_RXCOE_TCPV6 | AX_RXCOE_UDPV6;
-+              ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RXCOE_CTL, 1, 1, &tmp);
-+      }
-+
-+      return 0;
-+}
-+
-+static int ax88179_change_mtu(struct net_device *net, int new_mtu)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u16 tmp16;
-+
-+      if (new_mtu <= 0 || new_mtu > 4088)
-+              return -EINVAL;
-+
-+      net->mtu = new_mtu;
-+      dev->hard_mtu = net->mtu + net->hard_header_len;
-+
-+      if (net->mtu > 1500) {
-+              ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                               2, 2, &tmp16);
-+              tmp16 |= AX_MEDIUM_JUMBO_EN;
-+              ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                                2, 2, &tmp16);
-+      } else {
-+              ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                               2, 2, &tmp16);
-+              tmp16 &= ~AX_MEDIUM_JUMBO_EN;
-+              ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                                2, 2, &tmp16);
-+      }
-+
-+      /* max qlen depend on hard_mtu and rx_urb_size */
-+      usbnet_update_max_qlen(dev);
-+
-+      return 0;
-+}
-+
-+static int ax88179_set_mac_addr(struct net_device *net, void *p)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct sockaddr *addr = p;
-+      int ret;
-+
-+      if (netif_running(net))
-+              return -EBUSY;
-+      if (!is_valid_ether_addr(addr->sa_data))
-+              return -EADDRNOTAVAIL;
-+
-+      memcpy(net->dev_addr, addr->sa_data, ETH_ALEN);
-+
-+      /* Set the MAC address */
-+      ret = ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, ETH_ALEN,
-+                               ETH_ALEN, net->dev_addr);
-+      if (ret < 0)
-+              return ret;
-+
-+      return 0;
-+}
-+
-+static const struct net_device_ops ax88179_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = ax88179_change_mtu,
-+      .ndo_set_mac_address    = ax88179_set_mac_addr,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = ax88179_ioctl,
-+      .ndo_set_rx_mode        = ax88179_set_multicast,
-+      .ndo_set_features       = ax88179_set_features,
-+};
-+
-+static int ax88179_check_eeprom(struct usbnet *dev)
-+{
-+      u8 i, buf, eeprom[20];
-+      u16 csum, delay = HZ / 10;
-+      unsigned long jtimeout;
-+
-+      /* Read EEPROM content */
-+      for (i = 0; i < 6; i++) {
-+              buf = i;
-+              if (ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_SROM_ADDR,
-+                                    1, 1, &buf) < 0)
-+                      return -EINVAL;
-+
-+              buf = EEP_RD;
-+              if (ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_SROM_CMD,
-+                                    1, 1, &buf) < 0)
-+                      return -EINVAL;
-+
-+              jtimeout = jiffies + delay;
-+              do {
-+                      ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_SROM_CMD,
-+                                       1, 1, &buf);
-+
-+                      if (time_after(jiffies, jtimeout))
-+                              return -EINVAL;
-+
-+              } while (buf & EEP_BUSY);
-+
-+              __ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_SROM_DATA_LOW,
-+                                 2, 2, &eeprom[i * 2], 0);
-+
-+              if ((i == 0) && (eeprom[0] == 0xFF))
-+                      return -EINVAL;
-+      }
-+
-+      csum = eeprom[6] + eeprom[7] + eeprom[8] + eeprom[9];
-+      csum = (csum >> 8) + (csum & 0xff);
-+      if ((csum + eeprom[10]) != 0xff)
-+              return -EINVAL;
-+
-+      return 0;
-+}
-+
-+static int ax88179_check_efuse(struct usbnet *dev, u16 *ledmode)
-+{
-+      u8      i;
-+      u8      efuse[64];
-+      u16     csum = 0;
-+
-+      if (ax88179_read_cmd(dev, AX_ACCESS_EFUS, 0, 64, 64, efuse) < 0)
-+              return -EINVAL;
-+
-+      if (*efuse == 0xFF)
-+              return -EINVAL;
-+
-+      for (i = 0; i < 64; i++)
-+              csum = csum + efuse[i];
-+
-+      while (csum > 255)
-+              csum = (csum & 0x00FF) + ((csum >> 8) & 0x00FF);
-+
-+      if (csum != 0xFF)
-+              return -EINVAL;
-+
-+      *ledmode = (efuse[51] << 8) | efuse[52];
-+
-+      return 0;
-+}
-+
-+static int ax88179_convert_old_led(struct usbnet *dev, u16 *ledvalue)
-+{
-+      u16 led;
-+
-+      /* Loaded the old eFuse LED Mode */
-+      if (ax88179_read_cmd(dev, AX_ACCESS_EEPROM, 0x3C, 1, 2, &led) < 0)
-+              return -EINVAL;
-+
-+      led >>= 8;
-+      switch (led) {
-+      case 0xFF:
-+              led = LED0_ACTIVE | LED1_LINK_10 | LED1_LINK_100 |
-+                    LED1_LINK_1000 | LED2_ACTIVE | LED2_LINK_10 |
-+                    LED2_LINK_100 | LED2_LINK_1000 | LED_VALID;
-+              break;
-+      case 0xFE:
-+              led = LED0_ACTIVE | LED1_LINK_1000 | LED2_LINK_100 | LED_VALID;
-+              break;
-+      case 0xFD:
-+              led = LED0_ACTIVE | LED1_LINK_1000 | LED2_LINK_100 |
-+                    LED2_LINK_10 | LED_VALID;
-+              break;
-+      case 0xFC:
-+              led = LED0_ACTIVE | LED1_ACTIVE | LED1_LINK_1000 | LED2_ACTIVE |
-+                    LED2_LINK_100 | LED2_LINK_10 | LED_VALID;
-+              break;
-+      default:
-+              led = LED0_ACTIVE | LED1_LINK_10 | LED1_LINK_100 |
-+                    LED1_LINK_1000 | LED2_ACTIVE | LED2_LINK_10 |
-+                    LED2_LINK_100 | LED2_LINK_1000 | LED_VALID;
-+              break;
-+      }
-+
-+      *ledvalue = led;
-+
-+      return 0;
-+}
-+
-+static int ax88179_led_setting(struct usbnet *dev)
-+{
-+      u8 ledfd, value = 0;
-+      u16 tmp, ledact, ledlink, ledvalue = 0, delay = HZ / 10;
-+      unsigned long jtimeout;
-+
-+      /* Check AX88179 version. UA1 or UA2*/
-+      ax88179_read_cmd(dev, AX_ACCESS_MAC, GENERAL_STATUS, 1, 1, &value);
-+
-+      if (!(value & AX_SECLD)) {      /* UA1 */
-+              value = AX_GPIO_CTRL_GPIO3EN | AX_GPIO_CTRL_GPIO2EN |
-+                      AX_GPIO_CTRL_GPIO1EN;
-+              if (ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_GPIO_CTRL,
-+                                    1, 1, &value) < 0)
-+                      return -EINVAL;
-+      }
-+
-+      /* Check EEPROM */
-+      if (!ax88179_check_eeprom(dev)) {
-+              value = 0x42;
-+              if (ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_SROM_ADDR,
-+                                    1, 1, &value) < 0)
-+                      return -EINVAL;
-+
-+              value = EEP_RD;
-+              if (ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_SROM_CMD,
-+                                    1, 1, &value) < 0)
-+                      return -EINVAL;
-+
-+              jtimeout = jiffies + delay;
-+              do {
-+                      ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_SROM_CMD,
-+                                       1, 1, &value);
-+
-+                      if (time_after(jiffies, jtimeout))
-+                              return -EINVAL;
-+
-+              } while (value & EEP_BUSY);
-+
-+              ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_SROM_DATA_HIGH,
-+                               1, 1, &value);
-+              ledvalue = (value << 8);
-+
-+              ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_SROM_DATA_LOW,
-+                               1, 1, &value);
-+              ledvalue |= value;
-+
-+              /* load internal ROM for defaule setting */
-+              if ((ledvalue == 0xFFFF) || ((ledvalue & LED_VALID) == 0))
-+                      ax88179_convert_old_led(dev, &ledvalue);
-+
-+      } else if (!ax88179_check_efuse(dev, &ledvalue)) {
-+              if ((ledvalue == 0xFFFF) || ((ledvalue & LED_VALID) == 0))
-+                      ax88179_convert_old_led(dev, &ledvalue);
-+      } else {
-+              ax88179_convert_old_led(dev, &ledvalue);
-+      }
-+
-+      tmp = GMII_PHY_PGSEL_EXT;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_PHY_PAGE_SELECT, 2, &tmp);
-+
-+      tmp = 0x2c;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_PHYPAGE, 2, &tmp);
-+
-+      ax88179_read_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                       GMII_LED_ACT, 2, &ledact);
-+
-+      ax88179_read_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                       GMII_LED_LINK, 2, &ledlink);
-+
-+      ledact &= GMII_LED_ACTIVE_MASK;
-+      ledlink &= GMII_LED_LINK_MASK;
-+
-+      if (ledvalue & LED0_ACTIVE)
-+              ledact |= GMII_LED0_ACTIVE;
-+
-+      if (ledvalue & LED1_ACTIVE)
-+              ledact |= GMII_LED1_ACTIVE;
-+
-+      if (ledvalue & LED2_ACTIVE)
-+              ledact |= GMII_LED2_ACTIVE;
-+
-+      if (ledvalue & LED0_LINK_10)
-+              ledlink |= GMII_LED0_LINK_10;
-+
-+      if (ledvalue & LED1_LINK_10)
-+              ledlink |= GMII_LED1_LINK_10;
-+
-+      if (ledvalue & LED2_LINK_10)
-+              ledlink |= GMII_LED2_LINK_10;
-+
-+      if (ledvalue & LED0_LINK_100)
-+              ledlink |= GMII_LED0_LINK_100;
-+
-+      if (ledvalue & LED1_LINK_100)
-+              ledlink |= GMII_LED1_LINK_100;
-+
-+      if (ledvalue & LED2_LINK_100)
-+              ledlink |= GMII_LED2_LINK_100;
-+
-+      if (ledvalue & LED0_LINK_1000)
-+              ledlink |= GMII_LED0_LINK_1000;
-+
-+      if (ledvalue & LED1_LINK_1000)
-+              ledlink |= GMII_LED1_LINK_1000;
-+
-+      if (ledvalue & LED2_LINK_1000)
-+              ledlink |= GMII_LED2_LINK_1000;
-+
-+      tmp = ledact;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_LED_ACT, 2, &tmp);
-+
-+      tmp = ledlink;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_LED_LINK, 2, &tmp);
-+
-+      tmp = GMII_PHY_PGSEL_PAGE0;
-+      ax88179_write_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                        GMII_PHY_PAGE_SELECT, 2, &tmp);
-+
-+      /* LED full duplex setting */
-+      ledfd = 0;
-+      if (ledvalue & LED0_FD)
-+              ledfd |= 0x01;
-+      else if ((ledvalue & LED0_USB3_MASK) == 0)
-+              ledfd |= 0x02;
-+
-+      if (ledvalue & LED1_FD)
-+              ledfd |= 0x04;
-+      else if ((ledvalue & LED1_USB3_MASK) == 0)
-+              ledfd |= 0x08;
-+
-+      if (ledvalue & LED2_FD)
-+              ledfd |= 0x10;
-+      else if ((ledvalue & LED2_USB3_MASK) == 0)
-+              ledfd |= 0x20;
-+
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_LEDCTRL, 1, 1, &ledfd);
-+
-+      return 0;
-+}
-+
-+static int ax88179_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      u8 buf[5];
-+      u16 *tmp16;
-+      u8 *tmp;
-+      struct ax88179_data *ax179_data = (struct ax88179_data *)dev->data;
-+      struct ethtool_eee eee_data;
-+
-+      usbnet_get_endpoints(dev, intf);
-+
-+      tmp16 = (u16 *)buf;
-+      tmp = (u8 *)buf;
-+
-+      memset(ax179_data, 0, sizeof(*ax179_data));
-+
-+      /* Power up ethernet PHY */
-+      *tmp16 = 0;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, tmp16);
-+      *tmp16 = AX_PHYPWR_RSTCTL_IPRL;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, tmp16);
-+      msleep(200);
-+
-+      *tmp = AX_CLK_SELECT_ACS | AX_CLK_SELECT_BCS;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_CLK_SELECT, 1, 1, tmp);
-+      msleep(100);
-+
-+      ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, ETH_ALEN,
-+                       ETH_ALEN, dev->net->dev_addr);
-+      memcpy(dev->net->perm_addr, dev->net->dev_addr, ETH_ALEN);
-+
-+      /* RX bulk configuration */
-+      memcpy(tmp, &AX88179_BULKIN_SIZE[0], 5);
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RX_BULKIN_QCTRL, 5, 5, tmp);
-+
-+      dev->rx_urb_size = 1024 * 20;
-+
-+      *tmp = 0x34;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PAUSE_WATERLVL_LOW, 1, 1, tmp);
-+
-+      *tmp = 0x52;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PAUSE_WATERLVL_HIGH,
-+                        1, 1, tmp);
-+
-+      dev->net->netdev_ops = &ax88179_netdev_ops;
-+      dev->net->ethtool_ops = &ax88179_ethtool_ops;
-+      dev->net->needed_headroom = 8;
-+
-+      /* Initialize MII structure */
-+      dev->mii.dev = dev->net;
-+      dev->mii.mdio_read = ax88179_mdio_read;
-+      dev->mii.mdio_write = ax88179_mdio_write;
-+      dev->mii.phy_id_mask = 0xff;
-+      dev->mii.reg_num_mask = 0xff;
-+      dev->mii.phy_id = 0x03;
-+      dev->mii.supports_gmii = 1;
-+
-+      dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
-+                            NETIF_F_RXCSUM;
-+
-+      dev->net->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
-+                               NETIF_F_RXCSUM;
-+
-+      /* Enable checksum offload */
-+      *tmp = AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP |
-+             AX_RXCOE_TCPV6 | AX_RXCOE_UDPV6;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RXCOE_CTL, 1, 1, tmp);
-+
-+      *tmp = AX_TXCOE_IP | AX_TXCOE_TCP | AX_TXCOE_UDP |
-+             AX_TXCOE_TCPV6 | AX_TXCOE_UDPV6;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_TXCOE_CTL, 1, 1, tmp);
-+
-+      /* Configure RX control register => start operation */
-+      *tmp16 = AX_RX_CTL_DROPCRCERR | AX_RX_CTL_IPE | AX_RX_CTL_START |
-+               AX_RX_CTL_AP | AX_RX_CTL_AMALL | AX_RX_CTL_AB;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2, tmp16);
-+
-+      *tmp = AX_MONITOR_MODE_PMETYPE | AX_MONITOR_MODE_PMEPOL |
-+             AX_MONITOR_MODE_RWMP;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_MONITOR_MOD, 1, 1, tmp);
-+
-+      /* Configure default medium type => giga */
-+      *tmp16 = AX_MEDIUM_RECEIVE_EN | AX_MEDIUM_TXFLOW_CTRLEN |
-+               AX_MEDIUM_RXFLOW_CTRLEN | AX_MEDIUM_FULL_DUPLEX |
-+               AX_MEDIUM_GIGAMODE;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                        2, 2, tmp16);
-+
-+      ax88179_led_setting(dev);
-+
-+      ax179_data->eee_enabled = 0;
-+      ax179_data->eee_active = 0;
-+
-+      ax88179_disable_eee(dev);
-+
-+      ax88179_ethtool_get_eee(dev, &eee_data);
-+      eee_data.advertised = 0;
-+      ax88179_ethtool_set_eee(dev, &eee_data);
-+
-+      /* Restart autoneg */
-+      mii_nway_restart(&dev->mii);
-+
-+      usbnet_link_change(dev, 0, 0);
-+
-+      return 0;
-+}
-+
-+static void ax88179_unbind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      u16 tmp16;
-+
-+      /* Configure RX control register => stop operation */
-+      tmp16 = AX_RX_CTL_STOP;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2, &tmp16);
-+
-+      tmp16 = 0;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_CLK_SELECT, 1, 1, &tmp16);
-+
-+      /* Power down ethernet PHY */
-+      tmp16 = 0;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, &tmp16);
-+}
-+
-+static void
-+ax88179_rx_checksum(struct sk_buff *skb, u32 *pkt_hdr)
-+{
-+      skb->ip_summed = CHECKSUM_NONE;
-+
-+      /* checksum error bit is set */
-+      if ((*pkt_hdr & AX_RXHDR_L3CSUM_ERR) ||
-+          (*pkt_hdr & AX_RXHDR_L4CSUM_ERR))
-+              return;
-+
-+      /* It must be a TCP or UDP packet with a valid checksum */
-+      if (((*pkt_hdr & AX_RXHDR_L4_TYPE_MASK) == AX_RXHDR_L4_TYPE_TCP) ||
-+          ((*pkt_hdr & AX_RXHDR_L4_TYPE_MASK) == AX_RXHDR_L4_TYPE_UDP))
-+              skb->ip_summed = CHECKSUM_UNNECESSARY;
-+}
-+
-+static int ax88179_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      struct sk_buff *ax_skb;
-+      int pkt_cnt;
-+      u32 rx_hdr;
-+      u16 hdr_off;
-+      u32 *pkt_hdr;
-+
-+      /* This check is no longer done by usbnet */
-+      if (skb->len < dev->net->hard_header_len)
-+              return 0;
-+
-+      skb_trim(skb, skb->len - 4);
-+      memcpy(&rx_hdr, skb_tail_pointer(skb), 4);
-+      le32_to_cpus(&rx_hdr);
-+
-+      pkt_cnt = (u16)rx_hdr;
-+      hdr_off = (u16)(rx_hdr >> 16);
-+      pkt_hdr = (u32 *)(skb->data + hdr_off);
-+
-+      while (pkt_cnt--) {
-+              u16 pkt_len;
-+
-+              le32_to_cpus(pkt_hdr);
-+              pkt_len = (*pkt_hdr >> 16) & 0x1fff;
-+
-+              /* Check CRC or runt packet */
-+              if ((*pkt_hdr & AX_RXHDR_CRC_ERR) ||
-+                  (*pkt_hdr & AX_RXHDR_DROP_ERR)) {
-+                      skb_pull(skb, (pkt_len + 7) & 0xFFF8);
-+                      pkt_hdr++;
-+                      continue;
-+              }
-+
-+              if (pkt_cnt == 0) {
-+                      /* Skip IP alignment psudo header */
-+                      skb_pull(skb, 2);
-+                      skb->len = pkt_len;
-+                      skb_set_tail_pointer(skb, pkt_len);
-+                      skb->truesize = pkt_len + sizeof(struct sk_buff);
-+                      ax88179_rx_checksum(skb, pkt_hdr);
-+                      return 1;
-+              }
-+
-+              ax_skb = skb_clone(skb, GFP_ATOMIC);
-+              if (ax_skb) {
-+                      ax_skb->len = pkt_len;
-+                      ax_skb->data = skb->data + 2;
-+                      skb_set_tail_pointer(ax_skb, pkt_len);
-+                      ax_skb->truesize = pkt_len + sizeof(struct sk_buff);
-+                      ax88179_rx_checksum(ax_skb, pkt_hdr);
-+                      usbnet_skb_return(dev, ax_skb);
-+              } else {
-+                      return 0;
-+              }
-+
-+              skb_pull(skb, (pkt_len + 7) & 0xFFF8);
-+              pkt_hdr++;
-+      }
-+      return 1;
-+}
-+
-+static struct sk_buff *
-+ax88179_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
-+{
-+      u32 tx_hdr1, tx_hdr2;
-+      int frame_size = dev->maxpacket;
-+      int mss = skb_shinfo(skb)->gso_size;
-+      int headroom;
-+
-+      tx_hdr1 = skb->len;
-+      tx_hdr2 = mss;
-+      if (((skb->len + 8) % frame_size) == 0)
-+              tx_hdr2 |= 0x80008000;  /* Enable padding */
-+
-+      headroom = skb_headroom(skb) - 8;
-+
-+      if ((skb_header_cloned(skb) || headroom < 0) &&
-+          pskb_expand_head(skb, headroom < 0 ? 8 : 0, 0, GFP_ATOMIC)) {
-+              dev_kfree_skb_any(skb);
-+              return NULL;
-+      }
-+
-+      skb_push(skb, 4);
-+      cpu_to_le32s(&tx_hdr2);
-+      skb_copy_to_linear_data(skb, &tx_hdr2, 4);
-+
-+      skb_push(skb, 4);
-+      cpu_to_le32s(&tx_hdr1);
-+      skb_copy_to_linear_data(skb, &tx_hdr1, 4);
-+
-+      return skb;
-+}
-+
-+static int ax88179_link_reset(struct usbnet *dev)
-+{
-+      struct ax88179_data *ax179_data = (struct ax88179_data *)dev->data;
-+      u8 tmp[5], link_sts;
-+      u16 mode, tmp16, delay = HZ / 10;
-+      u32 tmp32 = 0x40000000;
-+      unsigned long jtimeout;
-+
-+      jtimeout = jiffies + delay;
-+      while (tmp32 & 0x40000000) {
-+              mode = 0;
-+              ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2, &mode);
-+              ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2,
-+                                &ax179_data->rxctl);
-+
-+              /*link up, check the usb device control TX FIFO full or empty*/
-+              ax88179_read_cmd(dev, 0x81, 0x8c, 0, 4, &tmp32);
-+
-+              if (time_after(jiffies, jtimeout))
-+                      return 0;
-+      }
-+
-+      mode = AX_MEDIUM_RECEIVE_EN | AX_MEDIUM_TXFLOW_CTRLEN |
-+             AX_MEDIUM_RXFLOW_CTRLEN;
-+
-+      ax88179_read_cmd(dev, AX_ACCESS_MAC, PHYSICAL_LINK_STATUS,
-+                       1, 1, &link_sts);
-+
-+      ax88179_read_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
-+                       GMII_PHY_PHYSR, 2, &tmp16);
-+
-+      if (!(tmp16 & GMII_PHY_PHYSR_LINK)) {
-+              return 0;
-+      } else if (GMII_PHY_PHYSR_GIGA == (tmp16 & GMII_PHY_PHYSR_SMASK)) {
-+              mode |= AX_MEDIUM_GIGAMODE | AX_MEDIUM_EN_125MHZ;
-+              if (dev->net->mtu > 1500)
-+                      mode |= AX_MEDIUM_JUMBO_EN;
-+
-+              if (link_sts & AX_USB_SS)
-+                      memcpy(tmp, &AX88179_BULKIN_SIZE[0], 5);
-+              else if (link_sts & AX_USB_HS)
-+                      memcpy(tmp, &AX88179_BULKIN_SIZE[1], 5);
-+              else
-+                      memcpy(tmp, &AX88179_BULKIN_SIZE[3], 5);
-+      } else if (GMII_PHY_PHYSR_100 == (tmp16 & GMII_PHY_PHYSR_SMASK)) {
-+              mode |= AX_MEDIUM_PS;
-+
-+              if (link_sts & (AX_USB_SS | AX_USB_HS))
-+                      memcpy(tmp, &AX88179_BULKIN_SIZE[2], 5);
-+              else
-+                      memcpy(tmp, &AX88179_BULKIN_SIZE[3], 5);
-+      } else {
-+              memcpy(tmp, &AX88179_BULKIN_SIZE[3], 5);
-+      }
-+
-+      /* RX bulk configuration */
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RX_BULKIN_QCTRL, 5, 5, tmp);
-+
-+      dev->rx_urb_size = (1024 * (tmp[3] + 2));
-+
-+      if (tmp16 & GMII_PHY_PHYSR_FULL)
-+              mode |= AX_MEDIUM_FULL_DUPLEX;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                        2, 2, &mode);
-+
-+      ax179_data->eee_enabled = ax88179_chk_eee(dev);
-+
-+      netif_carrier_on(dev->net);
-+
-+      return 0;
-+}
-+
-+static int ax88179_reset(struct usbnet *dev)
-+{
-+      u8 buf[5];
-+      u16 *tmp16;
-+      u8 *tmp;
-+      struct ax88179_data *ax179_data = (struct ax88179_data *)dev->data;
-+      struct ethtool_eee eee_data;
-+
-+      tmp16 = (u16 *)buf;
-+      tmp = (u8 *)buf;
-+
-+      /* Power up ethernet PHY */
-+      *tmp16 = 0;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, tmp16);
-+
-+      *tmp16 = AX_PHYPWR_RSTCTL_IPRL;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, tmp16);
-+      msleep(200);
-+
-+      *tmp = AX_CLK_SELECT_ACS | AX_CLK_SELECT_BCS;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_CLK_SELECT, 1, 1, tmp);
-+      msleep(100);
-+
-+      /* Ethernet PHY Auto Detach*/
-+      ax88179_auto_detach(dev, 0);
-+
-+      ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, ETH_ALEN, ETH_ALEN,
-+                       dev->net->dev_addr);
-+      memcpy(dev->net->perm_addr, dev->net->dev_addr, ETH_ALEN);
-+
-+      /* RX bulk configuration */
-+      memcpy(tmp, &AX88179_BULKIN_SIZE[0], 5);
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RX_BULKIN_QCTRL, 5, 5, tmp);
-+
-+      dev->rx_urb_size = 1024 * 20;
-+
-+      *tmp = 0x34;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PAUSE_WATERLVL_LOW, 1, 1, tmp);
-+
-+      *tmp = 0x52;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PAUSE_WATERLVL_HIGH,
-+                        1, 1, tmp);
-+
-+      dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
-+                            NETIF_F_RXCSUM;
-+
-+      dev->net->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
-+                               NETIF_F_RXCSUM;
-+
-+      /* Enable checksum offload */
-+      *tmp = AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP |
-+             AX_RXCOE_TCPV6 | AX_RXCOE_UDPV6;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RXCOE_CTL, 1, 1, tmp);
-+
-+      *tmp = AX_TXCOE_IP | AX_TXCOE_TCP | AX_TXCOE_UDP |
-+             AX_TXCOE_TCPV6 | AX_TXCOE_UDPV6;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_TXCOE_CTL, 1, 1, tmp);
-+
-+      /* Configure RX control register => start operation */
-+      *tmp16 = AX_RX_CTL_DROPCRCERR | AX_RX_CTL_IPE | AX_RX_CTL_START |
-+               AX_RX_CTL_AP | AX_RX_CTL_AMALL | AX_RX_CTL_AB;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2, tmp16);
-+
-+      *tmp = AX_MONITOR_MODE_PMETYPE | AX_MONITOR_MODE_PMEPOL |
-+             AX_MONITOR_MODE_RWMP;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_MONITOR_MOD, 1, 1, tmp);
-+
-+      /* Configure default medium type => giga */
-+      *tmp16 = AX_MEDIUM_RECEIVE_EN | AX_MEDIUM_TXFLOW_CTRLEN |
-+               AX_MEDIUM_RXFLOW_CTRLEN | AX_MEDIUM_FULL_DUPLEX |
-+               AX_MEDIUM_GIGAMODE;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                        2, 2, tmp16);
-+
-+      ax88179_led_setting(dev);
-+
-+      ax179_data->eee_enabled = 0;
-+      ax179_data->eee_active = 0;
-+
-+      ax88179_disable_eee(dev);
-+
-+      ax88179_ethtool_get_eee(dev, &eee_data);
-+      eee_data.advertised = 0;
-+      ax88179_ethtool_set_eee(dev, &eee_data);
-+
-+      /* Restart autoneg */
-+      mii_nway_restart(&dev->mii);
-+
-+      usbnet_link_change(dev, 0, 0);
-+
-+      return 0;
-+}
-+
-+static int ax88179_stop(struct usbnet *dev)
-+{
-+      u16 tmp16;
-+
-+      ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                       2, 2, &tmp16);
-+      tmp16 &= ~AX_MEDIUM_RECEIVE_EN;
-+      ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
-+                        2, 2, &tmp16);
-+
-+      return 0;
-+}
-+
-+static const struct driver_info ax88179_info = {
-+      .description = "ASIX AX88179 USB 3.0 Gigabit Ethernet",
-+      .bind = ax88179_bind,
-+      .unbind = ax88179_unbind,
-+      .status = ax88179_status,
-+      .link_reset = ax88179_link_reset,
-+      .reset = ax88179_reset,
-+      .stop = ax88179_stop,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
-+      .rx_fixup = ax88179_rx_fixup,
-+      .tx_fixup = ax88179_tx_fixup,
-+};
-+
-+static const struct driver_info ax88178a_info = {
-+      .description = "ASIX AX88178A USB 2.0 Gigabit Ethernet",
-+      .bind = ax88179_bind,
-+      .unbind = ax88179_unbind,
-+      .status = ax88179_status,
-+      .link_reset = ax88179_link_reset,
-+      .reset = ax88179_reset,
-+      .stop = ax88179_stop,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
-+      .rx_fixup = ax88179_rx_fixup,
-+      .tx_fixup = ax88179_tx_fixup,
-+};
-+
-+static const struct driver_info dlink_dub1312_info = {
-+      .description = "D-Link DUB-1312 USB 3.0 to Gigabit Ethernet Adapter",
-+      .bind = ax88179_bind,
-+      .unbind = ax88179_unbind,
-+      .status = ax88179_status,
-+      .link_reset = ax88179_link_reset,
-+      .reset = ax88179_reset,
-+      .stop = ax88179_stop,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
-+      .rx_fixup = ax88179_rx_fixup,
-+      .tx_fixup = ax88179_tx_fixup,
-+};
-+
-+static const struct driver_info sitecom_info = {
-+      .description = "Sitecom USB 3.0 to Gigabit Adapter",
-+      .bind = ax88179_bind,
-+      .unbind = ax88179_unbind,
-+      .status = ax88179_status,
-+      .link_reset = ax88179_link_reset,
-+      .reset = ax88179_reset,
-+      .stop = ax88179_stop,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
-+      .rx_fixup = ax88179_rx_fixup,
-+      .tx_fixup = ax88179_tx_fixup,
-+};
-+
-+static const struct driver_info samsung_info = {
-+      .description = "Samsung USB Ethernet Adapter",
-+      .bind = ax88179_bind,
-+      .unbind = ax88179_unbind,
-+      .status = ax88179_status,
-+      .link_reset = ax88179_link_reset,
-+      .reset = ax88179_reset,
-+      .stop = ax88179_stop,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
-+      .rx_fixup = ax88179_rx_fixup,
-+      .tx_fixup = ax88179_tx_fixup,
-+};
-+
-+static const struct driver_info lenovo_info = {
-+      .description = "Lenovo OneLinkDock Gigabit LAN",
-+      .bind = ax88179_bind,
-+      .unbind = ax88179_unbind,
-+      .status = ax88179_status,
-+      .link_reset = ax88179_link_reset,
-+      .reset = ax88179_reset,
-+      .stop = ax88179_stop,
-+      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
-+      .rx_fixup = ax88179_rx_fixup,
-+      .tx_fixup = ax88179_tx_fixup,
-+};
-+
-+static const struct usb_device_id products[] = {
-+{
-+      /* ASIX AX88179 10/100/1000 */
-+      USB_DEVICE(0x0b95, 0x1790),
-+      .driver_info = (unsigned long)&ax88179_info,
-+}, {
-+      /* ASIX AX88178A 10/100/1000 */
-+      USB_DEVICE(0x0b95, 0x178a),
-+      .driver_info = (unsigned long)&ax88178a_info,
-+}, {
-+      /* D-Link DUB-1312 USB 3.0 to Gigabit Ethernet Adapter */
-+      USB_DEVICE(0x2001, 0x4a00),
-+      .driver_info = (unsigned long)&dlink_dub1312_info,
-+}, {
-+      /* Sitecom USB 3.0 to Gigabit Adapter */
-+      USB_DEVICE(0x0df6, 0x0072),
-+      .driver_info = (unsigned long)&sitecom_info,
-+}, {
-+      /* Samsung USB Ethernet Adapter */
-+      USB_DEVICE(0x04e8, 0xa100),
-+      .driver_info = (unsigned long)&samsung_info,
-+}, {
-+      /* Lenovo OneLinkDock Gigabit LAN */
-+      USB_DEVICE(0x17ef, 0x304b),
-+      .driver_info = (unsigned long)&lenovo_info,
-+},
-+      { },
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver ax88179_178a_driver = {
-+      .name =         "ax88179_178a",
-+      .id_table =     products,
-+      .probe =        usbnet_probe,
-+      .suspend =      ax88179_suspend,
-+      .resume =       ax88179_resume,
-+      .reset_resume = ax88179_resume,
-+      .disconnect =   usbnet_disconnect,
-+      .supports_autosuspend = 1,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(ax88179_178a_driver);
-+
-+MODULE_DESCRIPTION("ASIX AX88179/178A based USB 3.0/2.0 Gigabit Ethernet Devices");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/catc.c backports-4.2.6-1/drivers/net/usb/catc.c
---- backports-4.2.6-1.org/drivers/net/usb/catc.c       1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/catc.c   2016-06-28 14:35:17.975307221 +0200
-@@ -0,0 +1,965 @@
-+/*
-+ *  Copyright (c) 2001 Vojtech Pavlik
-+ *
-+ *  CATC EL1210A NetMate USB Ethernet driver
-+ *
-+ *  Sponsored by SuSE
-+ *
-+ *  Based on the work of
-+ *            Donald Becker
-+ * 
-+ *  Old chipset support added by Simon Evans <spse@secret.org.uk> 2002
-+ *    - adds support for Belkin F5U011
-+ */
-+
-+/*
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or 
-+ * (at your option) any later version.
-+ * 
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ * 
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ * 
-+ * Should you need to contact me, the author, you can do so either by
-+ * e-mail - mail your message to <vojtech@suse.cz>, or by paper mail:
-+ * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/skbuff.h>
-+#include <linux/spinlock.h>
-+#include <linux/ethtool.h>
-+#include <linux/crc32.h>
-+#include <linux/bitops.h>
-+#include <linux/gfp.h>
-+#include <asm/uaccess.h>
-+
-+#undef DEBUG
-+
-+#include <linux/usb.h>
-+
-+/*
-+ * Version information.
-+ */
-+
-+#define DRIVER_VERSION "v2.8"
-+#define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@suse.cz>"
-+#define DRIVER_DESC "CATC EL1210A NetMate USB Ethernet driver"
-+#define SHORT_DRIVER_DESC "EL1210A NetMate USB Ethernet"
-+
-+MODULE_AUTHOR(DRIVER_AUTHOR);
-+MODULE_DESCRIPTION(DRIVER_DESC);
-+MODULE_LICENSE("GPL");
-+
-+static const char driver_name[] = "catc";
-+
-+/*
-+ * Some defines.
-+ */ 
-+
-+#define STATS_UPDATE          (HZ)    /* Time between stats updates */
-+#define TX_TIMEOUT            (5*HZ)  /* Max time the queue can be stopped */
-+#define PKT_SZ                        1536    /* Max Ethernet packet size */
-+#define RX_MAX_BURST          15      /* Max packets per rx buffer (> 0, < 16) */
-+#define TX_MAX_BURST          15      /* Max full sized packets per tx buffer (> 0) */
-+#define CTRL_QUEUE            16      /* Max control requests in flight (power of two) */
-+#define RX_PKT_SZ             1600    /* Max size of receive packet for F5U011 */
-+
-+/*
-+ * Control requests.
-+ */
-+
-+enum control_requests {
-+      ReadMem =       0xf1,
-+      GetMac =        0xf2,
-+      Reset =         0xf4,
-+      SetMac =        0xf5,
-+      SetRxMode =     0xf5,  /* F5U011 only */
-+      WriteROM =      0xf8,
-+      SetReg =        0xfa,
-+      GetReg =        0xfb,
-+      WriteMem =      0xfc,
-+      ReadROM =       0xfd,
-+};
-+
-+/*
-+ * Registers.
-+ */
-+
-+enum register_offsets {
-+      TxBufCount =    0x20,
-+      RxBufCount =    0x21,
-+      OpModes =       0x22,
-+      TxQed =         0x23,
-+      RxQed =         0x24,
-+      MaxBurst =      0x25,
-+      RxUnit =        0x60,
-+      EthStatus =     0x61,
-+      StationAddr0 =  0x67,
-+      EthStats =      0x69,
-+      LEDCtrl =       0x81,
-+};
-+
-+enum eth_stats {
-+      TxSingleColl =  0x00,
-+        TxMultiColl = 0x02,
-+        TxExcessColl =        0x04,
-+        RxFramErr =   0x06,
-+};
-+
-+enum op_mode_bits {
-+      Op3MemWaits =   0x03,
-+      OpLenInclude =  0x08,
-+      OpRxMerge =     0x10,
-+      OpTxMerge =     0x20,
-+      OpWin95bugfix = 0x40,
-+      OpLoopback =    0x80,
-+};
-+
-+enum rx_filter_bits {
-+      RxEnable =      0x01,
-+      RxPolarity =    0x02,
-+      RxForceOK =     0x04,
-+      RxMultiCast =   0x08,
-+      RxPromisc =     0x10,
-+      AltRxPromisc =  0x20, /* F5U011 uses different bit */
-+};
-+
-+enum led_values {
-+      LEDFast =       0x01,
-+      LEDSlow =       0x02,
-+      LEDFlash =      0x03,
-+      LEDPulse =      0x04,
-+      LEDLink =       0x08,
-+};
-+
-+enum link_status {
-+      LinkNoChange = 0,
-+      LinkGood     = 1,
-+      LinkBad      = 2
-+};
-+
-+/*
-+ * The catc struct.
-+ */
-+
-+#define CTRL_RUNNING  0
-+#define RX_RUNNING    1
-+#define TX_RUNNING    2
-+
-+struct catc {
-+      struct net_device *netdev;
-+      struct usb_device *usbdev;
-+
-+      unsigned long flags;
-+
-+      unsigned int tx_ptr, tx_idx;
-+      unsigned int ctrl_head, ctrl_tail;
-+      spinlock_t tx_lock, ctrl_lock;
-+
-+      u8 tx_buf[2][TX_MAX_BURST * (PKT_SZ + 2)];
-+      u8 rx_buf[RX_MAX_BURST * (PKT_SZ + 2)];
-+      u8 irq_buf[2];
-+      u8 ctrl_buf[64];
-+      struct usb_ctrlrequest ctrl_dr;
-+
-+      struct timer_list timer;
-+      u8 stats_buf[8];
-+      u16 stats_vals[4];
-+      unsigned long last_stats;
-+
-+      u8 multicast[64];
-+
-+      struct ctrl_queue {
-+              u8 dir;
-+              u8 request;
-+              u16 value;
-+              u16 index;
-+              void *buf;
-+              int len;
-+              void (*callback)(struct catc *catc, struct ctrl_queue *q);
-+      } ctrl_queue[CTRL_QUEUE];
-+
-+      struct urb *tx_urb, *rx_urb, *irq_urb, *ctrl_urb;
-+
-+      u8 is_f5u011;   /* Set if device is an F5U011 */
-+      u8 rxmode[2];   /* Used for F5U011 */
-+      atomic_t recq_sz; /* Used for F5U011 - counter of waiting rx packets */
-+};
-+
-+/*
-+ * Useful macros.
-+ */
-+
-+#define catc_get_mac(catc, mac)                               catc_ctrl_msg(catc, USB_DIR_IN,  GetMac, 0, 0, mac,  6)
-+#define catc_reset(catc)                              catc_ctrl_msg(catc, USB_DIR_OUT, Reset, 0, 0, NULL, 0)
-+#define catc_set_reg(catc, reg, val)                  catc_ctrl_msg(catc, USB_DIR_OUT, SetReg, val, reg, NULL, 0)
-+#define catc_get_reg(catc, reg, buf)                  catc_ctrl_msg(catc, USB_DIR_IN,  GetReg, 0, reg, buf, 1)
-+#define catc_write_mem(catc, addr, buf, size)         catc_ctrl_msg(catc, USB_DIR_OUT, WriteMem, 0, addr, buf, size)
-+#define catc_read_mem(catc, addr, buf, size)          catc_ctrl_msg(catc, USB_DIR_IN,  ReadMem, 0, addr, buf, size)
-+
-+#define f5u011_rxmode(catc, rxmode)                   catc_ctrl_msg(catc, USB_DIR_OUT, SetRxMode, 0, 1, rxmode, 2)
-+#define f5u011_rxmode_async(catc, rxmode)             catc_ctrl_async(catc, USB_DIR_OUT, SetRxMode, 0, 1, &rxmode, 2, NULL)
-+#define f5u011_mchash_async(catc, hash)                       catc_ctrl_async(catc, USB_DIR_OUT, SetRxMode, 0, 2, &hash, 8, NULL)
-+
-+#define catc_set_reg_async(catc, reg, val)            catc_ctrl_async(catc, USB_DIR_OUT, SetReg, val, reg, NULL, 0, NULL)
-+#define catc_get_reg_async(catc, reg, cb)             catc_ctrl_async(catc, USB_DIR_IN, GetReg, 0, reg, NULL, 1, cb)
-+#define catc_write_mem_async(catc, addr, buf, size)   catc_ctrl_async(catc, USB_DIR_OUT, WriteMem, 0, addr, buf, size, NULL)
-+
-+/*
-+ * Receive routines.
-+ */
-+
-+static void catc_rx_done(struct urb *urb)
-+{
-+      struct catc *catc = urb->context;
-+      u8 *pkt_start = urb->transfer_buffer;
-+      struct sk_buff *skb;
-+      int pkt_len, pkt_offset = 0;
-+      int status = urb->status;
-+
-+      if (!catc->is_f5u011) {
-+              clear_bit(RX_RUNNING, &catc->flags);
-+              pkt_offset = 2;
-+      }
-+
-+      if (status) {
-+              dev_dbg(&urb->dev->dev, "rx_done, status %d, length %d\n",
-+                      status, urb->actual_length);
-+              return;
-+      }
-+
-+      do {
-+              if(!catc->is_f5u011) {
-+                      pkt_len = le16_to_cpup((__le16*)pkt_start);
-+                      if (pkt_len > urb->actual_length) {
-+                              catc->netdev->stats.rx_length_errors++;
-+                              catc->netdev->stats.rx_errors++;
-+                              break;
-+                      }
-+              } else {
-+                      pkt_len = urb->actual_length;
-+              }
-+
-+              if (!(skb = dev_alloc_skb(pkt_len)))
-+                      return;
-+
-+              skb_copy_to_linear_data(skb, pkt_start + pkt_offset, pkt_len);
-+              skb_put(skb, pkt_len);
-+
-+              skb->protocol = eth_type_trans(skb, catc->netdev);
-+              netif_rx(skb);
-+
-+              catc->netdev->stats.rx_packets++;
-+              catc->netdev->stats.rx_bytes += pkt_len;
-+
-+              /* F5U011 only does one packet per RX */
-+              if (catc->is_f5u011)
-+                      break;
-+              pkt_start += (((pkt_len + 1) >> 6) + 1) << 6;
-+
-+      } while (pkt_start - (u8 *) urb->transfer_buffer < urb->actual_length);
-+
-+      if (catc->is_f5u011) {
-+              if (atomic_read(&catc->recq_sz)) {
-+                      int state;
-+                      atomic_dec(&catc->recq_sz);
-+                      netdev_dbg(catc->netdev, "getting extra packet\n");
-+                      urb->dev = catc->usbdev;
-+                      if ((state = usb_submit_urb(urb, GFP_ATOMIC)) < 0) {
-+                              netdev_dbg(catc->netdev,
-+                                         "submit(rx_urb) status %d\n", state);
-+                      }
-+              } else {
-+                      clear_bit(RX_RUNNING, &catc->flags);
-+              }
-+      }
-+}
-+
-+static void catc_irq_done(struct urb *urb)
-+{
-+      struct catc *catc = urb->context;
-+      u8 *data = urb->transfer_buffer;
-+      int status = urb->status;
-+      unsigned int hasdata = 0, linksts = LinkNoChange;
-+      int res;
-+
-+      if (!catc->is_f5u011) {
-+              hasdata = data[1] & 0x80;
-+              if (data[1] & 0x40)
-+                      linksts = LinkGood;
-+              else if (data[1] & 0x20)
-+                      linksts = LinkBad;
-+      } else {
-+              hasdata = (unsigned int)(be16_to_cpup((__be16*)data) & 0x0fff);
-+              if (data[0] == 0x90)
-+                      linksts = LinkGood;
-+              else if (data[0] == 0xA0)
-+                      linksts = LinkBad;
-+      }
-+
-+      switch (status) {
-+      case 0:                 /* success */
-+              break;
-+      case -ECONNRESET:       /* unlink */
-+      case -ENOENT:
-+      case -ESHUTDOWN:
-+              return;
-+      /* -EPIPE:  should clear the halt */
-+      default:                /* error */
-+              dev_dbg(&urb->dev->dev,
-+                      "irq_done, status %d, data %02x %02x.\n",
-+                      status, data[0], data[1]);
-+              goto resubmit;
-+      }
-+
-+      if (linksts == LinkGood) {
-+              netif_carrier_on(catc->netdev);
-+              netdev_dbg(catc->netdev, "link ok\n");
-+      }
-+
-+      if (linksts == LinkBad) {
-+              netif_carrier_off(catc->netdev);
-+              netdev_dbg(catc->netdev, "link bad\n");
-+      }
-+
-+      if (hasdata) {
-+              if (test_and_set_bit(RX_RUNNING, &catc->flags)) {
-+                      if (catc->is_f5u011)
-+                              atomic_inc(&catc->recq_sz);
-+              } else {
-+                      catc->rx_urb->dev = catc->usbdev;
-+                      if ((res = usb_submit_urb(catc->rx_urb, GFP_ATOMIC)) < 0) {
-+                              dev_err(&catc->usbdev->dev,
-+                                      "submit(rx_urb) status %d\n", res);
-+                      }
-+              } 
-+      }
-+resubmit:
-+      res = usb_submit_urb (urb, GFP_ATOMIC);
-+      if (res)
-+              dev_err(&catc->usbdev->dev,
-+                      "can't resubmit intr, %s-%s, status %d\n",
-+                      catc->usbdev->bus->bus_name,
-+                      catc->usbdev->devpath, res);
-+}
-+
-+/*
-+ * Transmit routines.
-+ */
-+
-+static int catc_tx_run(struct catc *catc)
-+{
-+      int status;
-+
-+      if (catc->is_f5u011)
-+              catc->tx_ptr = (catc->tx_ptr + 63) & ~63;
-+
-+      catc->tx_urb->transfer_buffer_length = catc->tx_ptr;
-+      catc->tx_urb->transfer_buffer = catc->tx_buf[catc->tx_idx];
-+      catc->tx_urb->dev = catc->usbdev;
-+
-+      if ((status = usb_submit_urb(catc->tx_urb, GFP_ATOMIC)) < 0)
-+              dev_err(&catc->usbdev->dev, "submit(tx_urb), status %d\n",
-+                      status);
-+
-+      catc->tx_idx = !catc->tx_idx;
-+      catc->tx_ptr = 0;
-+
-+      catc->netdev->trans_start = jiffies;
-+      return status;
-+}
-+
-+static void catc_tx_done(struct urb *urb)
-+{
-+      struct catc *catc = urb->context;
-+      unsigned long flags;
-+      int r, status = urb->status;
-+
-+      if (status == -ECONNRESET) {
-+              dev_dbg(&urb->dev->dev, "Tx Reset.\n");
-+              urb->status = 0;
-+              catc->netdev->trans_start = jiffies;
-+              catc->netdev->stats.tx_errors++;
-+              clear_bit(TX_RUNNING, &catc->flags);
-+              netif_wake_queue(catc->netdev);
-+              return;
-+      }
-+
-+      if (status) {
-+              dev_dbg(&urb->dev->dev, "tx_done, status %d, length %d\n",
-+                      status, urb->actual_length);
-+              return;
-+      }
-+
-+      spin_lock_irqsave(&catc->tx_lock, flags);
-+
-+      if (catc->tx_ptr) {
-+              r = catc_tx_run(catc);
-+              if (unlikely(r < 0))
-+                      clear_bit(TX_RUNNING, &catc->flags);
-+      } else {
-+              clear_bit(TX_RUNNING, &catc->flags);
-+      }
-+
-+      netif_wake_queue(catc->netdev);
-+
-+      spin_unlock_irqrestore(&catc->tx_lock, flags);
-+}
-+
-+static netdev_tx_t catc_start_xmit(struct sk_buff *skb,
-+                                       struct net_device *netdev)
-+{
-+      struct catc *catc = netdev_priv(netdev);
-+      unsigned long flags;
-+      int r = 0;
-+      char *tx_buf;
-+
-+      spin_lock_irqsave(&catc->tx_lock, flags);
-+
-+      catc->tx_ptr = (((catc->tx_ptr - 1) >> 6) + 1) << 6;
-+      tx_buf = catc->tx_buf[catc->tx_idx] + catc->tx_ptr;
-+      if (catc->is_f5u011)
-+              *(__be16 *)tx_buf = cpu_to_be16(skb->len);
-+      else
-+              *(__le16 *)tx_buf = cpu_to_le16(skb->len);
-+      skb_copy_from_linear_data(skb, tx_buf + 2, skb->len);
-+      catc->tx_ptr += skb->len + 2;
-+
-+      if (!test_and_set_bit(TX_RUNNING, &catc->flags)) {
-+              r = catc_tx_run(catc);
-+              if (r < 0)
-+                      clear_bit(TX_RUNNING, &catc->flags);
-+      }
-+
-+      if ((catc->is_f5u011 && catc->tx_ptr) ||
-+          (catc->tx_ptr >= ((TX_MAX_BURST - 1) * (PKT_SZ + 2))))
-+              netif_stop_queue(netdev);
-+
-+      spin_unlock_irqrestore(&catc->tx_lock, flags);
-+
-+      if (r >= 0) {
-+              catc->netdev->stats.tx_bytes += skb->len;
-+              catc->netdev->stats.tx_packets++;
-+      }
-+
-+      dev_kfree_skb(skb);
-+
-+      return NETDEV_TX_OK;
-+}
-+
-+static void catc_tx_timeout(struct net_device *netdev)
-+{
-+      struct catc *catc = netdev_priv(netdev);
-+
-+      dev_warn(&netdev->dev, "Transmit timed out.\n");
-+      usb_unlink_urb(catc->tx_urb);
-+}
-+
-+/*
-+ * Control messages.
-+ */
-+
-+static int catc_ctrl_msg(struct catc *catc, u8 dir, u8 request, u16 value, u16 index, void *buf, int len)
-+{
-+        int retval = usb_control_msg(catc->usbdev,
-+              dir ? usb_rcvctrlpipe(catc->usbdev, 0) : usb_sndctrlpipe(catc->usbdev, 0),
-+               request, 0x40 | dir, value, index, buf, len, 1000);
-+        return retval < 0 ? retval : 0;
-+}
-+
-+static void catc_ctrl_run(struct catc *catc)
-+{
-+      struct ctrl_queue *q = catc->ctrl_queue + catc->ctrl_tail;
-+      struct usb_device *usbdev = catc->usbdev;
-+      struct urb *urb = catc->ctrl_urb;
-+      struct usb_ctrlrequest *dr = &catc->ctrl_dr;
-+      int status;
-+
-+      dr->bRequest = q->request;
-+      dr->bRequestType = 0x40 | q->dir;
-+      dr->wValue = cpu_to_le16(q->value);
-+      dr->wIndex = cpu_to_le16(q->index);
-+      dr->wLength = cpu_to_le16(q->len);
-+
-+        urb->pipe = q->dir ? usb_rcvctrlpipe(usbdev, 0) : usb_sndctrlpipe(usbdev, 0);
-+      urb->transfer_buffer_length = q->len;
-+      urb->transfer_buffer = catc->ctrl_buf;
-+      urb->setup_packet = (void *) dr;
-+      urb->dev = usbdev;
-+
-+      if (!q->dir && q->buf && q->len)
-+              memcpy(catc->ctrl_buf, q->buf, q->len);
-+
-+      if ((status = usb_submit_urb(catc->ctrl_urb, GFP_ATOMIC)))
-+              dev_err(&catc->usbdev->dev, "submit(ctrl_urb) status %d\n",
-+                      status);
-+}
-+
-+static void catc_ctrl_done(struct urb *urb)
-+{
-+      struct catc *catc = urb->context;
-+      struct ctrl_queue *q;
-+      unsigned long flags;
-+      int status = urb->status;
-+
-+      if (status)
-+              dev_dbg(&urb->dev->dev, "ctrl_done, status %d, len %d.\n",
-+                      status, urb->actual_length);
-+
-+      spin_lock_irqsave(&catc->ctrl_lock, flags);
-+
-+      q = catc->ctrl_queue + catc->ctrl_tail;
-+
-+      if (q->dir) {
-+              if (q->buf && q->len)
-+                      memcpy(q->buf, catc->ctrl_buf, q->len);
-+              else
-+                      q->buf = catc->ctrl_buf;
-+      }
-+
-+      if (q->callback)
-+              q->callback(catc, q);
-+
-+      catc->ctrl_tail = (catc->ctrl_tail + 1) & (CTRL_QUEUE - 1);
-+
-+      if (catc->ctrl_head != catc->ctrl_tail)
-+              catc_ctrl_run(catc);
-+      else
-+              clear_bit(CTRL_RUNNING, &catc->flags);
-+
-+      spin_unlock_irqrestore(&catc->ctrl_lock, flags);
-+}
-+
-+static int catc_ctrl_async(struct catc *catc, u8 dir, u8 request, u16 value,
-+      u16 index, void *buf, int len, void (*callback)(struct catc *catc, struct ctrl_queue *q))
-+{
-+      struct ctrl_queue *q;
-+      int retval = 0;
-+      unsigned long flags;
-+
-+      spin_lock_irqsave(&catc->ctrl_lock, flags);
-+      
-+      q = catc->ctrl_queue + catc->ctrl_head;
-+
-+      q->dir = dir;
-+      q->request = request;
-+      q->value = value;
-+      q->index = index;
-+      q->buf = buf;
-+      q->len = len;
-+      q->callback = callback;
-+
-+      catc->ctrl_head = (catc->ctrl_head + 1) & (CTRL_QUEUE - 1);
-+
-+      if (catc->ctrl_head == catc->ctrl_tail) {
-+              dev_err(&catc->usbdev->dev, "ctrl queue full\n");
-+              catc->ctrl_tail = (catc->ctrl_tail + 1) & (CTRL_QUEUE - 1);
-+              retval = -1;
-+      }
-+
-+      if (!test_and_set_bit(CTRL_RUNNING, &catc->flags))
-+              catc_ctrl_run(catc);
-+
-+      spin_unlock_irqrestore(&catc->ctrl_lock, flags);
-+
-+      return retval;
-+}
-+
-+/*
-+ * Statistics.
-+ */
-+
-+static void catc_stats_done(struct catc *catc, struct ctrl_queue *q)
-+{
-+      int index = q->index - EthStats;
-+      u16 data, last;
-+
-+      catc->stats_buf[index] = *((char *)q->buf);
-+
-+      if (index & 1)
-+              return;
-+
-+      data = ((u16)catc->stats_buf[index] << 8) | catc->stats_buf[index + 1];
-+      last = catc->stats_vals[index >> 1];
-+
-+      switch (index) {
-+              case TxSingleColl:
-+              case TxMultiColl:
-+                      catc->netdev->stats.collisions += data - last;
-+                      break;
-+              case TxExcessColl:
-+                      catc->netdev->stats.tx_aborted_errors += data - last;
-+                      catc->netdev->stats.tx_errors += data - last;
-+                      break;
-+              case RxFramErr:
-+                      catc->netdev->stats.rx_frame_errors += data - last;
-+                      catc->netdev->stats.rx_errors += data - last;
-+                      break;
-+      }
-+
-+      catc->stats_vals[index >> 1] = data;
-+}
-+
-+static void catc_stats_timer(unsigned long data)
-+{
-+      struct catc *catc = (void *) data;
-+      int i;
-+
-+      for (i = 0; i < 8; i++)
-+              catc_get_reg_async(catc, EthStats + 7 - i, catc_stats_done);
-+
-+      mod_timer(&catc->timer, jiffies + STATS_UPDATE);
-+}
-+
-+/*
-+ * Receive modes. Broadcast, Multicast, Promisc.
-+ */
-+
-+static void catc_multicast(unsigned char *addr, u8 *multicast)
-+{
-+      u32 crc;
-+
-+      crc = ether_crc_le(6, addr);
-+      multicast[(crc >> 3) & 0x3f] |= 1 << (crc & 7);
-+}
-+
-+static void catc_set_multicast_list(struct net_device *netdev)
-+{
-+      struct catc *catc = netdev_priv(netdev);
-+      struct netdev_hw_addr *ha;
-+      u8 broadcast[ETH_ALEN];
-+      u8 rx = RxEnable | RxPolarity | RxMultiCast;
-+
-+      eth_broadcast_addr(broadcast);
-+      memset(catc->multicast, 0, 64);
-+
-+      catc_multicast(broadcast, catc->multicast);
-+      catc_multicast(netdev->dev_addr, catc->multicast);
-+
-+      if (netdev->flags & IFF_PROMISC) {
-+              memset(catc->multicast, 0xff, 64);
-+              rx |= (!catc->is_f5u011) ? RxPromisc : AltRxPromisc;
-+      } 
-+
-+      if (netdev->flags & IFF_ALLMULTI) {
-+              memset(catc->multicast, 0xff, 64);
-+      } else {
-+              netdev_for_each_mc_addr(ha, netdev) {
-+                      u32 crc = ether_crc_le(6, ha->addr);
-+                      if (!catc->is_f5u011) {
-+                              catc->multicast[(crc >> 3) & 0x3f] |= 1 << (crc & 7);
-+                      } else {
-+                              catc->multicast[7-(crc >> 29)] |= 1 << ((crc >> 26) & 7);
-+                      }
-+              }
-+      }
-+      if (!catc->is_f5u011) {
-+              catc_set_reg_async(catc, RxUnit, rx);
-+              catc_write_mem_async(catc, 0xfa80, catc->multicast, 64);
-+      } else {
-+              f5u011_mchash_async(catc, catc->multicast);
-+              if (catc->rxmode[0] != rx) {
-+                      catc->rxmode[0] = rx;
-+                      netdev_dbg(catc->netdev,
-+                                 "Setting RX mode to %2.2X %2.2X\n",
-+                                 catc->rxmode[0], catc->rxmode[1]);
-+                      f5u011_rxmode_async(catc, catc->rxmode);
-+              }
-+      }
-+}
-+
-+static void catc_get_drvinfo(struct net_device *dev,
-+                           struct ethtool_drvinfo *info)
-+{
-+      struct catc *catc = netdev_priv(dev);
-+      strlcpy(info->driver, driver_name, sizeof(info->driver));
-+      strlcpy(info->version, DRIVER_VERSION, sizeof(info->version));
-+      usb_make_path(catc->usbdev, info->bus_info, sizeof(info->bus_info));
-+}
-+
-+static int catc_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-+{
-+      struct catc *catc = netdev_priv(dev);
-+      if (!catc->is_f5u011)
-+              return -EOPNOTSUPP;
-+
-+      cmd->supported = SUPPORTED_10baseT_Half | SUPPORTED_TP;
-+      cmd->advertising = ADVERTISED_10baseT_Half | ADVERTISED_TP;
-+      ethtool_cmd_speed_set(cmd, SPEED_10);
-+      cmd->duplex = DUPLEX_HALF;
-+      cmd->port = PORT_TP; 
-+      cmd->phy_address = 0;
-+      cmd->transceiver = XCVR_INTERNAL;
-+      cmd->autoneg = AUTONEG_DISABLE;
-+      cmd->maxtxpkt = 1;
-+      cmd->maxrxpkt = 1;
-+      return 0;
-+}
-+
-+static const struct ethtool_ops ops = {
-+      .get_drvinfo = catc_get_drvinfo,
-+      .get_settings = catc_get_settings,
-+      .get_link = ethtool_op_get_link
-+};
-+
-+/*
-+ * Open, close.
-+ */
-+
-+static int catc_open(struct net_device *netdev)
-+{
-+      struct catc *catc = netdev_priv(netdev);
-+      int status;
-+
-+      catc->irq_urb->dev = catc->usbdev;
-+      if ((status = usb_submit_urb(catc->irq_urb, GFP_KERNEL)) < 0) {
-+              dev_err(&catc->usbdev->dev, "submit(irq_urb) status %d\n",
-+                      status);
-+              return -1;
-+      }
-+
-+      netif_start_queue(netdev);
-+
-+      if (!catc->is_f5u011)
-+              mod_timer(&catc->timer, jiffies + STATS_UPDATE);
-+
-+      return 0;
-+}
-+
-+static int catc_stop(struct net_device *netdev)
-+{
-+      struct catc *catc = netdev_priv(netdev);
-+
-+      netif_stop_queue(netdev);
-+
-+      if (!catc->is_f5u011)
-+              del_timer_sync(&catc->timer);
-+
-+      usb_kill_urb(catc->rx_urb);
-+      usb_kill_urb(catc->tx_urb);
-+      usb_kill_urb(catc->irq_urb);
-+      usb_kill_urb(catc->ctrl_urb);
-+
-+      return 0;
-+}
-+
-+static const struct net_device_ops catc_netdev_ops = {
-+      .ndo_open               = catc_open,
-+      .ndo_stop               = catc_stop,
-+      .ndo_start_xmit         = catc_start_xmit,
-+
-+      .ndo_tx_timeout         = catc_tx_timeout,
-+      .ndo_set_rx_mode        = catc_set_multicast_list,
-+      .ndo_change_mtu         = eth_change_mtu,
-+      .ndo_set_mac_address    = eth_mac_addr,
-+      .ndo_validate_addr      = eth_validate_addr,
-+};
-+
-+/*
-+ * USB probe, disconnect.
-+ */
-+
-+static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id)
-+{
-+      struct device *dev = &intf->dev;
-+      struct usb_device *usbdev = interface_to_usbdev(intf);
-+      struct net_device *netdev;
-+      struct catc *catc;
-+      u8 broadcast[ETH_ALEN];
-+      int i, pktsz;
-+
-+      if (usb_set_interface(usbdev,
-+                      intf->altsetting->desc.bInterfaceNumber, 1)) {
-+              dev_err(dev, "Can't set altsetting 1.\n");
-+              return -EIO;
-+      }
-+
-+      netdev = alloc_etherdev(sizeof(struct catc));
-+      if (!netdev)
-+              return -ENOMEM;
-+
-+      catc = netdev_priv(netdev);
-+
-+      netdev->netdev_ops = &catc_netdev_ops;
-+      netdev->watchdog_timeo = TX_TIMEOUT;
-+      netdev->ethtool_ops = &ops;
-+
-+      catc->usbdev = usbdev;
-+      catc->netdev = netdev;
-+
-+      spin_lock_init(&catc->tx_lock);
-+      spin_lock_init(&catc->ctrl_lock);
-+
-+      init_timer(&catc->timer);
-+      catc->timer.data = (long) catc;
-+      catc->timer.function = catc_stats_timer;
-+
-+      catc->ctrl_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      catc->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      catc->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      catc->irq_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if ((!catc->ctrl_urb) || (!catc->tx_urb) || 
-+          (!catc->rx_urb) || (!catc->irq_urb)) {
-+              dev_err(&intf->dev, "No free urbs available.\n");
-+              usb_free_urb(catc->ctrl_urb);
-+              usb_free_urb(catc->tx_urb);
-+              usb_free_urb(catc->rx_urb);
-+              usb_free_urb(catc->irq_urb);
-+              free_netdev(netdev);
-+              return -ENOMEM;
-+      }
-+
-+      /* The F5U011 has the same vendor/product as the netmate but a device version of 0x130 */
-+      if (le16_to_cpu(usbdev->descriptor.idVendor) == 0x0423 && 
-+          le16_to_cpu(usbdev->descriptor.idProduct) == 0xa &&
-+          le16_to_cpu(catc->usbdev->descriptor.bcdDevice) == 0x0130) {
-+              dev_dbg(dev, "Testing for f5u011\n");
-+              catc->is_f5u011 = 1;            
-+              atomic_set(&catc->recq_sz, 0);
-+              pktsz = RX_PKT_SZ;
-+      } else {
-+              pktsz = RX_MAX_BURST * (PKT_SZ + 2);
-+      }
-+      
-+      usb_fill_control_urb(catc->ctrl_urb, usbdev, usb_sndctrlpipe(usbdev, 0),
-+              NULL, NULL, 0, catc_ctrl_done, catc);
-+
-+      usb_fill_bulk_urb(catc->tx_urb, usbdev, usb_sndbulkpipe(usbdev, 1),
-+              NULL, 0, catc_tx_done, catc);
-+
-+      usb_fill_bulk_urb(catc->rx_urb, usbdev, usb_rcvbulkpipe(usbdev, 1),
-+              catc->rx_buf, pktsz, catc_rx_done, catc);
-+
-+      usb_fill_int_urb(catc->irq_urb, usbdev, usb_rcvintpipe(usbdev, 2),
-+                catc->irq_buf, 2, catc_irq_done, catc, 1);
-+
-+      if (!catc->is_f5u011) {
-+              dev_dbg(dev, "Checking memory size\n");
-+
-+              i = 0x12345678;
-+              catc_write_mem(catc, 0x7a80, &i, 4);
-+              i = 0x87654321; 
-+              catc_write_mem(catc, 0xfa80, &i, 4);
-+              catc_read_mem(catc, 0x7a80, &i, 4);
-+        
-+              switch (i) {
-+              case 0x12345678:
-+                      catc_set_reg(catc, TxBufCount, 8);
-+                      catc_set_reg(catc, RxBufCount, 32);
-+                      dev_dbg(dev, "64k Memory\n");
-+                      break;
-+              default:
-+                      dev_warn(&intf->dev,
-+                               "Couldn't detect memory size, assuming 32k\n");
-+              case 0x87654321:
-+                      catc_set_reg(catc, TxBufCount, 4);
-+                      catc_set_reg(catc, RxBufCount, 16);
-+                      dev_dbg(dev, "32k Memory\n");
-+                      break;
-+              }
-+        
-+              dev_dbg(dev, "Getting MAC from SEEROM.\n");
-+        
-+              catc_get_mac(catc, netdev->dev_addr);
-+              
-+              dev_dbg(dev, "Setting MAC into registers.\n");
-+        
-+              for (i = 0; i < 6; i++)
-+                      catc_set_reg(catc, StationAddr0 - i, netdev->dev_addr[i]);
-+              
-+              dev_dbg(dev, "Filling the multicast list.\n");
-+        
-+              eth_broadcast_addr(broadcast);
-+              catc_multicast(broadcast, catc->multicast);
-+              catc_multicast(netdev->dev_addr, catc->multicast);
-+              catc_write_mem(catc, 0xfa80, catc->multicast, 64);
-+              
-+              dev_dbg(dev, "Clearing error counters.\n");
-+              
-+              for (i = 0; i < 8; i++)
-+                      catc_set_reg(catc, EthStats + i, 0);
-+              catc->last_stats = jiffies;
-+              
-+              dev_dbg(dev, "Enabling.\n");
-+              
-+              catc_set_reg(catc, MaxBurst, RX_MAX_BURST);
-+              catc_set_reg(catc, OpModes, OpTxMerge | OpRxMerge | OpLenInclude | Op3MemWaits);
-+              catc_set_reg(catc, LEDCtrl, LEDLink);
-+              catc_set_reg(catc, RxUnit, RxEnable | RxPolarity | RxMultiCast);
-+      } else {
-+              dev_dbg(dev, "Performing reset\n");
-+              catc_reset(catc);
-+              catc_get_mac(catc, netdev->dev_addr);
-+              
-+              dev_dbg(dev, "Setting RX Mode\n");
-+              catc->rxmode[0] = RxEnable | RxPolarity | RxMultiCast;
-+              catc->rxmode[1] = 0;
-+              f5u011_rxmode(catc, catc->rxmode);
-+      }
-+      dev_dbg(dev, "Init done.\n");
-+      printk(KERN_INFO "%s: %s USB Ethernet at usb-%s-%s, %pM.\n",
-+             netdev->name, (catc->is_f5u011) ? "Belkin F5U011" : "CATC EL1210A NetMate",
-+             usbdev->bus->bus_name, usbdev->devpath, netdev->dev_addr);
-+      usb_set_intfdata(intf, catc);
-+
-+      SET_NETDEV_DEV(netdev, &intf->dev);
-+      if (register_netdev(netdev) != 0) {
-+              usb_set_intfdata(intf, NULL);
-+              usb_free_urb(catc->ctrl_urb);
-+              usb_free_urb(catc->tx_urb);
-+              usb_free_urb(catc->rx_urb);
-+              usb_free_urb(catc->irq_urb);
-+              free_netdev(netdev);
-+              return -EIO;
-+      }
-+      return 0;
-+}
-+
-+static void catc_disconnect(struct usb_interface *intf)
-+{
-+      struct catc *catc = usb_get_intfdata(intf);
-+
-+      usb_set_intfdata(intf, NULL);
-+      if (catc) {
-+              unregister_netdev(catc->netdev);
-+              usb_free_urb(catc->ctrl_urb);
-+              usb_free_urb(catc->tx_urb);
-+              usb_free_urb(catc->rx_urb);
-+              usb_free_urb(catc->irq_urb);
-+              free_netdev(catc->netdev);
-+      }
-+}
-+
-+/*
-+ * Module functions and tables.
-+ */
-+
-+static struct usb_device_id catc_id_table [] = {
-+      { USB_DEVICE(0x0423, 0xa) },    /* CATC Netmate, Belkin F5U011 */
-+      { USB_DEVICE(0x0423, 0xc) },    /* CATC Netmate II, Belkin F5U111 */
-+      { USB_DEVICE(0x08d1, 0x1) },    /* smartBridges smartNIC */
-+      { }
-+};
-+
-+MODULE_DEVICE_TABLE(usb, catc_id_table);
-+
-+static struct usb_driver catc_driver = {
-+      .name =         driver_name,
-+      .probe =        catc_probe,
-+      .disconnect =   catc_disconnect,
-+      .id_table =     catc_id_table,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(catc_driver);
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/cdc_eem.c backports-4.2.6-1/drivers/net/usb/cdc_eem.c
---- backports-4.2.6-1.org/drivers/net/usb/cdc_eem.c    1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/cdc_eem.c        2016-06-28 14:35:17.975307221 +0200
-@@ -0,0 +1,381 @@
-+/*
-+ * USB CDC EEM network interface driver
-+ * Copyright (C) 2009 Oberthur Technologies
-+ * by Omar Laazimani, Olivier Condemine
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ctype.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/crc32.h>
-+#include <linux/usb/cdc.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/gfp.h>
-+#include <linux/if_vlan.h>
-+
-+
-+/*
-+ * This driver is an implementation of the CDC "Ethernet Emulation
-+ * Model" (EEM) specification, which encapsulates Ethernet frames
-+ * for transport over USB using a simpler USB device model than the
-+ * previous CDC "Ethernet Control Model" (ECM, or "CDC Ethernet").
-+ *
-+ * For details, see www.usb.org/developers/devclass_docs/CDC_EEM10.pdf
-+ *
-+ * This version has been tested with GIGAntIC WuaoW SIM Smart Card on 2.6.24,
-+ * 2.6.27 and 2.6.30rc2 kernel.
-+ * It has also been validated on Openmoko Om 2008.12 (based on 2.6.24 kernel).
-+ * build on 23-April-2009
-+ */
-+
-+#define EEM_HEAD      2               /* 2 byte header */
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static void eem_linkcmd_complete(struct urb *urb)
-+{
-+      dev_kfree_skb(urb->context);
-+      usb_free_urb(urb);
-+}
-+
-+static void eem_linkcmd(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      struct urb              *urb;
-+      int                     status;
-+
-+      urb = usb_alloc_urb(0, GFP_ATOMIC);
-+      if (!urb)
-+              goto fail;
-+
-+      usb_fill_bulk_urb(urb, dev->udev, dev->out,
-+                      skb->data, skb->len, eem_linkcmd_complete, skb);
-+
-+      status = usb_submit_urb(urb, GFP_ATOMIC);
-+      if (status) {
-+              usb_free_urb(urb);
-+fail:
-+              dev_kfree_skb(skb);
-+              netdev_warn(dev->net, "link cmd failure\n");
-+              return;
-+      }
-+}
-+
-+static int eem_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int status = 0;
-+
-+      status = usbnet_get_endpoints(dev, intf);
-+      if (status < 0) {
-+              usb_set_intfdata(intf, NULL);
-+              usb_driver_release_interface(driver_of(intf), intf);
-+              return status;
-+      }
-+
-+      /* no jumbogram (16K) support for now */
-+
-+      dev->net->hard_header_len += EEM_HEAD + ETH_FCS_LEN + VLAN_HLEN;
-+      dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
-+
-+      return 0;
-+}
-+
-+/*
-+ * EEM permits packing multiple Ethernet frames into USB transfers
-+ * (a "bundle"), but for TX we don't try to do that.
-+ */
-+static struct sk_buff *eem_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
-+                                     gfp_t flags)
-+{
-+      struct sk_buff  *skb2 = NULL;
-+      u16             len = skb->len;
-+      u32             crc = 0;
-+      int             padlen = 0;
-+
-+      /* When ((len + EEM_HEAD + ETH_FCS_LEN) % dev->maxpacket) is
-+       * zero, stick two bytes of zero length EEM packet on the end.
-+       * Else the framework would add invalid single byte padding,
-+       * since it can't know whether ZLPs will be handled right by
-+       * all the relevant hardware and software.
-+       */
-+      if (!((len + EEM_HEAD + ETH_FCS_LEN) % dev->maxpacket))
-+              padlen += 2;
-+
-+      if (!skb_cloned(skb)) {
-+              int     headroom = skb_headroom(skb);
-+              int     tailroom = skb_tailroom(skb);
-+
-+              if ((tailroom >= ETH_FCS_LEN + padlen) &&
-+                  (headroom >= EEM_HEAD))
-+                      goto done;
-+
-+              if ((headroom + tailroom)
-+                              > (EEM_HEAD + ETH_FCS_LEN + padlen)) {
-+                      skb->data = memmove(skb->head +
-+                                      EEM_HEAD,
-+                                      skb->data,
-+                                      skb->len);
-+                      skb_set_tail_pointer(skb, len);
-+                      goto done;
-+              }
-+      }
-+
-+      skb2 = skb_copy_expand(skb, EEM_HEAD, ETH_FCS_LEN + padlen, flags);
-+      if (!skb2)
-+              return NULL;
-+
-+      dev_kfree_skb_any(skb);
-+      skb = skb2;
-+
-+done:
-+      /* we don't use the "no Ethernet CRC" option */
-+      crc = crc32_le(~0, skb->data, skb->len);
-+      crc = ~crc;
-+
-+      put_unaligned_le32(crc, skb_put(skb, 4));
-+
-+      /* EEM packet header format:
-+       * b0..13:      length of ethernet frame
-+       * b14:         bmCRC (1 == valid Ethernet CRC)
-+       * b15:         bmType (0 == data)
-+       */
-+      len = skb->len;
-+      put_unaligned_le16(BIT(14) | len, skb_push(skb, 2));
-+
-+      /* Bundle a zero length EEM packet if needed */
-+      if (padlen)
-+              put_unaligned_le16(0, skb_put(skb, 2));
-+
-+      return skb;
-+}
-+
-+static int eem_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      /*
-+       * Our task here is to strip off framing, leaving skb with one
-+       * data frame for the usbnet framework code to process.  But we
-+       * may have received multiple EEM payloads, or command payloads.
-+       * So we must process _everything_ as if it's a header, except
-+       * maybe the last data payload
-+       *
-+       * REVISIT the framework needs updating so that when we consume
-+       * all payloads (the last or only message was a command, or a
-+       * zero length EEM packet) that is not accounted as an rx_error.
-+       */
-+      do {
-+              struct sk_buff  *skb2 = NULL;
-+              u16             header;
-+              u16             len = 0;
-+
-+              /* incomplete EEM header? */
-+              if (skb->len < EEM_HEAD)
-+                      return 0;
-+
-+              /*
-+               * EEM packet header format:
-+               * b0..14:      EEM type dependent (Data or Command)
-+               * b15:         bmType
-+               */
-+              header = get_unaligned_le16(skb->data);
-+              skb_pull(skb, EEM_HEAD);
-+
-+              /*
-+               * The bmType bit helps to denote when EEM
-+               * packet is data or command :
-+               *      bmType = 0      : EEM data payload
-+               *      bmType = 1      : EEM (link) command
-+               */
-+              if (header & BIT(15)) {
-+                      u16     bmEEMCmd;
-+
-+                      /*
-+                       * EEM (link) command packet:
-+                       * b0..10:      bmEEMCmdParam
-+                       * b11..13:     bmEEMCmd
-+                       * b14:         bmReserved (must be 0)
-+                       * b15:         1 (EEM command)
-+                       */
-+                      if (header & BIT(14)) {
-+                              netdev_dbg(dev->net, "reserved command %04x\n",
-+                                         header);
-+                              continue;
-+                      }
-+
-+                      bmEEMCmd = (header >> 11) & 0x7;
-+                      switch (bmEEMCmd) {
-+
-+                      /* Responding to echo requests is mandatory. */
-+                      case 0:         /* Echo command */
-+                              len = header & 0x7FF;
-+
-+                              /* bogus command? */
-+                              if (skb->len < len)
-+                                      return 0;
-+
-+                              skb2 = skb_clone(skb, GFP_ATOMIC);
-+                              if (unlikely(!skb2))
-+                                      goto next;
-+                              skb_trim(skb2, len);
-+                              put_unaligned_le16(BIT(15) | (1 << 11) | len,
-+                                              skb_push(skb2, 2));
-+                              eem_linkcmd(dev, skb2);
-+                              break;
-+
-+                      /*
-+                       * Host may choose to ignore hints.
-+                       *  - suspend: peripheral ready to suspend
-+                       *  - response: suggest N millisec polling
-+                       *  - response complete: suggest N sec polling
-+                       *
-+                       * Suspend is reported and maybe heeded.
-+                       */
-+                      case 2:         /* Suspend hint */
-+                              usbnet_device_suggests_idle(dev);
-+                              continue;
-+                      case 3:         /* Response hint */
-+                      case 4:         /* Response complete hint */
-+                              continue;
-+
-+                      /*
-+                       * Hosts should never receive host-to-peripheral
-+                       * or reserved command codes; or responses to an
-+                       * echo command we didn't send.
-+                       */
-+                      case 1:         /* Echo response */
-+                      case 5:         /* Tickle */
-+                      default:        /* reserved */
-+                              netdev_warn(dev->net,
-+                                          "unexpected link command %d\n",
-+                                          bmEEMCmd);
-+                              continue;
-+                      }
-+
-+              } else {
-+                      u32     crc, crc2;
-+                      int     is_last;
-+
-+                      /* zero length EEM packet? */
-+                      if (header == 0)
-+                              continue;
-+
-+                      /*
-+                       * EEM data packet header :
-+                       * b0..13:      length of ethernet frame
-+                       * b14:         bmCRC
-+                       * b15:         0 (EEM data)
-+                       */
-+                      len = header & 0x3FFF;
-+
-+                      /* bogus EEM payload? */
-+                      if (skb->len < len)
-+                              return 0;
-+
-+                      /* bogus ethernet frame? */
-+                      if (len < (ETH_HLEN + ETH_FCS_LEN))
-+                              goto next;
-+
-+                      /*
-+                       * Treat the last payload differently: framework
-+                       * code expects our "fixup" to have stripped off
-+                       * headers, so "skb" is a data packet (or error).
-+                       * Else if it's not the last payload, keep "skb"
-+                       * for further processing.
-+                       */
-+                      is_last = (len == skb->len);
-+                      if (is_last)
-+                              skb2 = skb;
-+                      else {
-+                              skb2 = skb_clone(skb, GFP_ATOMIC);
-+                              if (unlikely(!skb2))
-+                                      return 0;
-+                      }
-+
-+                      /*
-+                       * The bmCRC helps to denote when the CRC field in
-+                       * the Ethernet frame contains a calculated CRC:
-+                       *      bmCRC = 1       : CRC is calculated
-+                       *      bmCRC = 0       : CRC = 0xDEADBEEF
-+                       */
-+                      if (header & BIT(14)) {
-+                              crc = get_unaligned_le32(skb2->data
-+                                              + len - ETH_FCS_LEN);
-+                              crc2 = ~crc32_le(~0, skb2->data, skb2->len
-+                                              - ETH_FCS_LEN);
-+                      } else {
-+                              crc = get_unaligned_be32(skb2->data
-+                                              + len - ETH_FCS_LEN);
-+                              crc2 = 0xdeadbeef;
-+                      }
-+                      skb_trim(skb2, len - ETH_FCS_LEN);
-+
-+                      if (is_last)
-+                              return crc == crc2;
-+
-+                      if (unlikely(crc != crc2)) {
-+                              dev->net->stats.rx_errors++;
-+                              dev_kfree_skb_any(skb2);
-+                      } else
-+                              usbnet_skb_return(dev, skb2);
-+              }
-+
-+next:
-+              skb_pull(skb, len);
-+      } while (skb->len);
-+
-+      return 1;
-+}
-+
-+static const struct driver_info eem_info = {
-+      .description =  "CDC EEM Device",
-+      .flags =        FLAG_ETHER | FLAG_POINTTOPOINT,
-+      .bind =         eem_bind,
-+      .rx_fixup =     eem_rx_fixup,
-+      .tx_fixup =     eem_tx_fixup,
-+};
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static const struct usb_device_id products[] = {
-+{
-+      USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_EEM,
-+                      USB_CDC_PROTO_EEM),
-+      .driver_info = (unsigned long) &eem_info,
-+},
-+{
-+      /* EMPTY == end of list */
-+},
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver eem_driver = {
-+      .name =         "cdc_eem",
-+      .id_table =     products,
-+      .probe =        usbnet_probe,
-+      .disconnect =   usbnet_disconnect,
-+      .suspend =      usbnet_suspend,
-+      .resume =       usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(eem_driver);
-+
-+MODULE_AUTHOR("Omar Laazimani <omar.oberthur@gmail.com>");
-+MODULE_DESCRIPTION("USB CDC EEM");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/cdc-phonet.c backports-4.2.6-1/drivers/net/usb/cdc-phonet.c
---- backports-4.2.6-1.org/drivers/net/usb/cdc-phonet.c 1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/cdc-phonet.c     2016-06-28 14:35:17.975307221 +0200
-@@ -0,0 +1,466 @@
-+/*
-+ * phonet.c -- USB CDC Phonet host driver
-+ *
-+ * Copyright (C) 2008-2009 Nokia Corporation. All rights reserved.
-+ *
-+ * Author: Rémi Denis-Courmont
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+ * 02110-1301 USA
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/mm.h>
-+#include <linux/module.h>
-+#include <linux/gfp.h>
-+#include <linux/usb.h>
-+#include <linux/usb/cdc.h>
-+#include <linux/netdevice.h>
-+#include <linux/if_arp.h>
-+#include <linux/if_phonet.h>
-+#include <linux/phonet.h>
-+
-+#define PN_MEDIA_USB  0x1B
-+
-+static const unsigned rxq_size = 17;
-+
-+struct usbpn_dev {
-+      struct net_device       *dev;
-+
-+      struct usb_interface    *intf, *data_intf;
-+      struct usb_device       *usb;
-+      unsigned int            tx_pipe, rx_pipe;
-+      u8 active_setting;
-+      u8 disconnected;
-+
-+      unsigned                tx_queue;
-+      spinlock_t              tx_lock;
-+
-+      spinlock_t              rx_lock;
-+      struct sk_buff          *rx_skb;
-+      struct urb              *urbs[0];
-+};
-+
-+static void tx_complete(struct urb *req);
-+static void rx_complete(struct urb *req);
-+
-+/*
-+ * Network device callbacks
-+ */
-+static netdev_tx_t usbpn_xmit(struct sk_buff *skb, struct net_device *dev)
-+{
-+      struct usbpn_dev *pnd = netdev_priv(dev);
-+      struct urb *req = NULL;
-+      unsigned long flags;
-+      int err;
-+
-+      if (skb->protocol != htons(ETH_P_PHONET))
-+              goto drop;
-+
-+      req = usb_alloc_urb(0, GFP_ATOMIC);
-+      if (!req)
-+              goto drop;
-+      usb_fill_bulk_urb(req, pnd->usb, pnd->tx_pipe, skb->data, skb->len,
-+                              tx_complete, skb);
-+      req->transfer_flags = URB_ZERO_PACKET;
-+      err = usb_submit_urb(req, GFP_ATOMIC);
-+      if (err) {
-+              usb_free_urb(req);
-+              goto drop;
-+      }
-+
-+      spin_lock_irqsave(&pnd->tx_lock, flags);
-+      pnd->tx_queue++;
-+      if (pnd->tx_queue >= dev->tx_queue_len)
-+              netif_stop_queue(dev);
-+      spin_unlock_irqrestore(&pnd->tx_lock, flags);
-+      return NETDEV_TX_OK;
-+
-+drop:
-+      dev_kfree_skb(skb);
-+      dev->stats.tx_dropped++;
-+      return NETDEV_TX_OK;
-+}
-+
-+static void tx_complete(struct urb *req)
-+{
-+      struct sk_buff *skb = req->context;
-+      struct net_device *dev = skb->dev;
-+      struct usbpn_dev *pnd = netdev_priv(dev);
-+      int status = req->status;
-+
-+      switch (status) {
-+      case 0:
-+              dev->stats.tx_bytes += skb->len;
-+              break;
-+
-+      case -ENOENT:
-+      case -ECONNRESET:
-+      case -ESHUTDOWN:
-+              dev->stats.tx_aborted_errors++;
-+      default:
-+              dev->stats.tx_errors++;
-+              dev_dbg(&dev->dev, "TX error (%d)\n", status);
-+      }
-+      dev->stats.tx_packets++;
-+
-+      spin_lock(&pnd->tx_lock);
-+      pnd->tx_queue--;
-+      netif_wake_queue(dev);
-+      spin_unlock(&pnd->tx_lock);
-+
-+      dev_kfree_skb_any(skb);
-+      usb_free_urb(req);
-+}
-+
-+static int rx_submit(struct usbpn_dev *pnd, struct urb *req, gfp_t gfp_flags)
-+{
-+      struct net_device *dev = pnd->dev;
-+      struct page *page;
-+      int err;
-+
-+      page = __dev_alloc_page(gfp_flags | __GFP_NOMEMALLOC);
-+      if (!page)
-+              return -ENOMEM;
-+
-+      usb_fill_bulk_urb(req, pnd->usb, pnd->rx_pipe, page_address(page),
-+                              PAGE_SIZE, rx_complete, dev);
-+      req->transfer_flags = 0;
-+      err = usb_submit_urb(req, gfp_flags);
-+      if (unlikely(err)) {
-+              dev_dbg(&dev->dev, "RX submit error (%d)\n", err);
-+              put_page(page);
-+      }
-+      return err;
-+}
-+
-+static void rx_complete(struct urb *req)
-+{
-+      struct net_device *dev = req->context;
-+      struct usbpn_dev *pnd = netdev_priv(dev);
-+      struct page *page = virt_to_page(req->transfer_buffer);
-+      struct sk_buff *skb;
-+      unsigned long flags;
-+      int status = req->status;
-+
-+      switch (status) {
-+      case 0:
-+              spin_lock_irqsave(&pnd->rx_lock, flags);
-+              skb = pnd->rx_skb;
-+              if (!skb) {
-+                      skb = pnd->rx_skb = netdev_alloc_skb(dev, 12);
-+                      if (likely(skb)) {
-+                              /* Can't use pskb_pull() on page in IRQ */
-+                              memcpy(skb_put(skb, 1), page_address(page), 1);
-+                              skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
-+                                              page, 1, req->actual_length,
-+                                              PAGE_SIZE);
-+                              page = NULL;
-+                      }
-+              } else {
-+                      skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
-+                                      page, 0, req->actual_length,
-+                                      PAGE_SIZE);
-+                      page = NULL;
-+              }
-+              if (req->actual_length < PAGE_SIZE)
-+                      pnd->rx_skb = NULL; /* Last fragment */
-+              else
-+                      skb = NULL;
-+              spin_unlock_irqrestore(&pnd->rx_lock, flags);
-+              if (skb) {
-+                      skb->protocol = htons(ETH_P_PHONET);
-+                      skb_reset_mac_header(skb);
-+                      __skb_pull(skb, 1);
-+                      skb->dev = dev;
-+                      dev->stats.rx_packets++;
-+                      dev->stats.rx_bytes += skb->len;
-+
-+                      netif_rx(skb);
-+              }
-+              goto resubmit;
-+
-+      case -ENOENT:
-+      case -ECONNRESET:
-+      case -ESHUTDOWN:
-+              req = NULL;
-+              break;
-+
-+      case -EOVERFLOW:
-+              dev->stats.rx_over_errors++;
-+              dev_dbg(&dev->dev, "RX overflow\n");
-+              break;
-+
-+      case -EILSEQ:
-+              dev->stats.rx_crc_errors++;
-+              break;
-+      }
-+
-+      dev->stats.rx_errors++;
-+resubmit:
-+      if (page)
-+              put_page(page);
-+      if (req)
-+              rx_submit(pnd, req, GFP_ATOMIC);
-+}
-+
-+static int usbpn_close(struct net_device *dev);
-+
-+static int usbpn_open(struct net_device *dev)
-+{
-+      struct usbpn_dev *pnd = netdev_priv(dev);
-+      int err;
-+      unsigned i;
-+      unsigned num = pnd->data_intf->cur_altsetting->desc.bInterfaceNumber;
-+
-+      err = usb_set_interface(pnd->usb, num, pnd->active_setting);
-+      if (err)
-+              return err;
-+
-+      for (i = 0; i < rxq_size; i++) {
-+              struct urb *req = usb_alloc_urb(0, GFP_KERNEL);
-+
-+              if (!req || rx_submit(pnd, req, GFP_KERNEL)) {
-+                      usb_free_urb(req);
-+                      usbpn_close(dev);
-+                      return -ENOMEM;
-+              }
-+              pnd->urbs[i] = req;
-+      }
-+
-+      netif_wake_queue(dev);
-+      return 0;
-+}
-+
-+static int usbpn_close(struct net_device *dev)
-+{
-+      struct usbpn_dev *pnd = netdev_priv(dev);
-+      unsigned i;
-+      unsigned num = pnd->data_intf->cur_altsetting->desc.bInterfaceNumber;
-+
-+      netif_stop_queue(dev);
-+
-+      for (i = 0; i < rxq_size; i++) {
-+              struct urb *req = pnd->urbs[i];
-+
-+              if (!req)
-+                      continue;
-+              usb_kill_urb(req);
-+              usb_free_urb(req);
-+              pnd->urbs[i] = NULL;
-+      }
-+
-+      return usb_set_interface(pnd->usb, num, !pnd->active_setting);
-+}
-+
-+static int usbpn_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-+{
-+      struct if_phonet_req *req = (struct if_phonet_req *)ifr;
-+
-+      switch (cmd) {
-+      case SIOCPNGAUTOCONF:
-+              req->ifr_phonet_autoconf.device = PN_DEV_PC;
-+              return 0;
-+      }
-+      return -ENOIOCTLCMD;
-+}
-+
-+static int usbpn_set_mtu(struct net_device *dev, int new_mtu)
-+{
-+      if ((new_mtu < PHONET_MIN_MTU) || (new_mtu > PHONET_MAX_MTU))
-+              return -EINVAL;
-+
-+      dev->mtu = new_mtu;
-+      return 0;
-+}
-+
-+static const struct net_device_ops usbpn_ops = {
-+      .ndo_open       = usbpn_open,
-+      .ndo_stop       = usbpn_close,
-+      .ndo_start_xmit = usbpn_xmit,
-+      .ndo_do_ioctl   = usbpn_ioctl,
-+      .ndo_change_mtu = usbpn_set_mtu,
-+};
-+
-+static void usbpn_setup(struct net_device *dev)
-+{
-+      dev->features           = 0;
-+      dev->netdev_ops         = &usbpn_ops,
-+      dev->header_ops         = &phonet_header_ops;
-+      dev->type               = ARPHRD_PHONET;
-+      dev->flags              = IFF_POINTOPOINT | IFF_NOARP;
-+      dev->mtu                = PHONET_MAX_MTU;
-+      dev->hard_header_len    = 1;
-+      dev->dev_addr[0]        = PN_MEDIA_USB;
-+      dev->addr_len           = 1;
-+      dev->tx_queue_len       = 3;
-+
-+      dev->destructor         = free_netdev;
-+}
-+
-+/*
-+ * USB driver callbacks
-+ */
-+static struct usb_device_id usbpn_ids[] = {
-+      {
-+              .match_flags = USB_DEVICE_ID_MATCH_VENDOR
-+                      | USB_DEVICE_ID_MATCH_INT_CLASS
-+                      | USB_DEVICE_ID_MATCH_INT_SUBCLASS,
-+              .idVendor = 0x0421, /* Nokia */
-+              .bInterfaceClass = USB_CLASS_COMM,
-+              .bInterfaceSubClass = 0xFE,
-+      },
-+      { },
-+};
-+
-+MODULE_DEVICE_TABLE(usb, usbpn_ids);
-+
-+static struct usb_driver usbpn_driver;
-+
-+static int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id)
-+{
-+      static const char ifname[] = "usbpn%d";
-+      const struct usb_cdc_union_desc *union_header = NULL;
-+      const struct usb_host_interface *data_desc;
-+      struct usb_interface *data_intf;
-+      struct usb_device *usbdev = interface_to_usbdev(intf);
-+      struct net_device *dev;
-+      struct usbpn_dev *pnd;
-+      u8 *data;
-+      int phonet = 0;
-+      int len, err;
-+
-+      data = intf->altsetting->extra;
-+      len = intf->altsetting->extralen;
-+      while (len >= 3) {
-+              u8 dlen = data[0];
-+              if (dlen < 3)
-+                      return -EINVAL;
-+
-+              /* bDescriptorType */
-+              if (data[1] == USB_DT_CS_INTERFACE) {
-+                      /* bDescriptorSubType */
-+                      switch (data[2]) {
-+                      case USB_CDC_UNION_TYPE:
-+                              if (union_header || dlen < 5)
-+                                      break;
-+                              union_header =
-+                                      (struct usb_cdc_union_desc *)data;
-+                              break;
-+                      case 0xAB:
-+                              phonet = 1;
-+                              break;
-+                      }
-+              }
-+              data += dlen;
-+              len -= dlen;
-+      }
-+
-+      if (!union_header || !phonet)
-+              return -EINVAL;
-+
-+      data_intf = usb_ifnum_to_if(usbdev, union_header->bSlaveInterface0);
-+      if (data_intf == NULL)
-+              return -ENODEV;
-+      /* Data interface has one inactive and one active setting */
-+      if (data_intf->num_altsetting != 2)
-+              return -EINVAL;
-+      if (data_intf->altsetting[0].desc.bNumEndpoints == 0 &&
-+          data_intf->altsetting[1].desc.bNumEndpoints == 2)
-+              data_desc = data_intf->altsetting + 1;
-+      else
-+      if (data_intf->altsetting[0].desc.bNumEndpoints == 2 &&
-+          data_intf->altsetting[1].desc.bNumEndpoints == 0)
-+              data_desc = data_intf->altsetting;
-+      else
-+              return -EINVAL;
-+
-+      dev = alloc_netdev(sizeof(*pnd) + sizeof(pnd->urbs[0]) * rxq_size,
-+                         ifname, NET_NAME_UNKNOWN, usbpn_setup);
-+      if (!dev)
-+              return -ENOMEM;
-+
-+      pnd = netdev_priv(dev);
-+      SET_NETDEV_DEV(dev, &intf->dev);
-+
-+      pnd->dev = dev;
-+      pnd->usb = usbdev;
-+      pnd->intf = intf;
-+      pnd->data_intf = data_intf;
-+      spin_lock_init(&pnd->tx_lock);
-+      spin_lock_init(&pnd->rx_lock);
-+      /* Endpoints */
-+      if (usb_pipein(data_desc->endpoint[0].desc.bEndpointAddress)) {
-+              pnd->rx_pipe = usb_rcvbulkpipe(usbdev,
-+                      data_desc->endpoint[0].desc.bEndpointAddress);
-+              pnd->tx_pipe = usb_sndbulkpipe(usbdev,
-+                      data_desc->endpoint[1].desc.bEndpointAddress);
-+      } else {
-+              pnd->rx_pipe = usb_rcvbulkpipe(usbdev,
-+                      data_desc->endpoint[1].desc.bEndpointAddress);
-+              pnd->tx_pipe = usb_sndbulkpipe(usbdev,
-+                      data_desc->endpoint[0].desc.bEndpointAddress);
-+      }
-+      pnd->active_setting = data_desc - data_intf->altsetting;
-+
-+      err = usb_driver_claim_interface(&usbpn_driver, data_intf, pnd);
-+      if (err)
-+              goto out;
-+
-+      /* Force inactive mode until the network device is brought UP */
-+      usb_set_interface(usbdev, union_header->bSlaveInterface0,
-+                              !pnd->active_setting);
-+      usb_set_intfdata(intf, pnd);
-+
-+      err = register_netdev(dev);
-+      if (err) {
-+              usb_driver_release_interface(&usbpn_driver, data_intf);
-+              goto out;
-+      }
-+
-+      dev_dbg(&dev->dev, "USB CDC Phonet device found\n");
-+      return 0;
-+
-+out:
-+      usb_set_intfdata(intf, NULL);
-+      free_netdev(dev);
-+      return err;
-+}
-+
-+static void usbpn_disconnect(struct usb_interface *intf)
-+{
-+      struct usbpn_dev *pnd = usb_get_intfdata(intf);
-+
-+      if (pnd->disconnected)
-+              return;
-+
-+      pnd->disconnected = 1;
-+      usb_driver_release_interface(&usbpn_driver,
-+                      (pnd->intf == intf) ? pnd->data_intf : pnd->intf);
-+      unregister_netdev(pnd->dev);
-+}
-+
-+static struct usb_driver usbpn_driver = {
-+      .name =         "cdc_phonet",
-+      .probe =        usbpn_probe,
-+      .disconnect =   usbpn_disconnect,
-+      .id_table =     usbpn_ids,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(usbpn_driver);
-+
-+MODULE_AUTHOR("Remi Denis-Courmont");
-+MODULE_DESCRIPTION("USB CDC Phonet host interface");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/cdc_subset.c backports-4.2.6-1/drivers/net/usb/cdc_subset.c
---- backports-4.2.6-1.org/drivers/net/usb/cdc_subset.c 1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/cdc_subset.c     2016-06-28 14:35:17.975307221 +0200
-@@ -0,0 +1,369 @@
-+/*
-+ * Simple "CDC Subset" USB Networking Links
-+ * Copyright (C) 2000-2005 by David Brownell
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kmod.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/usb/usbnet.h>
-+
-+
-+/*
-+ * This supports simple USB network links that don't require any special
-+ * framing or hardware control operations.  The protocol used here is a
-+ * strict subset of CDC Ethernet, with three basic differences reflecting
-+ * the goal that almost any hardware should run it:
-+ *
-+ *  - Minimal runtime control:  one interface, no altsettings, and
-+ *    no vendor or class specific control requests.  If a device is
-+ *    configured, it is allowed to exchange packets with the host.
-+ *    Fancier models would mean not working on some hardware.
-+ *
-+ *  - Minimal manufacturing control:  no IEEE "Organizationally
-+ *    Unique ID" required, or an EEPROMs to store one.  Each host uses
-+ *    one random "locally assigned" Ethernet address instead, which can
-+ *    of course be overridden using standard tools like "ifconfig".
-+ *    (With 2^46 such addresses, same-net collisions are quite rare.)
-+ *
-+ *  - There is no additional framing data for USB.  Packets are written
-+ *    exactly as in CDC Ethernet, starting with an Ethernet header and
-+ *    terminated by a short packet.  However, the host will never send a
-+ *    zero length packet; some systems can't handle those robustly.
-+ *
-+ * Anything that can transmit and receive USB bulk packets can implement
-+ * this protocol.  That includes both smart peripherals and quite a lot
-+ * of "host-to-host" USB cables (which embed two devices back-to-back).
-+ *
-+ * Note that although Linux may use many of those host-to-host links
-+ * with this "cdc_subset" framing, that doesn't mean there may not be a
-+ * better approach.  Handling the "other end unplugs/replugs" scenario
-+ * well tends to require chip-specific vendor requests.  Also, Windows
-+ * peers at the other end of host-to-host cables may expect their own
-+ * framing to be used rather than this "cdc_subset" model.
-+ */
-+
-+#if defined(CONFIG_USB_EPSON2888) || defined(CONFIG_USB_ARMLINUX)
-+/* PDA style devices are always connected if present */
-+static int always_connected (struct usbnet *dev)
-+{
-+      return 0;
-+}
-+#endif
-+
-+#ifdef        CONFIG_USB_ALI_M5632
-+#define       HAVE_HARDWARE
-+
-+/*-------------------------------------------------------------------------
-+ *
-+ * ALi M5632 driver ... does high speed
-+ *
-+ * NOTE that the MS-Windows drivers for this chip use some funky and
-+ * (naturally) undocumented 7-byte prefix to each packet, so this is a
-+ * case where we don't currently interoperate.  Also, once you unplug
-+ * one end of the cable, you need to replug the other end too ... since
-+ * chip docs are unavailable, there's no way to reset the relevant state
-+ * short of a power cycle.
-+ *
-+ *-------------------------------------------------------------------------*/
-+
-+static void m5632_recover(struct usbnet *dev)
-+{
-+      struct usb_device       *udev = dev->udev;
-+      struct usb_interface    *intf = dev->intf;
-+      int r;
-+
-+      r = usb_lock_device_for_reset(udev, intf);
-+      if (r < 0)
-+              return;
-+
-+      usb_reset_device(udev);
-+      usb_unlock_device(udev);
-+}
-+
-+static const struct driver_info       ali_m5632_info = {
-+      .description =  "ALi M5632",
-+      .flags       = FLAG_POINTTOPOINT,
-+      .recover     = m5632_recover,
-+};
-+
-+#endif
-+
-+#ifdef        CONFIG_USB_AN2720
-+#define       HAVE_HARDWARE
-+
-+/*-------------------------------------------------------------------------
-+ *
-+ * AnchorChips 2720 driver ... http://www.cypress.com
-+ *
-+ * This doesn't seem to have a way to detect whether the peer is
-+ * connected, or need any reset handshaking.  It's got pretty big
-+ * internal buffers (handles most of a frame's worth of data).
-+ * Chip data sheets don't describe any vendor control messages.
-+ *
-+ *-------------------------------------------------------------------------*/
-+
-+static const struct driver_info       an2720_info = {
-+      .description =  "AnchorChips/Cypress 2720",
-+      .flags       = FLAG_POINTTOPOINT,
-+      // no reset available!
-+      // no check_connect available!
-+
-+      .in = 2, .out = 2,              // direction distinguishes these
-+};
-+
-+#endif        /* CONFIG_USB_AN2720 */
-+
-+\f
-+#ifdef        CONFIG_USB_BELKIN
-+#define       HAVE_HARDWARE
-+
-+/*-------------------------------------------------------------------------
-+ *
-+ * Belkin F5U104 ... two NetChip 2280 devices + Atmel AVR microcontroller
-+ *
-+ * ... also two eTEK designs, including one sold as "Advance USBNET"
-+ *
-+ *-------------------------------------------------------------------------*/
-+
-+static const struct driver_info       belkin_info = {
-+      .description =  "Belkin, eTEK, or compatible",
-+      .flags       = FLAG_POINTTOPOINT,
-+};
-+
-+#endif        /* CONFIG_USB_BELKIN */
-+
-+
-+\f
-+#ifdef        CONFIG_USB_EPSON2888
-+#define       HAVE_HARDWARE
-+
-+/*-------------------------------------------------------------------------
-+ *
-+ * EPSON USB clients
-+ *
-+ * This is the same idea as Linux PDAs (below) except the firmware in the
-+ * device might not be Tux-powered.  Epson provides reference firmware that
-+ * implements this interface.  Product developers can reuse or modify that
-+ * code, such as by using their own product and vendor codes.
-+ *
-+ * Support was from Juro Bystricky <bystricky.juro@erd.epson.com>
-+ *
-+ *-------------------------------------------------------------------------*/
-+
-+static const struct driver_info       epson2888_info = {
-+      .description =  "Epson USB Device",
-+      .check_connect = always_connected,
-+      .flags = FLAG_POINTTOPOINT,
-+
-+      .in = 4, .out = 3,
-+};
-+
-+#endif        /* CONFIG_USB_EPSON2888 */
-+
-+\f
-+/*-------------------------------------------------------------------------
-+ *
-+ * info from Jonathan McDowell <noodles@earth.li>
-+ *
-+ *-------------------------------------------------------------------------*/
-+#ifdef CONFIG_USB_KC2190
-+#define HAVE_HARDWARE
-+static const struct driver_info kc2190_info = {
-+      .description =  "KC Technology KC-190",
-+      .flags = FLAG_POINTTOPOINT,
-+};
-+#endif /* CONFIG_USB_KC2190 */
-+
-+\f
-+#ifdef        CONFIG_USB_ARMLINUX
-+#define       HAVE_HARDWARE
-+
-+/*-------------------------------------------------------------------------
-+ *
-+ * Intel's SA-1100 chip integrates basic USB support, and is used
-+ * in PDAs like some iPaqs, the Yopy, some Zaurus models, and more.
-+ * When they run Linux, arch/arm/mach-sa1100/usb-eth.c may be used to
-+ * network using minimal USB framing data.
-+ *
-+ * This describes the driver currently in standard ARM Linux kernels.
-+ * The Zaurus uses a different driver (see later).
-+ *
-+ * PXA25x and PXA210 use XScale cores (ARM v5TE) with better USB support
-+ * and different USB endpoint numbering than the SA1100 devices.  The
-+ * mach-pxa/usb-eth.c driver re-uses the device ids from mach-sa1100
-+ * so we rely on the endpoint descriptors.
-+ *
-+ *-------------------------------------------------------------------------*/
-+
-+static const struct driver_info       linuxdev_info = {
-+      .description =  "Linux Device",
-+      .check_connect = always_connected,
-+      .flags = FLAG_POINTTOPOINT,
-+};
-+
-+static const struct driver_info       yopy_info = {
-+      .description =  "Yopy",
-+      .check_connect = always_connected,
-+      .flags = FLAG_POINTTOPOINT,
-+};
-+
-+static const struct driver_info       blob_info = {
-+      .description =  "Boot Loader OBject",
-+      .check_connect = always_connected,
-+      .flags = FLAG_POINTTOPOINT,
-+};
-+
-+#endif        /* CONFIG_USB_ARMLINUX */
-+
-+\f
-+/*-------------------------------------------------------------------------*/
-+
-+#ifndef       HAVE_HARDWARE
-+#warning You need to configure some hardware for this driver
-+#endif
-+
-+/*
-+ * chip vendor names won't normally be on the cables, and
-+ * may not be on the device.
-+ */
-+
-+static const struct usb_device_id     products [] = {
-+
-+#ifdef        CONFIG_USB_ALI_M5632
-+{
-+      USB_DEVICE (0x0402, 0x5632),    // ALi defaults
-+      .driver_info =  (unsigned long) &ali_m5632_info,
-+},
-+{
-+      USB_DEVICE (0x182d,0x207c),     // SiteCom CN-124
-+      .driver_info =  (unsigned long) &ali_m5632_info,
-+},
-+#endif
-+
-+#ifdef        CONFIG_USB_AN2720
-+{
-+      USB_DEVICE (0x0547, 0x2720),    // AnchorChips defaults
-+      .driver_info =  (unsigned long) &an2720_info,
-+}, {
-+      USB_DEVICE (0x0547, 0x2727),    // Xircom PGUNET
-+      .driver_info =  (unsigned long) &an2720_info,
-+},
-+#endif
-+
-+#ifdef        CONFIG_USB_BELKIN
-+{
-+      USB_DEVICE (0x050d, 0x0004),    // Belkin
-+      .driver_info =  (unsigned long) &belkin_info,
-+}, {
-+      USB_DEVICE (0x056c, 0x8100),    // eTEK
-+      .driver_info =  (unsigned long) &belkin_info,
-+}, {
-+      USB_DEVICE (0x0525, 0x9901),    // Advance USBNET (eTEK)
-+      .driver_info =  (unsigned long) &belkin_info,
-+},
-+#endif
-+
-+#ifdef        CONFIG_USB_EPSON2888
-+{
-+      USB_DEVICE (0x0525, 0x2888),    // EPSON USB client
-+      .driver_info    = (unsigned long) &epson2888_info,
-+},
-+#endif
-+
-+#ifdef CONFIG_USB_KC2190
-+{
-+      USB_DEVICE (0x050f, 0x0190),    // KC-190
-+      .driver_info =  (unsigned long) &kc2190_info,
-+},
-+#endif
-+
-+#ifdef        CONFIG_USB_ARMLINUX
-+/*
-+ * SA-1100 using standard ARM Linux kernels, or compatible.
-+ * Often used when talking to Linux PDAs (iPaq, Yopy, etc).
-+ * The sa-1100 "usb-eth" driver handles the basic framing.
-+ *
-+ * PXA25x or PXA210 ...  these use a "usb-eth" driver much like
-+ * the sa1100 one, but hardware uses different endpoint numbers.
-+ *
-+ * Or the Linux "Ethernet" gadget on hardware that can't talk
-+ * CDC Ethernet (e.g., no altsettings), in either of two modes:
-+ *  - acting just like the old "usb-eth" firmware, though
-+ *    the implementation is different
-+ *  - supporting RNDIS as the first/default configuration for
-+ *    MS-Windows interop; Linux needs to use the other config
-+ */
-+{
-+      // 1183 = 0x049F, both used as hex values?
-+      // Compaq "Itsy" vendor/product id
-+      USB_DEVICE (0x049F, 0x505A),    // usb-eth, or compatible
-+      .driver_info =  (unsigned long) &linuxdev_info,
-+}, {
-+      USB_DEVICE (0x0E7E, 0x1001),    // G.Mate "Yopy"
-+      .driver_info =  (unsigned long) &yopy_info,
-+}, {
-+      USB_DEVICE (0x8086, 0x07d3),    // "blob" bootloader
-+      .driver_info =  (unsigned long) &blob_info,
-+}, {
-+      USB_DEVICE (0x1286, 0x8001),    // "blob" bootloader
-+      .driver_info =  (unsigned long) &blob_info,
-+}, {
-+      // Linux Ethernet/RNDIS gadget, mostly on PXA, second config
-+      // e.g. Gumstix, current OpenZaurus, ... or anything else
-+      // that just enables this gadget option.
-+      USB_DEVICE (0x0525, 0xa4a2),
-+      .driver_info =  (unsigned long) &linuxdev_info,
-+},
-+#endif
-+
-+      { },            // END
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+/*-------------------------------------------------------------------------*/
-+static int dummy_prereset(struct usb_interface *intf)
-+{
-+        return 0;
-+}
-+
-+static int dummy_postreset(struct usb_interface *intf)
-+{
-+        return 0;
-+}
-+
-+static struct usb_driver cdc_subset_driver = {
-+      .name =         "cdc_subset",
-+      .probe =        usbnet_probe,
-+      .suspend =      usbnet_suspend,
-+      .resume =       usbnet_resume,
-+      .pre_reset =    dummy_prereset,
-+      .post_reset =   dummy_postreset,
-+      .disconnect =   usbnet_disconnect,
-+      .id_table =     products,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(cdc_subset_driver);
-+
-+MODULE_AUTHOR("David Brownell");
-+MODULE_DESCRIPTION("Simple 'CDC Subset' USB networking links");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/cx82310_eth.c backports-4.2.6-1/drivers/net/usb/cx82310_eth.c
---- backports-4.2.6-1.org/drivers/net/usb/cx82310_eth.c        1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/cx82310_eth.c    2016-06-28 14:35:17.978640554 +0200
-@@ -0,0 +1,353 @@
-+/*
-+ * Driver for USB ethernet port of Conexant CX82310-based ADSL routers
-+ * Copyright (C) 2010 by Ondrej Zary
-+ * some parts inspired by the cxacru driver
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/usb/usbnet.h>
-+
-+enum cx82310_cmd {
-+      CMD_START               = 0x84, /* no effect? */
-+      CMD_STOP                = 0x85, /* no effect? */
-+      CMD_GET_STATUS          = 0x90, /* returns nothing? */
-+      CMD_GET_MAC_ADDR        = 0x91, /* read MAC address */
-+      CMD_GET_LINK_STATUS     = 0x92, /* not useful, link is always up */
-+      CMD_ETHERNET_MODE       = 0x99, /* unknown, needed during init */
-+};
-+
-+enum cx82310_status {
-+      STATUS_UNDEFINED,
-+      STATUS_SUCCESS,
-+      STATUS_ERROR,
-+      STATUS_UNSUPPORTED,
-+      STATUS_UNIMPLEMENTED,
-+      STATUS_PARAMETER_ERROR,
-+      STATUS_DBG_LOOPBACK,
-+};
-+
-+#define CMD_PACKET_SIZE       64
-+#define CMD_TIMEOUT   100
-+#define CMD_REPLY_RETRY 5
-+
-+#define CX82310_MTU   1514
-+#define CMD_EP                0x01
-+
-+/*
-+ * execute control command
-+ *  - optionally send some data (command parameters)
-+ *  - optionally wait for the reply
-+ *  - optionally read some data from the reply
-+ */
-+static int cx82310_cmd(struct usbnet *dev, enum cx82310_cmd cmd, bool reply,
-+                     u8 *wdata, int wlen, u8 *rdata, int rlen)
-+{
-+      int actual_len, retries, ret;
-+      struct usb_device *udev = dev->udev;
-+      u8 *buf = kzalloc(CMD_PACKET_SIZE, GFP_KERNEL);
-+
-+      if (!buf)
-+              return -ENOMEM;
-+
-+      /* create command packet */
-+      buf[0] = cmd;
-+      if (wdata)
-+              memcpy(buf + 4, wdata, min_t(int, wlen, CMD_PACKET_SIZE - 4));
-+
-+      /* send command packet */
-+      ret = usb_bulk_msg(udev, usb_sndbulkpipe(udev, CMD_EP), buf,
-+                         CMD_PACKET_SIZE, &actual_len, CMD_TIMEOUT);
-+      if (ret < 0) {
-+              if (cmd != CMD_GET_LINK_STATUS)
-+                      dev_err(&dev->udev->dev, "send command %#x: error %d\n",
-+                              cmd, ret);
-+              goto end;
-+      }
-+
-+      if (reply) {
-+              /* wait for reply, retry if it's empty */
-+              for (retries = 0; retries < CMD_REPLY_RETRY; retries++) {
-+                      ret = usb_bulk_msg(udev, usb_rcvbulkpipe(udev, CMD_EP),
-+                                         buf, CMD_PACKET_SIZE, &actual_len,
-+                                         CMD_TIMEOUT);
-+                      if (ret < 0) {
-+                              if (cmd != CMD_GET_LINK_STATUS)
-+                                      dev_err(&dev->udev->dev,
-+                                              "reply receive error %d\n",
-+                                              ret);
-+                              goto end;
-+                      }
-+                      if (actual_len > 0)
-+                              break;
-+              }
-+              if (actual_len == 0) {
-+                      dev_err(&dev->udev->dev, "no reply to command %#x\n",
-+                              cmd);
-+                      ret = -EIO;
-+                      goto end;
-+              }
-+              if (buf[0] != cmd) {
-+                      dev_err(&dev->udev->dev,
-+                              "got reply to command %#x, expected: %#x\n",
-+                              buf[0], cmd);
-+                      ret = -EIO;
-+                      goto end;
-+              }
-+              if (buf[1] != STATUS_SUCCESS) {
-+                      dev_err(&dev->udev->dev, "command %#x failed: %#x\n",
-+                              cmd, buf[1]);
-+                      ret = -EIO;
-+                      goto end;
-+              }
-+              if (rdata)
-+                      memcpy(rdata, buf + 4,
-+                             min_t(int, rlen, CMD_PACKET_SIZE - 4));
-+      }
-+end:
-+      kfree(buf);
-+      return ret;
-+}
-+
-+#define partial_len   data[0]         /* length of partial packet data */
-+#define partial_rem   data[1]         /* remaining (missing) data length */
-+#define partial_data  data[2]         /* partial packet data */
-+
-+static int cx82310_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int ret;
-+      char buf[15];
-+      struct usb_device *udev = dev->udev;
-+      u8 link[3];
-+      int timeout = 50;
-+
-+      /* avoid ADSL modems - continue only if iProduct is "USB NET CARD" */
-+      if (usb_string(udev, udev->descriptor.iProduct, buf, sizeof(buf)) > 0
-+          && strcmp(buf, "USB NET CARD")) {
-+              dev_info(&udev->dev, "ignoring: probably an ADSL modem\n");
-+              return -ENODEV;
-+      }
-+
-+      ret = usbnet_get_endpoints(dev, intf);
-+      if (ret)
-+              return ret;
-+
-+      /*
-+       * this must not include ethernet header as the device can send partial
-+       * packets with no header (and sometimes even empty URBs)
-+       */
-+      dev->net->hard_header_len = 0;
-+      /* we can send at most 1514 bytes of data (+ 2-byte header) per URB */
-+      dev->hard_mtu = CX82310_MTU + 2;
-+      /* we can receive URBs up to 4KB from the device */
-+      dev->rx_urb_size = 4096;
-+
-+      dev->partial_data = (unsigned long) kmalloc(dev->hard_mtu, GFP_KERNEL);
-+      if (!dev->partial_data)
-+              return -ENOMEM;
-+
-+      /* wait for firmware to become ready (indicated by the link being up) */
-+      while (--timeout) {
-+              ret = cx82310_cmd(dev, CMD_GET_LINK_STATUS, true, NULL, 0,
-+                                link, sizeof(link));
-+              /* the command can time out during boot - it's not an error */
-+              if (!ret && link[0] == 1 && link[2] == 1)
-+                      break;
-+              msleep(500);
-+      }
-+      if (!timeout) {
-+              dev_err(&udev->dev, "firmware not ready in time\n");
-+              return -ETIMEDOUT;
-+      }
-+
-+      /* enable ethernet mode (?) */
-+      ret = cx82310_cmd(dev, CMD_ETHERNET_MODE, true, "\x01", 1, NULL, 0);
-+      if (ret) {
-+              dev_err(&udev->dev, "unable to enable ethernet mode: %d\n",
-+                      ret);
-+              goto err;
-+      }
-+
-+      /* get the MAC address */
-+      ret = cx82310_cmd(dev, CMD_GET_MAC_ADDR, true, NULL, 0,
-+                        dev->net->dev_addr, ETH_ALEN);
-+      if (ret) {
-+              dev_err(&udev->dev, "unable to read MAC address: %d\n", ret);
-+              goto err;
-+      }
-+
-+      /* start (does not seem to have any effect?) */
-+      ret = cx82310_cmd(dev, CMD_START, false, NULL, 0, NULL, 0);
-+      if (ret)
-+              goto err;
-+
-+      return 0;
-+err:
-+      kfree((void *)dev->partial_data);
-+      return ret;
-+}
-+
-+static void cx82310_unbind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      kfree((void *)dev->partial_data);
-+}
-+
-+/*
-+ * RX is NOT easy - we can receive multiple packets per skb, each having 2-byte
-+ * packet length at the beginning.
-+ * The last packet might be incomplete (when it crosses the 4KB URB size),
-+ * continuing in the next skb (without any headers).
-+ * If a packet has odd length, there is one extra byte at the end (before next
-+ * packet or at the end of the URB).
-+ */
-+static int cx82310_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      int len;
-+      struct sk_buff *skb2;
-+
-+      /*
-+       * If the last skb ended with an incomplete packet, this skb contains
-+       * end of that packet at the beginning.
-+       */
-+      if (dev->partial_rem) {
-+              len = dev->partial_len + dev->partial_rem;
-+              skb2 = alloc_skb(len, GFP_ATOMIC);
-+              if (!skb2)
-+                      return 0;
-+              skb_put(skb2, len);
-+              memcpy(skb2->data, (void *)dev->partial_data,
-+                     dev->partial_len);
-+              memcpy(skb2->data + dev->partial_len, skb->data,
-+                     dev->partial_rem);
-+              usbnet_skb_return(dev, skb2);
-+              skb_pull(skb, (dev->partial_rem + 1) & ~1);
-+              dev->partial_rem = 0;
-+              if (skb->len < 2)
-+                      return 1;
-+      }
-+
-+      /* a skb can contain multiple packets */
-+      while (skb->len > 1) {
-+              /* first two bytes are packet length */
-+              len = skb->data[0] | (skb->data[1] << 8);
-+              skb_pull(skb, 2);
-+
-+              /* if last packet in the skb, let usbnet to process it */
-+              if (len == skb->len || len + 1 == skb->len) {
-+                      skb_trim(skb, len);
-+                      break;
-+              }
-+
-+              if (len > CX82310_MTU) {
-+                      dev_err(&dev->udev->dev, "RX packet too long: %d B\n",
-+                              len);
-+                      return 0;
-+              }
-+
-+              /* incomplete packet, save it for the next skb */
-+              if (len > skb->len) {
-+                      dev->partial_len = skb->len;
-+                      dev->partial_rem = len - skb->len;
-+                      memcpy((void *)dev->partial_data, skb->data,
-+                             dev->partial_len);
-+                      skb_pull(skb, skb->len);
-+                      break;
-+              }
-+
-+              skb2 = alloc_skb(len, GFP_ATOMIC);
-+              if (!skb2)
-+                      return 0;
-+              skb_put(skb2, len);
-+              memcpy(skb2->data, skb->data, len);
-+              /* process the packet */
-+              usbnet_skb_return(dev, skb2);
-+
-+              skb_pull(skb, (len + 1) & ~1);
-+      }
-+
-+      /* let usbnet process the last packet */
-+      return 1;
-+}
-+
-+/* TX is easy, just add 2 bytes of length at the beginning */
-+static struct sk_buff *cx82310_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
-+                                     gfp_t flags)
-+{
-+      int len = skb->len;
-+
-+      if (skb_headroom(skb) < 2) {
-+              struct sk_buff *skb2 = skb_copy_expand(skb, 2, 0, flags);
-+              dev_kfree_skb_any(skb);
-+              skb = skb2;
-+              if (!skb)
-+                      return NULL;
-+      }
-+      skb_push(skb, 2);
-+
-+      skb->data[0] = len;
-+      skb->data[1] = len >> 8;
-+
-+      return skb;
-+}
-+
-+
-+static const struct driver_info       cx82310_info = {
-+      .description    = "Conexant CX82310 USB ethernet",
-+      .flags          = FLAG_ETHER,
-+      .bind           = cx82310_bind,
-+      .unbind         = cx82310_unbind,
-+      .rx_fixup       = cx82310_rx_fixup,
-+      .tx_fixup       = cx82310_tx_fixup,
-+};
-+
-+#define USB_DEVICE_CLASS(vend, prod, cl, sc, pr) \
-+      .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
-+                     USB_DEVICE_ID_MATCH_DEV_INFO, \
-+      .idVendor = (vend), \
-+      .idProduct = (prod), \
-+      .bDeviceClass = (cl), \
-+      .bDeviceSubClass = (sc), \
-+      .bDeviceProtocol = (pr)
-+
-+static const struct usb_device_id products[] = {
-+      {
-+              USB_DEVICE_CLASS(0x0572, 0xcb01, 0xff, 0, 0),
-+              .driver_info = (unsigned long) &cx82310_info
-+      },
-+      { },
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver cx82310_driver = {
-+      .name           = "cx82310_eth",
-+      .id_table       = products,
-+      .probe          = usbnet_probe,
-+      .disconnect     = usbnet_disconnect,
-+      .suspend        = usbnet_suspend,
-+      .resume         = usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(cx82310_driver);
-+
-+MODULE_AUTHOR("Ondrej Zary");
-+MODULE_DESCRIPTION("Conexant CX82310-based ADSL router USB ethernet driver");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/dm9601.c backports-4.2.6-1/drivers/net/usb/dm9601.c
---- backports-4.2.6-1.org/drivers/net/usb/dm9601.c     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/dm9601.c 2016-06-28 14:35:17.978640554 +0200
-@@ -0,0 +1,647 @@
-+/*
-+ * Davicom DM96xx USB 10/100Mbps ethernet devices
-+ *
-+ * Peter Korsgaard <jacmet@sunsite.dk>
-+ *
-+ * This file is licensed under the terms of the GNU General Public License
-+ * version 2.  This program is licensed "as is" without any warranty of any
-+ * kind, whether express or implied.
-+ */
-+
-+//#define DEBUG
-+
-+#include <linux/module.h>
-+#include <linux/sched.h>
-+#include <linux/stddef.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/crc32.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/slab.h>
-+
-+/* datasheet:
-+ http://ptm2.cc.utu.fi/ftp/network/cards/DM9601/From_NET/DM9601-DS-P01-930914.pdf
-+*/
-+
-+/* control requests */
-+#define DM_READ_REGS  0x00
-+#define DM_WRITE_REGS 0x01
-+#define DM_READ_MEMS  0x02
-+#define DM_WRITE_REG  0x03
-+#define DM_WRITE_MEMS 0x05
-+#define DM_WRITE_MEM  0x07
-+
-+/* registers */
-+#define DM_NET_CTRL   0x00
-+#define DM_RX_CTRL    0x05
-+#define DM_SHARED_CTRL        0x0b
-+#define DM_SHARED_ADDR        0x0c
-+#define DM_SHARED_DATA        0x0d    /* low + high */
-+#define DM_PHY_ADDR   0x10    /* 6 bytes */
-+#define DM_MCAST_ADDR 0x16    /* 8 bytes */
-+#define DM_GPR_CTRL   0x1e
-+#define DM_GPR_DATA   0x1f
-+#define DM_CHIP_ID    0x2c
-+#define DM_MODE_CTRL  0x91    /* only on dm9620 */
-+
-+/* chip id values */
-+#define ID_DM9601     0
-+#define ID_DM9620     1
-+
-+#define DM_MAX_MCAST  64
-+#define DM_MCAST_SIZE 8
-+#define DM_EEPROM_LEN 256
-+#define DM_TX_OVERHEAD        2       /* 2 byte header */
-+#define DM_RX_OVERHEAD        7       /* 3 byte header + 4 byte crc tail */
-+#define DM_TIMEOUT    1000
-+
-+static int dm_read(struct usbnet *dev, u8 reg, u16 length, void *data)
-+{
-+      int err;
-+      err = usbnet_read_cmd(dev, DM_READ_REGS,
-+                             USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+                             0, reg, data, length);
-+      if(err != length && err >= 0)
-+              err = -EINVAL;
-+      return err;
-+}
-+
-+static int dm_read_reg(struct usbnet *dev, u8 reg, u8 *value)
-+{
-+      return dm_read(dev, reg, 1, value);
-+}
-+
-+static int dm_write(struct usbnet *dev, u8 reg, u16 length, void *data)
-+{
-+      int err;
-+      err = usbnet_write_cmd(dev, DM_WRITE_REGS,
-+                              USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+                              0, reg, data, length);
-+
-+      if (err >= 0 && err < length)
-+              err = -EINVAL;
-+      return err;
-+}
-+
-+static int dm_write_reg(struct usbnet *dev, u8 reg, u8 value)
-+{
-+      return usbnet_write_cmd(dev, DM_WRITE_REG,
-+                              USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+                              value, reg, NULL, 0);
-+}
-+
-+static void dm_write_async(struct usbnet *dev, u8 reg, u16 length, void *data)
-+{
-+      usbnet_write_cmd_async(dev, DM_WRITE_REGS,
-+                             USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+                             0, reg, data, length);
-+}
-+
-+static void dm_write_reg_async(struct usbnet *dev, u8 reg, u8 value)
-+{
-+      usbnet_write_cmd_async(dev, DM_WRITE_REG,
-+                             USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+                             value, reg, NULL, 0);
-+}
-+
-+static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 *value)
-+{
-+      int ret, i;
-+
-+      mutex_lock(&dev->phy_mutex);
-+
-+      dm_write_reg(dev, DM_SHARED_ADDR, phy ? (reg | 0x40) : reg);
-+      dm_write_reg(dev, DM_SHARED_CTRL, phy ? 0xc : 0x4);
-+
-+      for (i = 0; i < DM_TIMEOUT; i++) {
-+              u8 tmp = 0;
-+
-+              udelay(1);
-+              ret = dm_read_reg(dev, DM_SHARED_CTRL, &tmp);
-+              if (ret < 0)
-+                      goto out;
-+
-+              /* ready */
-+              if ((tmp & 1) == 0)
-+                      break;
-+      }
-+
-+      if (i == DM_TIMEOUT) {
-+              netdev_err(dev->net, "%s read timed out!\n", phy ? "phy" : "eeprom");
-+              ret = -EIO;
-+              goto out;
-+      }
-+
-+      dm_write_reg(dev, DM_SHARED_CTRL, 0x0);
-+      ret = dm_read(dev, DM_SHARED_DATA, 2, value);
-+
-+      netdev_dbg(dev->net, "read shared %d 0x%02x returned 0x%04x, %d\n",
-+                 phy, reg, *value, ret);
-+
-+ out:
-+      mutex_unlock(&dev->phy_mutex);
-+      return ret;
-+}
-+
-+static int dm_write_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 value)
-+{
-+      int ret, i;
-+
-+      mutex_lock(&dev->phy_mutex);
-+
-+      ret = dm_write(dev, DM_SHARED_DATA, 2, &value);
-+      if (ret < 0)
-+              goto out;
-+
-+      dm_write_reg(dev, DM_SHARED_ADDR, phy ? (reg | 0x40) : reg);
-+      dm_write_reg(dev, DM_SHARED_CTRL, phy ? 0x1a : 0x12);
-+
-+      for (i = 0; i < DM_TIMEOUT; i++) {
-+              u8 tmp = 0;
-+
-+              udelay(1);
-+              ret = dm_read_reg(dev, DM_SHARED_CTRL, &tmp);
-+              if (ret < 0)
-+                      goto out;
-+
-+              /* ready */
-+              if ((tmp & 1) == 0)
-+                      break;
-+      }
-+
-+      if (i == DM_TIMEOUT) {
-+              netdev_err(dev->net, "%s write timed out!\n", phy ? "phy" : "eeprom");
-+              ret = -EIO;
-+              goto out;
-+      }
-+
-+      dm_write_reg(dev, DM_SHARED_CTRL, 0x0);
-+
-+out:
-+      mutex_unlock(&dev->phy_mutex);
-+      return ret;
-+}
-+
-+static int dm_read_eeprom_word(struct usbnet *dev, u8 offset, void *value)
-+{
-+      return dm_read_shared_word(dev, 0, offset, value);
-+}
-+
-+
-+
-+static int dm9601_get_eeprom_len(struct net_device *dev)
-+{
-+      return DM_EEPROM_LEN;
-+}
-+
-+static int dm9601_get_eeprom(struct net_device *net,
-+                           struct ethtool_eeprom *eeprom, u8 * data)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      __le16 *ebuf = (__le16 *) data;
-+      int i;
-+
-+      /* access is 16bit */
-+      if ((eeprom->offset % 2) || (eeprom->len % 2))
-+              return -EINVAL;
-+
-+      for (i = 0; i < eeprom->len / 2; i++) {
-+              if (dm_read_eeprom_word(dev, eeprom->offset / 2 + i,
-+                                      &ebuf[i]) < 0)
-+                      return -EINVAL;
-+      }
-+      return 0;
-+}
-+
-+static int dm9601_mdio_read(struct net_device *netdev, int phy_id, int loc)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+
-+      __le16 res;
-+
-+      if (phy_id) {
-+              netdev_dbg(dev->net, "Only internal phy supported\n");
-+              return 0;
-+      }
-+
-+      dm_read_shared_word(dev, 1, loc, &res);
-+
-+      netdev_dbg(dev->net,
-+                 "dm9601_mdio_read() phy_id=0x%02x, loc=0x%02x, returns=0x%04x\n",
-+                 phy_id, loc, le16_to_cpu(res));
-+
-+      return le16_to_cpu(res);
-+}
-+
-+static void dm9601_mdio_write(struct net_device *netdev, int phy_id, int loc,
-+                            int val)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      __le16 res = cpu_to_le16(val);
-+
-+      if (phy_id) {
-+              netdev_dbg(dev->net, "Only internal phy supported\n");
-+              return;
-+      }
-+
-+      netdev_dbg(dev->net, "dm9601_mdio_write() phy_id=0x%02x, loc=0x%02x, val=0x%04x\n",
-+                 phy_id, loc, val);
-+
-+      dm_write_shared_word(dev, 1, loc, res);
-+}
-+
-+static void dm9601_get_drvinfo(struct net_device *net,
-+                             struct ethtool_drvinfo *info)
-+{
-+      /* Inherit standard device info */
-+      usbnet_get_drvinfo(net, info);
-+      info->eedump_len = DM_EEPROM_LEN;
-+}
-+
-+static u32 dm9601_get_link(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      return mii_link_ok(&dev->mii);
-+}
-+
-+static int dm9601_ioctl(struct net_device *net, struct ifreq *rq, int cmd)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
-+}
-+
-+static const struct ethtool_ops dm9601_ethtool_ops = {
-+      .get_drvinfo    = dm9601_get_drvinfo,
-+      .get_link       = dm9601_get_link,
-+      .get_msglevel   = usbnet_get_msglevel,
-+      .set_msglevel   = usbnet_set_msglevel,
-+      .get_eeprom_len = dm9601_get_eeprom_len,
-+      .get_eeprom     = dm9601_get_eeprom,
-+      .get_settings   = usbnet_get_settings,
-+      .set_settings   = usbnet_set_settings,
-+      .nway_reset     = usbnet_nway_reset,
-+};
-+
-+static void dm9601_set_multicast(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      /* We use the 20 byte dev->data for our 8 byte filter buffer
-+       * to avoid allocating memory that is tricky to free later */
-+      u8 *hashes = (u8 *) & dev->data;
-+      u8 rx_ctl = 0x31;
-+
-+      memset(hashes, 0x00, DM_MCAST_SIZE);
-+      hashes[DM_MCAST_SIZE - 1] |= 0x80;      /* broadcast address */
-+
-+      if (net->flags & IFF_PROMISC) {
-+              rx_ctl |= 0x02;
-+      } else if (net->flags & IFF_ALLMULTI ||
-+                 netdev_mc_count(net) > DM_MAX_MCAST) {
-+              rx_ctl |= 0x08;
-+      } else if (!netdev_mc_empty(net)) {
-+              struct netdev_hw_addr *ha;
-+
-+              netdev_for_each_mc_addr(ha, net) {
-+                      u32 crc = ether_crc(ETH_ALEN, ha->addr) >> 26;
-+                      hashes[crc >> 3] |= 1 << (crc & 0x7);
-+              }
-+      }
-+
-+      dm_write_async(dev, DM_MCAST_ADDR, DM_MCAST_SIZE, hashes);
-+      dm_write_reg_async(dev, DM_RX_CTRL, rx_ctl);
-+}
-+
-+static void __dm9601_set_mac_address(struct usbnet *dev)
-+{
-+      dm_write_async(dev, DM_PHY_ADDR, ETH_ALEN, dev->net->dev_addr);
-+}
-+
-+static int dm9601_set_mac_address(struct net_device *net, void *p)
-+{
-+      struct sockaddr *addr = p;
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      if (!is_valid_ether_addr(addr->sa_data)) {
-+              dev_err(&net->dev, "not setting invalid mac address %pM\n",
-+                                                              addr->sa_data);
-+              return -EINVAL;
-+      }
-+
-+      memcpy(net->dev_addr, addr->sa_data, net->addr_len);
-+      __dm9601_set_mac_address(dev);
-+
-+      return 0;
-+}
-+
-+static const struct net_device_ops dm9601_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = usbnet_change_mtu,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = dm9601_ioctl,
-+      .ndo_set_rx_mode        = dm9601_set_multicast,
-+      .ndo_set_mac_address    = dm9601_set_mac_address,
-+};
-+
-+static int dm9601_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int ret;
-+      u8 mac[ETH_ALEN], id;
-+
-+      ret = usbnet_get_endpoints(dev, intf);
-+      if (ret)
-+              goto out;
-+
-+      dev->net->netdev_ops = &dm9601_netdev_ops;
-+      dev->net->ethtool_ops = &dm9601_ethtool_ops;
-+      dev->net->hard_header_len += DM_TX_OVERHEAD;
-+      dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
-+
-+      /* dm9620/21a require room for 4 byte padding, even in dm9601
-+       * mode, so we need +1 to be able to receive full size
-+       * ethernet frames.
-+       */
-+      dev->rx_urb_size = dev->net->mtu + ETH_HLEN + DM_RX_OVERHEAD + 1;
-+
-+      dev->mii.dev = dev->net;
-+      dev->mii.mdio_read = dm9601_mdio_read;
-+      dev->mii.mdio_write = dm9601_mdio_write;
-+      dev->mii.phy_id_mask = 0x1f;
-+      dev->mii.reg_num_mask = 0x1f;
-+
-+      /* reset */
-+      dm_write_reg(dev, DM_NET_CTRL, 1);
-+      udelay(20);
-+
-+      /* read MAC */
-+      if (dm_read(dev, DM_PHY_ADDR, ETH_ALEN, mac) < 0) {
-+              printk(KERN_ERR "Error reading MAC address\n");
-+              ret = -ENODEV;
-+              goto out;
-+      }
-+
-+      /*
-+       * Overwrite the auto-generated address only with good ones.
-+       */
-+      if (is_valid_ether_addr(mac))
-+              memcpy(dev->net->dev_addr, mac, ETH_ALEN);
-+      else {
-+              printk(KERN_WARNING
-+                      "dm9601: No valid MAC address in EEPROM, using %pM\n",
-+                      dev->net->dev_addr);
-+              __dm9601_set_mac_address(dev);
-+      }
-+
-+      if (dm_read_reg(dev, DM_CHIP_ID, &id) < 0) {
-+              netdev_err(dev->net, "Error reading chip ID\n");
-+              ret = -ENODEV;
-+              goto out;
-+      }
-+
-+      /* put dm9620 devices in dm9601 mode */
-+      if (id == ID_DM9620) {
-+              u8 mode;
-+
-+              if (dm_read_reg(dev, DM_MODE_CTRL, &mode) < 0) {
-+                      netdev_err(dev->net, "Error reading MODE_CTRL\n");
-+                      ret = -ENODEV;
-+                      goto out;
-+              }
-+              dm_write_reg(dev, DM_MODE_CTRL, mode & 0x7f);
-+      }
-+
-+      /* power up phy */
-+      dm_write_reg(dev, DM_GPR_CTRL, 1);
-+      dm_write_reg(dev, DM_GPR_DATA, 0);
-+
-+      /* receive broadcast packets */
-+      dm9601_set_multicast(dev->net);
-+
-+      dm9601_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET);
-+      dm9601_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE,
-+                        ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP);
-+      mii_nway_restart(&dev->mii);
-+
-+out:
-+      return ret;
-+}
-+
-+static int dm9601_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      u8 status;
-+      int len;
-+
-+      /* format:
-+         b1: rx status
-+         b2: packet length (incl crc) low
-+         b3: packet length (incl crc) high
-+         b4..n-4: packet data
-+         bn-3..bn: ethernet crc
-+       */
-+
-+      if (unlikely(skb->len < DM_RX_OVERHEAD)) {
-+              dev_err(&dev->udev->dev, "unexpected tiny rx frame\n");
-+              return 0;
-+      }
-+
-+      status = skb->data[0];
-+      len = (skb->data[1] | (skb->data[2] << 8)) - 4;
-+
-+      if (unlikely(status & 0xbf)) {
-+              if (status & 0x01) dev->net->stats.rx_fifo_errors++;
-+              if (status & 0x02) dev->net->stats.rx_crc_errors++;
-+              if (status & 0x04) dev->net->stats.rx_frame_errors++;
-+              if (status & 0x20) dev->net->stats.rx_missed_errors++;
-+              if (status & 0x90) dev->net->stats.rx_length_errors++;
-+              return 0;
-+      }
-+
-+      skb_pull(skb, 3);
-+      skb_trim(skb, len);
-+
-+      return 1;
-+}
-+
-+static struct sk_buff *dm9601_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
-+                                     gfp_t flags)
-+{
-+      int len, pad;
-+
-+      /* format:
-+         b1: packet length low
-+         b2: packet length high
-+         b3..n: packet data
-+      */
-+
-+      len = skb->len + DM_TX_OVERHEAD;
-+
-+      /* workaround for dm962x errata with tx fifo getting out of
-+       * sync if a USB bulk transfer retry happens right after a
-+       * packet with odd / maxpacket length by adding up to 3 bytes
-+       * padding.
-+       */
-+      while ((len & 1) || !(len % dev->maxpacket))
-+              len++;
-+
-+      len -= DM_TX_OVERHEAD; /* hw header doesn't count as part of length */
-+      pad = len - skb->len;
-+
-+      if (skb_headroom(skb) < DM_TX_OVERHEAD || skb_tailroom(skb) < pad) {
-+              struct sk_buff *skb2;
-+
-+              skb2 = skb_copy_expand(skb, DM_TX_OVERHEAD, pad, flags);
-+              dev_kfree_skb_any(skb);
-+              skb = skb2;
-+              if (!skb)
-+                      return NULL;
-+      }
-+
-+      __skb_push(skb, DM_TX_OVERHEAD);
-+
-+      if (pad) {
-+              memset(skb->data + skb->len, 0, pad);
-+              __skb_put(skb, pad);
-+      }
-+
-+      skb->data[0] = len;
-+      skb->data[1] = len >> 8;
-+
-+      return skb;
-+}
-+
-+static void dm9601_status(struct usbnet *dev, struct urb *urb)
-+{
-+      int link;
-+      u8 *buf;
-+
-+      /* format:
-+         b0: net status
-+         b1: tx status 1
-+         b2: tx status 2
-+         b3: rx status
-+         b4: rx overflow
-+         b5: rx count
-+         b6: tx count
-+         b7: gpr
-+      */
-+
-+      if (urb->actual_length < 8)
-+              return;
-+
-+      buf = urb->transfer_buffer;
-+
-+      link = !!(buf[0] & 0x40);
-+      if (netif_carrier_ok(dev->net) != link) {
-+              usbnet_link_change(dev, link, 1);
-+              netdev_dbg(dev->net, "Link Status is: %d\n", link);
-+      }
-+}
-+
-+static int dm9601_link_reset(struct usbnet *dev)
-+{
-+      struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
-+
-+      mii_check_media(&dev->mii, 1, 1);
-+      mii_ethtool_gset(&dev->mii, &ecmd);
-+
-+      netdev_dbg(dev->net, "link_reset() speed: %u duplex: %d\n",
-+                 ethtool_cmd_speed(&ecmd), ecmd.duplex);
-+
-+      return 0;
-+}
-+
-+static const struct driver_info dm9601_info = {
-+      .description    = "Davicom DM96xx USB 10/100 Ethernet",
-+      .flags          = FLAG_ETHER | FLAG_LINK_INTR,
-+      .bind           = dm9601_bind,
-+      .rx_fixup       = dm9601_rx_fixup,
-+      .tx_fixup       = dm9601_tx_fixup,
-+      .status         = dm9601_status,
-+      .link_reset     = dm9601_link_reset,
-+      .reset          = dm9601_link_reset,
-+};
-+
-+static const struct usb_device_id products[] = {
-+      {
-+       USB_DEVICE(0x07aa, 0x9601),    /* Corega FEther USB-TXC */
-+       .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+       USB_DEVICE(0x0a46, 0x9601),    /* Davicom USB-100 */
-+       .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+       USB_DEVICE(0x0a46, 0x6688),    /* ZT6688 USB NIC */
-+       .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+       USB_DEVICE(0x0a46, 0x0268),    /* ShanTou ST268 USB NIC */
-+       .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+       USB_DEVICE(0x0a46, 0x8515),    /* ADMtek ADM8515 USB NIC */
-+       .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+      USB_DEVICE(0x0a47, 0x9601),     /* Hirose USB-100 */
-+      .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+      USB_DEVICE(0x0fe6, 0x8101),     /* DM9601 USB to Fast Ethernet Adapter */
-+      .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+       USB_DEVICE(0x0fe6, 0x9700),    /* DM9601 USB to Fast Ethernet Adapter */
-+       .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+       USB_DEVICE(0x0a46, 0x9000),    /* DM9000E */
-+       .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+       USB_DEVICE(0x0a46, 0x9620),    /* DM9620 USB to Fast Ethernet Adapter */
-+       .driver_info = (unsigned long)&dm9601_info,
-+       },
-+      {
-+       USB_DEVICE(0x0a46, 0x9621),    /* DM9621A USB to Fast Ethernet Adapter */
-+       .driver_info = (unsigned long)&dm9601_info,
-+      },
-+      {
-+       USB_DEVICE(0x0a46, 0x9622),    /* DM9622 USB to Fast Ethernet Adapter */
-+       .driver_info = (unsigned long)&dm9601_info,
-+      },
-+      {
-+       USB_DEVICE(0x0a46, 0x0269),    /* DM962OA USB to Fast Ethernet Adapter */
-+       .driver_info = (unsigned long)&dm9601_info,
-+      },
-+      {
-+       USB_DEVICE(0x0a46, 0x1269),    /* DM9621A USB to Fast Ethernet Adapter */
-+       .driver_info = (unsigned long)&dm9601_info,
-+      },
-+      {},                     // END
-+};
-+
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver dm9601_driver = {
-+      .name = "dm9601",
-+      .id_table = products,
-+      .probe = usbnet_probe,
-+      .disconnect = usbnet_disconnect,
-+      .suspend = usbnet_suspend,
-+      .resume = usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(dm9601_driver);
-+
-+MODULE_AUTHOR("Peter Korsgaard <jacmet@sunsite.dk>");
-+MODULE_DESCRIPTION("Davicom DM96xx USB 10/100 ethernet devices");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/gl620a.c backports-4.2.6-1/drivers/net/usb/gl620a.c
---- backports-4.2.6-1.org/drivers/net/usb/gl620a.c     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/gl620a.c 2016-06-28 14:35:17.978640554 +0200
-@@ -0,0 +1,242 @@
-+/*
-+ * GeneSys GL620USB-A based links
-+ * Copyright (C) 2001 by Jiun-Jie Huang <huangjj@genesyslogic.com.tw>
-+ * Copyright (C) 2001 by Stanislav Brabec <utx@penguin.cz>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+// #define    DEBUG                   // error path messages, extra info
-+// #define    VERBOSE                 // more; success messages
-+
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/gfp.h>
-+
-+
-+/*
-+ * GeneSys GL620USB-A (www.genesyslogic.com.tw)
-+ *
-+ * ... should partially interop with the Win32 driver for this hardware.
-+ * The GeneSys docs imply there's some NDIS issue motivating this framing.
-+ *
-+ * Some info from GeneSys:
-+ *  - GL620USB-A is full duplex; GL620USB is only half duplex for bulk.
-+ *    (Some cables, like the BAFO-100c, use the half duplex version.)
-+ *  - For the full duplex model, the low bit of the version code says
-+ *    which side is which ("left/right").
-+ *  - For the half duplex type, a control/interrupt handshake settles
-+ *    the transfer direction.  (That's disabled here, partially coded.)
-+ *    A control URB would block until other side writes an interrupt.
-+ *
-+ * Original code from Jiun-Jie Huang <huangjj@genesyslogic.com.tw>
-+ * and merged into "usbnet" by Stanislav Brabec <utx@penguin.cz>.
-+ */
-+
-+// control msg write command
-+#define GENELINK_CONNECT_WRITE                        0xF0
-+// interrupt pipe index
-+#define GENELINK_INTERRUPT_PIPE                       0x03
-+// interrupt read buffer size
-+#define INTERRUPT_BUFSIZE                     0x08
-+// interrupt pipe interval value
-+#define GENELINK_INTERRUPT_INTERVAL           0x10
-+// max transmit packet number per transmit
-+#define GL_MAX_TRANSMIT_PACKETS                       32
-+// max packet length
-+#define GL_MAX_PACKET_LEN                     1514
-+// max receive buffer size
-+#define GL_RCV_BUF_SIZE               \
-+      (((GL_MAX_PACKET_LEN + 4) * GL_MAX_TRANSMIT_PACKETS) + 4)
-+
-+struct gl_packet {
-+      __le32          packet_length;
-+      char            packet_data [1];
-+};
-+
-+struct gl_header {
-+      __le32                  packet_count;
-+      struct gl_packet        packets;
-+};
-+
-+static int genelink_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      struct gl_header        *header;
-+      struct gl_packet        *packet;
-+      struct sk_buff          *gl_skb;
-+      u32                     size;
-+      u32                     count;
-+
-+      /* This check is no longer done by usbnet */
-+      if (skb->len < dev->net->hard_header_len)
-+              return 0;
-+
-+      header = (struct gl_header *) skb->data;
-+
-+      // get the packet count of the received skb
-+      count = le32_to_cpu(header->packet_count);
-+      if (count > GL_MAX_TRANSMIT_PACKETS) {
-+              netdev_dbg(dev->net,
-+                         "genelink: invalid received packet count %u\n",
-+                         count);
-+              return 0;
-+      }
-+
-+      // set the current packet pointer to the first packet
-+      packet = &header->packets;
-+
-+      // decrement the length for the packet count size 4 bytes
-+      skb_pull(skb, 4);
-+
-+      while (count > 1) {
-+              // get the packet length
-+              size = le32_to_cpu(packet->packet_length);
-+
-+              // this may be a broken packet
-+              if (size > GL_MAX_PACKET_LEN) {
-+                      netdev_dbg(dev->net, "genelink: invalid rx length %d\n",
-+                                 size);
-+                      return 0;
-+              }
-+
-+              // allocate the skb for the individual packet
-+              gl_skb = alloc_skb(size, GFP_ATOMIC);
-+              if (gl_skb) {
-+
-+                      // copy the packet data to the new skb
-+                      memcpy(skb_put(gl_skb, size),
-+                                      packet->packet_data, size);
-+                      usbnet_skb_return(dev, gl_skb);
-+              }
-+
-+              // advance to the next packet
-+              packet = (struct gl_packet *)&packet->packet_data[size];
-+              count--;
-+
-+              // shift the data pointer to the next gl_packet
-+              skb_pull(skb, size + 4);
-+      }
-+
-+      // skip the packet length field 4 bytes
-+      skb_pull(skb, 4);
-+
-+      if (skb->len > GL_MAX_PACKET_LEN) {
-+              netdev_dbg(dev->net, "genelink: invalid rx length %d\n",
-+                         skb->len);
-+              return 0;
-+      }
-+      return 1;
-+}
-+
-+static struct sk_buff *
-+genelink_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
-+{
-+      int     padlen;
-+      int     length = skb->len;
-+      int     headroom = skb_headroom(skb);
-+      int     tailroom = skb_tailroom(skb);
-+      __le32  *packet_count;
-+      __le32  *packet_len;
-+
-+      // FIXME:  magic numbers, bleech
-+      padlen = ((skb->len + (4 + 4*1)) % 64) ? 0 : 1;
-+
-+      if ((!skb_cloned(skb))
-+                      && ((headroom + tailroom) >= (padlen + (4 + 4*1)))) {
-+              if ((headroom < (4 + 4*1)) || (tailroom < padlen)) {
-+                      skb->data = memmove(skb->head + (4 + 4*1),
-+                                           skb->data, skb->len);
-+                      skb_set_tail_pointer(skb, skb->len);
-+              }
-+      } else {
-+              struct sk_buff  *skb2;
-+              skb2 = skb_copy_expand(skb, (4 + 4*1) , padlen, flags);
-+              dev_kfree_skb_any(skb);
-+              skb = skb2;
-+              if (!skb)
-+                      return NULL;
-+      }
-+
-+      // attach the packet count to the header
-+      packet_count = (__le32 *) skb_push(skb, (4 + 4*1));
-+      packet_len = packet_count + 1;
-+
-+      *packet_count = cpu_to_le32(1);
-+      *packet_len = cpu_to_le32(length);
-+
-+      // add padding byte
-+      if ((skb->len % dev->maxpacket) == 0)
-+              skb_put(skb, 1);
-+
-+      return skb;
-+}
-+
-+static int genelink_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      dev->hard_mtu = GL_RCV_BUF_SIZE;
-+      dev->net->hard_header_len += 4;
-+      dev->in = usb_rcvbulkpipe(dev->udev, dev->driver_info->in);
-+      dev->out = usb_sndbulkpipe(dev->udev, dev->driver_info->out);
-+      return 0;
-+}
-+
-+static const struct driver_info       genelink_info = {
-+      .description =  "Genesys GeneLink",
-+      .flags =        FLAG_POINTTOPOINT | FLAG_FRAMING_GL | FLAG_NO_SETINT,
-+      .bind =         genelink_bind,
-+      .rx_fixup =     genelink_rx_fixup,
-+      .tx_fixup =     genelink_tx_fixup,
-+
-+      .in = 1, .out = 2,
-+
-+#ifdef        GENELINK_ACK
-+      .check_connect =genelink_check_connect,
-+#endif
-+};
-+
-+static const struct usb_device_id     products [] = {
-+
-+{
-+      USB_DEVICE(0x05e3, 0x0502),     // GL620USB-A
-+      .driver_info =  (unsigned long) &genelink_info,
-+},
-+      /* NOT: USB_DEVICE(0x05e3, 0x0501),     // GL620USB
-+       * that's half duplex, not currently supported
-+       */
-+      { },            // END
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver gl620a_driver = {
-+      .name =         "gl620a",
-+      .id_table =     products,
-+      .probe =        usbnet_probe,
-+      .disconnect =   usbnet_disconnect,
-+      .suspend =      usbnet_suspend,
-+      .resume =       usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(gl620a_driver);
-+
-+MODULE_AUTHOR("Jiun-Jie Huang");
-+MODULE_DESCRIPTION("GL620-USB-A Host-to-Host Link cables");
-+MODULE_LICENSE("GPL");
-+
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/hso.c backports-4.2.6-1/drivers/net/usb/hso.c
---- backports-4.2.6-1.org/drivers/net/usb/hso.c        1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/hso.c    2016-06-28 14:35:17.981973887 +0200
-@@ -0,0 +1,3322 @@
-+/******************************************************************************
-+ *
-+ * Driver for Option High Speed Mobile Devices.
-+ *
-+ *  Copyright (C) 2008 Option International
-+ *                     Filip Aben <f.aben@option.com>
-+ *                     Denis Joseph Barrow <d.barow@option.com>
-+ *                     Jan Dumon <j.dumon@option.com>
-+ *  Copyright (C) 2007 Andrew Bird (Sphere Systems Ltd)
-+ *                    <ajb@spheresystems.co.uk>
-+ *  Copyright (C) 2008 Greg Kroah-Hartman <gregkh@suse.de>
-+ *  Copyright (C) 2008 Novell, Inc.
-+ *
-+ *  This program is free software; you can redistribute it and/or modify
-+ *  it under the terms of the GNU General Public License version 2 as
-+ *  published by the Free Software Foundation.
-+ *
-+ *  This program is distributed in the hope that it will be useful,
-+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *  GNU General Public License for more details.
-+ *
-+ *  You should have received a copy of the GNU General Public License
-+ *  along with this program; if not, write to the Free Software
-+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
-+ *  USA
-+ *
-+ *
-+ *****************************************************************************/
-+
-+/******************************************************************************
-+ *
-+ * Description of the device:
-+ *
-+ * Interface 0:       Contains the IP network interface on the bulk end points.
-+ *            The multiplexed serial ports are using the interrupt and
-+ *            control endpoints.
-+ *            Interrupt contains a bitmap telling which multiplexed
-+ *            serialport needs servicing.
-+ *
-+ * Interface 1:       Diagnostics port, uses bulk only, do not submit urbs until the
-+ *            port is opened, as this have a huge impact on the network port
-+ *            throughput.
-+ *
-+ * Interface 2:       Standard modem interface - circuit switched interface, this
-+ *            can be used to make a standard ppp connection however it
-+ *              should not be used in conjunction with the IP network interface
-+ *              enabled for USB performance reasons i.e. if using this set
-+ *              ideally disable_net=1.
-+ *
-+ *****************************************************************************/
-+
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/netdevice.h>
-+#include <linux/module.h>
-+#include <linux/ethtool.h>
-+#include <linux/usb.h>
-+#include <linux/tty.h>
-+#include <linux/tty_driver.h>
-+#include <linux/tty_flip.h>
-+#include <linux/kmod.h>
-+#include <linux/rfkill.h>
-+#include <linux/ip.h>
-+#include <linux/uaccess.h>
-+#include <linux/usb/cdc.h>
-+#include <net/arp.h>
-+#include <asm/byteorder.h>
-+#include <linux/serial_core.h>
-+#include <linux/serial.h>
-+#include <asm/local.h>
-+
-+#define MOD_AUTHOR                    "Option Wireless"
-+#define MOD_DESCRIPTION                       "USB High Speed Option driver"
-+#define MOD_LICENSE                   "GPL"
-+
-+#define HSO_MAX_NET_DEVICES           10
-+#define HSO__MAX_MTU                  2048
-+#define DEFAULT_MTU                   1500
-+#define DEFAULT_MRU                   1500
-+
-+#define CTRL_URB_RX_SIZE              1024
-+#define CTRL_URB_TX_SIZE              64
-+
-+#define BULK_URB_RX_SIZE              4096
-+#define BULK_URB_TX_SIZE              8192
-+
-+#define MUX_BULK_RX_BUF_SIZE          HSO__MAX_MTU
-+#define MUX_BULK_TX_BUF_SIZE          HSO__MAX_MTU
-+#define MUX_BULK_RX_BUF_COUNT         4
-+#define USB_TYPE_OPTION_VENDOR                0x20
-+
-+/* These definitions are used with the struct hso_net flags element */
-+/* - use *_bit operations on it. (bit indices not values.) */
-+#define HSO_NET_RUNNING                       0
-+
-+#define       HSO_NET_TX_TIMEOUT              (HZ*10)
-+
-+#define HSO_SERIAL_MAGIC              0x48534f31
-+
-+/* Number of ttys to handle */
-+#define HSO_SERIAL_TTY_MINORS         256
-+
-+#define MAX_RX_URBS                   2
-+
-+/*****************************************************************************/
-+/* Debugging functions                                                       */
-+/*****************************************************************************/
-+#define D__(lvl_, fmt, arg...)                                \
-+      do {                                            \
-+              printk(lvl_ "[%d:%s]: " fmt "\n",       \
-+                     __LINE__, __func__, ## arg);     \
-+      } while (0)
-+
-+#define D_(lvl, args...)                              \
-+      do {                                            \
-+              if (lvl & debug)                        \
-+                      D__(KERN_INFO, args);           \
-+      } while (0)
-+
-+#define D1(args...)   D_(0x01, ##args)
-+#define D2(args...)   D_(0x02, ##args)
-+#define D3(args...)   D_(0x04, ##args)
-+#define D4(args...)   D_(0x08, ##args)
-+#define D5(args...)   D_(0x10, ##args)
-+
-+/*****************************************************************************/
-+/* Enumerators                                                               */
-+/*****************************************************************************/
-+enum pkt_parse_state {
-+      WAIT_IP,
-+      WAIT_DATA,
-+      WAIT_SYNC
-+};
-+
-+/*****************************************************************************/
-+/* Structs                                                                   */
-+/*****************************************************************************/
-+
-+struct hso_shared_int {
-+      struct usb_endpoint_descriptor *intr_endp;
-+      void *shared_intr_buf;
-+      struct urb *shared_intr_urb;
-+      struct usb_device *usb;
-+      int use_count;
-+      int ref_count;
-+      struct mutex shared_int_lock;
-+};
-+
-+struct hso_net {
-+      struct hso_device *parent;
-+      struct net_device *net;
-+      struct rfkill *rfkill;
-+      char name[24];
-+
-+      struct usb_endpoint_descriptor *in_endp;
-+      struct usb_endpoint_descriptor *out_endp;
-+
-+      struct urb *mux_bulk_rx_urb_pool[MUX_BULK_RX_BUF_COUNT];
-+      struct urb *mux_bulk_tx_urb;
-+      void *mux_bulk_rx_buf_pool[MUX_BULK_RX_BUF_COUNT];
-+      void *mux_bulk_tx_buf;
-+
-+      struct sk_buff *skb_rx_buf;
-+      struct sk_buff *skb_tx_buf;
-+
-+      enum pkt_parse_state rx_parse_state;
-+      spinlock_t net_lock;
-+
-+      unsigned short rx_buf_size;
-+      unsigned short rx_buf_missing;
-+      struct iphdr rx_ip_hdr;
-+
-+      unsigned long flags;
-+};
-+
-+enum rx_ctrl_state{
-+      RX_IDLE,
-+      RX_SENT,
-+      RX_PENDING
-+};
-+
-+#define BM_REQUEST_TYPE (0xa1)
-+#define B_NOTIFICATION  (0x20)
-+#define W_VALUE         (0x0)
-+#define W_LENGTH        (0x2)
-+
-+#define B_OVERRUN       (0x1<<6)
-+#define B_PARITY        (0x1<<5)
-+#define B_FRAMING       (0x1<<4)
-+#define B_RING_SIGNAL   (0x1<<3)
-+#define B_BREAK         (0x1<<2)
-+#define B_TX_CARRIER    (0x1<<1)
-+#define B_RX_CARRIER    (0x1<<0)
-+
-+struct hso_serial_state_notification {
-+      u8 bmRequestType;
-+      u8 bNotification;
-+      u16 wValue;
-+      u16 wIndex;
-+      u16 wLength;
-+      u16 UART_state_bitmap;
-+} __packed;
-+
-+struct hso_tiocmget {
-+      struct mutex mutex;
-+      wait_queue_head_t waitq;
-+      int    intr_completed;
-+      struct usb_endpoint_descriptor *endp;
-+      struct urb *urb;
-+      struct hso_serial_state_notification serial_state_notification;
-+      u16    prev_UART_state_bitmap;
-+      struct uart_icount icount;
-+};
-+
-+
-+struct hso_serial {
-+      struct hso_device *parent;
-+      int magic;
-+      u8 minor;
-+
-+      struct hso_shared_int *shared_int;
-+
-+      /* rx/tx urb could be either a bulk urb or a control urb depending
-+         on which serial port it is used on. */
-+      struct urb *rx_urb[MAX_RX_URBS];
-+      u8 num_rx_urbs;
-+      u8 *rx_data[MAX_RX_URBS];
-+      u16 rx_data_length;     /* should contain allocated length */
-+
-+      struct urb *tx_urb;
-+      u8 *tx_data;
-+      u8 *tx_buffer;
-+      u16 tx_data_length;     /* should contain allocated length */
-+      u16 tx_data_count;
-+      u16 tx_buffer_count;
-+      struct usb_ctrlrequest ctrl_req_tx;
-+      struct usb_ctrlrequest ctrl_req_rx;
-+
-+      struct usb_endpoint_descriptor *in_endp;
-+      struct usb_endpoint_descriptor *out_endp;
-+
-+      enum rx_ctrl_state rx_state;
-+      u8 rts_state;
-+      u8 dtr_state;
-+      unsigned tx_urb_used:1;
-+
-+      struct tty_port port;
-+      /* from usb_serial_port */
-+      spinlock_t serial_lock;
-+
-+      int (*write_data) (struct hso_serial *serial);
-+      struct hso_tiocmget  *tiocmget;
-+      /* Hacks required to get flow control
-+       * working on the serial receive buffers
-+       * so as not to drop characters on the floor.
-+       */
-+      int  curr_rx_urb_idx;
-+      u8   rx_urb_filled[MAX_RX_URBS];
-+      struct tasklet_struct unthrottle_tasklet;
-+};
-+
-+struct hso_device {
-+      union {
-+              struct hso_serial *dev_serial;
-+              struct hso_net *dev_net;
-+      } port_data;
-+
-+      u32 port_spec;
-+
-+      u8 is_active;
-+      u8 usb_gone;
-+      struct work_struct async_get_intf;
-+      struct work_struct async_put_intf;
-+
-+      struct usb_device *usb;
-+      struct usb_interface *interface;
-+
-+      struct device *dev;
-+      struct kref ref;
-+      struct mutex mutex;
-+};
-+
-+/* Type of interface */
-+#define HSO_INTF_MASK         0xFF00
-+#define       HSO_INTF_MUX            0x0100
-+#define       HSO_INTF_BULK           0x0200
-+
-+/* Type of port */
-+#define HSO_PORT_MASK         0xFF
-+#define HSO_PORT_NO_PORT      0x0
-+#define       HSO_PORT_CONTROL        0x1
-+#define       HSO_PORT_APP            0x2
-+#define       HSO_PORT_GPS            0x3
-+#define       HSO_PORT_PCSC           0x4
-+#define       HSO_PORT_APP2           0x5
-+#define HSO_PORT_GPS_CONTROL  0x6
-+#define HSO_PORT_MSD          0x7
-+#define HSO_PORT_VOICE                0x8
-+#define HSO_PORT_DIAG2                0x9
-+#define       HSO_PORT_DIAG           0x10
-+#define       HSO_PORT_MODEM          0x11
-+#define       HSO_PORT_NETWORK        0x12
-+
-+/* Additional device info */
-+#define HSO_INFO_MASK         0xFF000000
-+#define HSO_INFO_CRC_BUG      0x01000000
-+
-+/*****************************************************************************/
-+/* Prototypes                                                                */
-+/*****************************************************************************/
-+/* Serial driver functions */
-+static int hso_serial_tiocmset(struct tty_struct *tty,
-+                             unsigned int set, unsigned int clear);
-+static void ctrl_callback(struct urb *urb);
-+static int put_rxbuf_data(struct urb *urb, struct hso_serial *serial);
-+static void hso_kick_transmit(struct hso_serial *serial);
-+/* Helper functions */
-+static int hso_mux_submit_intr_urb(struct hso_shared_int *mux_int,
-+                                 struct usb_device *usb, gfp_t gfp);
-+static void handle_usb_error(int status, const char *function,
-+                           struct hso_device *hso_dev);
-+static struct usb_endpoint_descriptor *hso_get_ep(struct usb_interface *intf,
-+                                                int type, int dir);
-+static int hso_get_mux_ports(struct usb_interface *intf, unsigned char *ports);
-+static void hso_free_interface(struct usb_interface *intf);
-+static int hso_start_serial_device(struct hso_device *hso_dev, gfp_t flags);
-+static int hso_stop_serial_device(struct hso_device *hso_dev);
-+static int hso_start_net_device(struct hso_device *hso_dev);
-+static void hso_free_shared_int(struct hso_shared_int *shared_int);
-+static int hso_stop_net_device(struct hso_device *hso_dev);
-+static void hso_serial_ref_free(struct kref *ref);
-+static void hso_std_serial_read_bulk_callback(struct urb *urb);
-+static int hso_mux_serial_read(struct hso_serial *serial);
-+static void async_get_intf(struct work_struct *data);
-+static void async_put_intf(struct work_struct *data);
-+static int hso_put_activity(struct hso_device *hso_dev);
-+static int hso_get_activity(struct hso_device *hso_dev);
-+static void tiocmget_intr_callback(struct urb *urb);
-+/*****************************************************************************/
-+/* Helping functions                                                         */
-+/*****************************************************************************/
-+
-+/* #define DEBUG */
-+
-+static inline struct hso_net *dev2net(struct hso_device *hso_dev)
-+{
-+      return hso_dev->port_data.dev_net;
-+}
-+
-+static inline struct hso_serial *dev2ser(struct hso_device *hso_dev)
-+{
-+      return hso_dev->port_data.dev_serial;
-+}
-+
-+/* Debugging functions */
-+#ifdef DEBUG
-+static void dbg_dump(int line_count, const char *func_name, unsigned char *buf,
-+                   unsigned int len)
-+{
-+      static char name[255];
-+
-+      sprintf(name, "hso[%d:%s]", line_count, func_name);
-+      print_hex_dump_bytes(name, DUMP_PREFIX_NONE, buf, len);
-+}
-+
-+#define DUMP(buf_, len_)      \
-+      dbg_dump(__LINE__, __func__, (unsigned char *)buf_, len_)
-+
-+#define DUMP1(buf_, len_)                     \
-+      do {                                    \
-+              if (0x01 & debug)               \
-+                      DUMP(buf_, len_);       \
-+      } while (0)
-+#else
-+#define DUMP(buf_, len_)
-+#define DUMP1(buf_, len_)
-+#endif
-+
-+/* module parameters */
-+static int debug;
-+static int tty_major;
-+static int disable_net;
-+
-+/* driver info */
-+static const char driver_name[] = "hso";
-+static const char tty_filename[] = "ttyHS";
-+static const char *version = __FILE__ ": " MOD_AUTHOR;
-+/* the usb driver itself (registered in hso_init) */
-+static struct usb_driver hso_driver;
-+/* serial structures */
-+static struct tty_driver *tty_drv;
-+static struct hso_device *serial_table[HSO_SERIAL_TTY_MINORS];
-+static struct hso_device *network_table[HSO_MAX_NET_DEVICES];
-+static spinlock_t serial_table_lock;
-+
-+static const s32 default_port_spec[] = {
-+      HSO_INTF_MUX | HSO_PORT_NETWORK,
-+      HSO_INTF_BULK | HSO_PORT_DIAG,
-+      HSO_INTF_BULK | HSO_PORT_MODEM,
-+      0
-+};
-+
-+static const s32 icon321_port_spec[] = {
-+      HSO_INTF_MUX | HSO_PORT_NETWORK,
-+      HSO_INTF_BULK | HSO_PORT_DIAG2,
-+      HSO_INTF_BULK | HSO_PORT_MODEM,
-+      HSO_INTF_BULK | HSO_PORT_DIAG,
-+      0
-+};
-+
-+#define default_port_device(vendor, product)  \
-+      USB_DEVICE(vendor, product),    \
-+              .driver_info = (kernel_ulong_t)default_port_spec
-+
-+#define icon321_port_device(vendor, product)  \
-+      USB_DEVICE(vendor, product),    \
-+              .driver_info = (kernel_ulong_t)icon321_port_spec
-+
-+/* list of devices we support */
-+static const struct usb_device_id hso_ids[] = {
-+      {default_port_device(0x0af0, 0x6711)},
-+      {default_port_device(0x0af0, 0x6731)},
-+      {default_port_device(0x0af0, 0x6751)},
-+      {default_port_device(0x0af0, 0x6771)},
-+      {default_port_device(0x0af0, 0x6791)},
-+      {default_port_device(0x0af0, 0x6811)},
-+      {default_port_device(0x0af0, 0x6911)},
-+      {default_port_device(0x0af0, 0x6951)},
-+      {default_port_device(0x0af0, 0x6971)},
-+      {default_port_device(0x0af0, 0x7011)},
-+      {default_port_device(0x0af0, 0x7031)},
-+      {default_port_device(0x0af0, 0x7051)},
-+      {default_port_device(0x0af0, 0x7071)},
-+      {default_port_device(0x0af0, 0x7111)},
-+      {default_port_device(0x0af0, 0x7211)},
-+      {default_port_device(0x0af0, 0x7251)},
-+      {default_port_device(0x0af0, 0x7271)},
-+      {default_port_device(0x0af0, 0x7311)},
-+      {default_port_device(0x0af0, 0xc031)},  /* Icon-Edge */
-+      {icon321_port_device(0x0af0, 0xd013)},  /* Module HSxPA */
-+      {icon321_port_device(0x0af0, 0xd031)},  /* Icon-321 */
-+      {icon321_port_device(0x0af0, 0xd033)},  /* Icon-322 */
-+      {USB_DEVICE(0x0af0, 0x7301)},           /* GE40x */
-+      {USB_DEVICE(0x0af0, 0x7361)},           /* GE40x */
-+      {USB_DEVICE(0x0af0, 0x7381)},           /* GE40x */
-+      {USB_DEVICE(0x0af0, 0x7401)},           /* GI 0401 */
-+      {USB_DEVICE(0x0af0, 0x7501)},           /* GTM 382 */
-+      {USB_DEVICE(0x0af0, 0x7601)},           /* GE40x */
-+      {USB_DEVICE(0x0af0, 0x7701)},
-+      {USB_DEVICE(0x0af0, 0x7706)},
-+      {USB_DEVICE(0x0af0, 0x7801)},
-+      {USB_DEVICE(0x0af0, 0x7901)},
-+      {USB_DEVICE(0x0af0, 0x7A01)},
-+      {USB_DEVICE(0x0af0, 0x7A05)},
-+      {USB_DEVICE(0x0af0, 0x8200)},
-+      {USB_DEVICE(0x0af0, 0x8201)},
-+      {USB_DEVICE(0x0af0, 0x8300)},
-+      {USB_DEVICE(0x0af0, 0x8302)},
-+      {USB_DEVICE(0x0af0, 0x8304)},
-+      {USB_DEVICE(0x0af0, 0x8400)},
-+      {USB_DEVICE(0x0af0, 0x8600)},
-+      {USB_DEVICE(0x0af0, 0x8800)},
-+      {USB_DEVICE(0x0af0, 0x8900)},
-+      {USB_DEVICE(0x0af0, 0x9000)},
-+      {USB_DEVICE(0x0af0, 0x9200)},           /* Option GTM671WFS */
-+      {USB_DEVICE(0x0af0, 0xd035)},
-+      {USB_DEVICE(0x0af0, 0xd055)},
-+      {USB_DEVICE(0x0af0, 0xd155)},
-+      {USB_DEVICE(0x0af0, 0xd255)},
-+      {USB_DEVICE(0x0af0, 0xd057)},
-+      {USB_DEVICE(0x0af0, 0xd157)},
-+      {USB_DEVICE(0x0af0, 0xd257)},
-+      {USB_DEVICE(0x0af0, 0xd357)},
-+      {USB_DEVICE(0x0af0, 0xd058)},
-+      {USB_DEVICE(0x0af0, 0xc100)},
-+      {}
-+};
-+MODULE_DEVICE_TABLE(usb, hso_ids);
-+
-+/* Sysfs attribute */
-+static ssize_t hso_sysfs_show_porttype(struct device *dev,
-+                                     struct device_attribute *attr,
-+                                     char *buf)
-+{
-+      struct hso_device *hso_dev = dev_get_drvdata(dev);
-+      char *port_name;
-+
-+      if (!hso_dev)
-+              return 0;
-+
-+      switch (hso_dev->port_spec & HSO_PORT_MASK) {
-+      case HSO_PORT_CONTROL:
-+              port_name = "Control";
-+              break;
-+      case HSO_PORT_APP:
-+              port_name = "Application";
-+              break;
-+      case HSO_PORT_APP2:
-+              port_name = "Application2";
-+              break;
-+      case HSO_PORT_GPS:
-+              port_name = "GPS";
-+              break;
-+      case HSO_PORT_GPS_CONTROL:
-+              port_name = "GPS Control";
-+              break;
-+      case HSO_PORT_PCSC:
-+              port_name = "PCSC";
-+              break;
-+      case HSO_PORT_DIAG:
-+              port_name = "Diagnostic";
-+              break;
-+      case HSO_PORT_DIAG2:
-+              port_name = "Diagnostic2";
-+              break;
-+      case HSO_PORT_MODEM:
-+              port_name = "Modem";
-+              break;
-+      case HSO_PORT_NETWORK:
-+              port_name = "Network";
-+              break;
-+      default:
-+              port_name = "Unknown";
-+              break;
-+      }
-+
-+      return sprintf(buf, "%s\n", port_name);
-+}
-+static DEVICE_ATTR(hsotype, S_IRUGO, hso_sysfs_show_porttype, NULL);
-+
-+static struct attribute *hso_serial_dev_attrs[] = {
-+      &dev_attr_hsotype.attr,
-+      NULL
-+};
-+
-+ATTRIBUTE_GROUPS(hso_serial_dev);
-+
-+static int hso_urb_to_index(struct hso_serial *serial, struct urb *urb)
-+{
-+      int idx;
-+
-+      for (idx = 0; idx < serial->num_rx_urbs; idx++)
-+              if (serial->rx_urb[idx] == urb)
-+                      return idx;
-+      dev_err(serial->parent->dev, "hso_urb_to_index failed\n");
-+      return -1;
-+}
-+
-+/* converts mux value to a port spec value */
-+static u32 hso_mux_to_port(int mux)
-+{
-+      u32 result;
-+
-+      switch (mux) {
-+      case 0x1:
-+              result = HSO_PORT_CONTROL;
-+              break;
-+      case 0x2:
-+              result = HSO_PORT_APP;
-+              break;
-+      case 0x4:
-+              result = HSO_PORT_PCSC;
-+              break;
-+      case 0x8:
-+              result = HSO_PORT_GPS;
-+              break;
-+      case 0x10:
-+              result = HSO_PORT_APP2;
-+              break;
-+      default:
-+              result = HSO_PORT_NO_PORT;
-+      }
-+      return result;
-+}
-+
-+/* converts port spec value to a mux value */
-+static u32 hso_port_to_mux(int port)
-+{
-+      u32 result;
-+
-+      switch (port & HSO_PORT_MASK) {
-+      case HSO_PORT_CONTROL:
-+              result = 0x0;
-+              break;
-+      case HSO_PORT_APP:
-+              result = 0x1;
-+              break;
-+      case HSO_PORT_PCSC:
-+              result = 0x2;
-+              break;
-+      case HSO_PORT_GPS:
-+              result = 0x3;
-+              break;
-+      case HSO_PORT_APP2:
-+              result = 0x4;
-+              break;
-+      default:
-+              result = 0x0;
-+      }
-+      return result;
-+}
-+
-+static struct hso_serial *get_serial_by_shared_int_and_type(
-+                                      struct hso_shared_int *shared_int,
-+                                      int mux)
-+{
-+      int i, port;
-+
-+      port = hso_mux_to_port(mux);
-+
-+      for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
-+              if (serial_table[i] &&
-+                  (dev2ser(serial_table[i])->shared_int == shared_int) &&
-+                  ((serial_table[i]->port_spec & HSO_PORT_MASK) == port)) {
-+                      return dev2ser(serial_table[i]);
-+              }
-+      }
-+
-+      return NULL;
-+}
-+
-+static struct hso_serial *get_serial_by_index(unsigned index)
-+{
-+      struct hso_serial *serial = NULL;
-+      unsigned long flags;
-+
-+      spin_lock_irqsave(&serial_table_lock, flags);
-+      if (serial_table[index])
-+              serial = dev2ser(serial_table[index]);
-+      spin_unlock_irqrestore(&serial_table_lock, flags);
-+
-+      return serial;
-+}
-+
-+static int get_free_serial_index(void)
-+{
-+      int index;
-+      unsigned long flags;
-+
-+      spin_lock_irqsave(&serial_table_lock, flags);
-+      for (index = 0; index < HSO_SERIAL_TTY_MINORS; index++) {
-+              if (serial_table[index] == NULL) {
-+                      spin_unlock_irqrestore(&serial_table_lock, flags);
-+                      return index;
-+              }
-+      }
-+      spin_unlock_irqrestore(&serial_table_lock, flags);
-+
-+      printk(KERN_ERR "%s: no free serial devices in table\n", __func__);
-+      return -1;
-+}
-+
-+static void set_serial_by_index(unsigned index, struct hso_serial *serial)
-+{
-+      unsigned long flags;
-+
-+      spin_lock_irqsave(&serial_table_lock, flags);
-+      if (serial)
-+              serial_table[index] = serial->parent;
-+      else
-+              serial_table[index] = NULL;
-+      spin_unlock_irqrestore(&serial_table_lock, flags);
-+}
-+
-+static void handle_usb_error(int status, const char *function,
-+                           struct hso_device *hso_dev)
-+{
-+      char *explanation;
-+
-+      switch (status) {
-+      case -ENODEV:
-+              explanation = "no device";
-+              break;
-+      case -ENOENT:
-+              explanation = "endpoint not enabled";
-+              break;
-+      case -EPIPE:
-+              explanation = "endpoint stalled";
-+              break;
-+      case -ENOSPC:
-+              explanation = "not enough bandwidth";
-+              break;
-+      case -ESHUTDOWN:
-+              explanation = "device disabled";
-+              break;
-+      case -EHOSTUNREACH:
-+              explanation = "device suspended";
-+              break;
-+      case -EINVAL:
-+      case -EAGAIN:
-+      case -EFBIG:
-+      case -EMSGSIZE:
-+              explanation = "internal error";
-+              break;
-+      case -EILSEQ:
-+      case -EPROTO:
-+      case -ETIME:
-+      case -ETIMEDOUT:
-+              explanation = "protocol error";
-+              if (hso_dev)
-+                      usb_queue_reset_device(hso_dev->interface);
-+              break;
-+      default:
-+              explanation = "unknown status";
-+              break;
-+      }
-+
-+      /* log a meaningful explanation of an USB status */
-+      D1("%s: received USB status - %s (%d)", function, explanation, status);
-+}
-+
-+/* Network interface functions */
-+
-+/* called when net interface is brought up by ifconfig */
-+static int hso_net_open(struct net_device *net)
-+{
-+      struct hso_net *odev = netdev_priv(net);
-+      unsigned long flags = 0;
-+
-+      if (!odev) {
-+              dev_err(&net->dev, "No net device !\n");
-+              return -ENODEV;
-+      }
-+
-+      odev->skb_tx_buf = NULL;
-+
-+      /* setup environment */
-+      spin_lock_irqsave(&odev->net_lock, flags);
-+      odev->rx_parse_state = WAIT_IP;
-+      odev->rx_buf_size = 0;
-+      odev->rx_buf_missing = sizeof(struct iphdr);
-+      spin_unlock_irqrestore(&odev->net_lock, flags);
-+
-+      /* We are up and running. */
-+      set_bit(HSO_NET_RUNNING, &odev->flags);
-+      hso_start_net_device(odev->parent);
-+
-+      /* Tell the kernel we are ready to start receiving from it */
-+      netif_start_queue(net);
-+
-+      return 0;
-+}
-+
-+/* called when interface is brought down by ifconfig */
-+static int hso_net_close(struct net_device *net)
-+{
-+      struct hso_net *odev = netdev_priv(net);
-+
-+      /* we don't need the queue anymore */
-+      netif_stop_queue(net);
-+      /* no longer running */
-+      clear_bit(HSO_NET_RUNNING, &odev->flags);
-+
-+      hso_stop_net_device(odev->parent);
-+
-+      /* done */
-+      return 0;
-+}
-+
-+/* USB tells is xmit done, we should start the netqueue again */
-+static void write_bulk_callback(struct urb *urb)
-+{
-+      struct hso_net *odev = urb->context;
-+      int status = urb->status;
-+
-+      /* Sanity check */
-+      if (!odev || !test_bit(HSO_NET_RUNNING, &odev->flags)) {
-+              dev_err(&urb->dev->dev, "%s: device not running\n", __func__);
-+              return;
-+      }
-+
-+      /* Do we still have a valid kernel network device? */
-+      if (!netif_device_present(odev->net)) {
-+              dev_err(&urb->dev->dev, "%s: net device not present\n",
-+                      __func__);
-+              return;
-+      }
-+
-+      /* log status, but don't act on it, we don't need to resubmit anything
-+       * anyhow */
-+      if (status)
-+              handle_usb_error(status, __func__, odev->parent);
-+
-+      hso_put_activity(odev->parent);
-+
-+      /* Tell the network interface we are ready for another frame */
-+      netif_wake_queue(odev->net);
-+}
-+
-+/* called by kernel when we need to transmit a packet */
-+static netdev_tx_t hso_net_start_xmit(struct sk_buff *skb,
-+                                          struct net_device *net)
-+{
-+      struct hso_net *odev = netdev_priv(net);
-+      int result;
-+
-+      /* Tell the kernel, "No more frames 'til we are done with this one." */
-+      netif_stop_queue(net);
-+      if (hso_get_activity(odev->parent) == -EAGAIN) {
-+              odev->skb_tx_buf = skb;
-+              return NETDEV_TX_OK;
-+      }
-+
-+      /* log if asked */
-+      DUMP1(skb->data, skb->len);
-+      /* Copy it from kernel memory to OUR memory */
-+      memcpy(odev->mux_bulk_tx_buf, skb->data, skb->len);
-+      D1("len: %d/%d", skb->len, MUX_BULK_TX_BUF_SIZE);
-+
-+      /* Fill in the URB for shipping it out. */
-+      usb_fill_bulk_urb(odev->mux_bulk_tx_urb,
-+                        odev->parent->usb,
-+                        usb_sndbulkpipe(odev->parent->usb,
-+                                        odev->out_endp->
-+                                        bEndpointAddress & 0x7F),
-+                        odev->mux_bulk_tx_buf, skb->len, write_bulk_callback,
-+                        odev);
-+
-+      /* Deal with the Zero Length packet problem, I hope */
-+      odev->mux_bulk_tx_urb->transfer_flags |= URB_ZERO_PACKET;
-+
-+      /* Send the URB on its merry way. */
-+      result = usb_submit_urb(odev->mux_bulk_tx_urb, GFP_ATOMIC);
-+      if (result) {
-+              dev_warn(&odev->parent->interface->dev,
-+                      "failed mux_bulk_tx_urb %d\n", result);
-+              net->stats.tx_errors++;
-+              netif_start_queue(net);
-+      } else {
-+              net->stats.tx_packets++;
-+              net->stats.tx_bytes += skb->len;
-+      }
-+      dev_kfree_skb(skb);
-+      /* we're done */
-+      return NETDEV_TX_OK;
-+}
-+
-+static const struct ethtool_ops ops = {
-+      .get_link = ethtool_op_get_link
-+};
-+
-+/* called when a packet did not ack after watchdogtimeout */
-+static void hso_net_tx_timeout(struct net_device *net)
-+{
-+      struct hso_net *odev = netdev_priv(net);
-+
-+      if (!odev)
-+              return;
-+
-+      /* Tell syslog we are hosed. */
-+      dev_warn(&net->dev, "Tx timed out.\n");
-+
-+      /* Tear the waiting frame off the list */
-+      if (odev->mux_bulk_tx_urb &&
-+          (odev->mux_bulk_tx_urb->status == -EINPROGRESS))
-+              usb_unlink_urb(odev->mux_bulk_tx_urb);
-+
-+      /* Update statistics */
-+      net->stats.tx_errors++;
-+}
-+
-+/* make a real packet from the received USB buffer */
-+static void packetizeRx(struct hso_net *odev, unsigned char *ip_pkt,
-+                      unsigned int count, unsigned char is_eop)
-+{
-+      unsigned short temp_bytes;
-+      unsigned short buffer_offset = 0;
-+      unsigned short frame_len;
-+      unsigned char *tmp_rx_buf;
-+
-+      /* log if needed */
-+      D1("Rx %d bytes", count);
-+      DUMP(ip_pkt, min(128, (int)count));
-+
-+      while (count) {
-+              switch (odev->rx_parse_state) {
-+              case WAIT_IP:
-+                      /* waiting for IP header. */
-+                      /* wanted bytes - size of ip header */
-+                      temp_bytes =
-+                          (count <
-+                           odev->rx_buf_missing) ? count : odev->
-+                          rx_buf_missing;
-+
-+                      memcpy(((unsigned char *)(&odev->rx_ip_hdr)) +
-+                             odev->rx_buf_size, ip_pkt + buffer_offset,
-+                             temp_bytes);
-+
-+                      odev->rx_buf_size += temp_bytes;
-+                      buffer_offset += temp_bytes;
-+                      odev->rx_buf_missing -= temp_bytes;
-+                      count -= temp_bytes;
-+
-+                      if (!odev->rx_buf_missing) {
-+                              /* header is complete allocate an sk_buffer and
-+                               * continue to WAIT_DATA */
-+                              frame_len = ntohs(odev->rx_ip_hdr.tot_len);
-+
-+                              if ((frame_len > DEFAULT_MRU) ||
-+                                  (frame_len < sizeof(struct iphdr))) {
-+                                      dev_err(&odev->net->dev,
-+                                              "Invalid frame (%d) length\n",
-+                                              frame_len);
-+                                      odev->rx_parse_state = WAIT_SYNC;
-+                                      continue;
-+                              }
-+                              /* Allocate an sk_buff */
-+                              odev->skb_rx_buf = netdev_alloc_skb(odev->net,
-+                                                                  frame_len);
-+                              if (!odev->skb_rx_buf) {
-+                                      /* We got no receive buffer. */
-+                                      D1("could not allocate memory");
-+                                      odev->rx_parse_state = WAIT_SYNC;
-+                                      continue;
-+                              }
-+
-+                              /* Copy what we got so far. make room for iphdr
-+                               * after tail. */
-+                              tmp_rx_buf =
-+                                  skb_put(odev->skb_rx_buf,
-+                                          sizeof(struct iphdr));
-+                              memcpy(tmp_rx_buf, (char *)&(odev->rx_ip_hdr),
-+                                     sizeof(struct iphdr));
-+
-+                              /* ETH_HLEN */
-+                              odev->rx_buf_size = sizeof(struct iphdr);
-+
-+                              /* Filip actually use .tot_len */
-+                              odev->rx_buf_missing =
-+                                  frame_len - sizeof(struct iphdr);
-+                              odev->rx_parse_state = WAIT_DATA;
-+                      }
-+                      break;
-+
-+              case WAIT_DATA:
-+                      temp_bytes = (count < odev->rx_buf_missing)
-+                                      ? count : odev->rx_buf_missing;
-+
-+                      /* Copy the rest of the bytes that are left in the
-+                       * buffer into the waiting sk_buf. */
-+                      /* Make room for temp_bytes after tail. */
-+                      tmp_rx_buf = skb_put(odev->skb_rx_buf, temp_bytes);
-+                      memcpy(tmp_rx_buf, ip_pkt + buffer_offset, temp_bytes);
-+
-+                      odev->rx_buf_missing -= temp_bytes;
-+                      count -= temp_bytes;
-+                      buffer_offset += temp_bytes;
-+                      odev->rx_buf_size += temp_bytes;
-+                      if (!odev->rx_buf_missing) {
-+                              /* Packet is complete. Inject into stack. */
-+                              /* We have IP packet here */
-+                              odev->skb_rx_buf->protocol = cpu_to_be16(ETH_P_IP);
-+                              skb_reset_mac_header(odev->skb_rx_buf);
-+
-+                              /* Ship it off to the kernel */
-+                              netif_rx(odev->skb_rx_buf);
-+                              /* No longer our buffer. */
-+                              odev->skb_rx_buf = NULL;
-+
-+                              /* update out statistics */
-+                              odev->net->stats.rx_packets++;
-+
-+                              odev->net->stats.rx_bytes += odev->rx_buf_size;
-+
-+                              odev->rx_buf_size = 0;
-+                              odev->rx_buf_missing = sizeof(struct iphdr);
-+                              odev->rx_parse_state = WAIT_IP;
-+                      }
-+                      break;
-+
-+              case WAIT_SYNC:
-+                      D1(" W_S");
-+                      count = 0;
-+                      break;
-+              default:
-+                      D1(" ");
-+                      count--;
-+                      break;
-+              }
-+      }
-+
-+      /* Recovery mechanism for WAIT_SYNC state. */
-+      if (is_eop) {
-+              if (odev->rx_parse_state == WAIT_SYNC) {
-+                      odev->rx_parse_state = WAIT_IP;
-+                      odev->rx_buf_size = 0;
-+                      odev->rx_buf_missing = sizeof(struct iphdr);
-+              }
-+      }
-+}
-+
-+static void fix_crc_bug(struct urb *urb, __le16 max_packet_size)
-+{
-+      static const u8 crc_check[4] = { 0xDE, 0xAD, 0xBE, 0xEF };
-+      u32 rest = urb->actual_length % le16_to_cpu(max_packet_size);
-+
-+      if (((rest == 5) || (rest == 6)) &&
-+          !memcmp(((u8 *)urb->transfer_buffer) + urb->actual_length - 4,
-+                  crc_check, 4)) {
-+              urb->actual_length -= 4;
-+      }
-+}
-+
-+/* Moving data from usb to kernel (in interrupt state) */
-+static void read_bulk_callback(struct urb *urb)
-+{
-+      struct hso_net *odev = urb->context;
-+      struct net_device *net;
-+      int result;
-+      int status = urb->status;
-+
-+      /* is al ok?  (Filip: Who's Al ?) */
-+      if (status) {
-+              handle_usb_error(status, __func__, odev->parent);
-+              return;
-+      }
-+
-+      /* Sanity check */
-+      if (!odev || !test_bit(HSO_NET_RUNNING, &odev->flags)) {
-+              D1("BULK IN callback but driver is not active!");
-+              return;
-+      }
-+      usb_mark_last_busy(urb->dev);
-+
-+      net = odev->net;
-+
-+      if (!netif_device_present(net)) {
-+              /* Somebody killed our network interface... */
-+              return;
-+      }
-+
-+      if (odev->parent->port_spec & HSO_INFO_CRC_BUG)
-+              fix_crc_bug(urb, odev->in_endp->wMaxPacketSize);
-+
-+      /* do we even have a packet? */
-+      if (urb->actual_length) {
-+              /* Handle the IP stream, add header and push it onto network
-+               * stack if the packet is complete. */
-+              spin_lock(&odev->net_lock);
-+              packetizeRx(odev, urb->transfer_buffer, urb->actual_length,
-+                          (urb->transfer_buffer_length >
-+                           urb->actual_length) ? 1 : 0);
-+              spin_unlock(&odev->net_lock);
-+      }
-+
-+      /* We are done with this URB, resubmit it. Prep the USB to wait for
-+       * another frame. Reuse same as received. */
-+      usb_fill_bulk_urb(urb,
-+                        odev->parent->usb,
-+                        usb_rcvbulkpipe(odev->parent->usb,
-+                                        odev->in_endp->
-+                                        bEndpointAddress & 0x7F),
-+                        urb->transfer_buffer, MUX_BULK_RX_BUF_SIZE,
-+                        read_bulk_callback, odev);
-+
-+      /* Give this to the USB subsystem so it can tell us when more data
-+       * arrives. */
-+      result = usb_submit_urb(urb, GFP_ATOMIC);
-+      if (result)
-+              dev_warn(&odev->parent->interface->dev,
-+                       "%s failed submit mux_bulk_rx_urb %d\n", __func__,
-+                       result);
-+}
-+
-+/* Serial driver functions */
-+
-+static void hso_init_termios(struct ktermios *termios)
-+{
-+      /*
-+       * The default requirements for this device are:
-+       */
-+      termios->c_iflag &=
-+              ~(IGNBRK        /* disable ignore break */
-+              | BRKINT        /* disable break causes interrupt */
-+              | PARMRK        /* disable mark parity errors */
-+              | ISTRIP        /* disable clear high bit of input characters */
-+              | INLCR         /* disable translate NL to CR */
-+              | IGNCR         /* disable ignore CR */
-+              | ICRNL         /* disable translate CR to NL */
-+              | IXON);        /* disable enable XON/XOFF flow control */
-+
-+      /* disable postprocess output characters */
-+      termios->c_oflag &= ~OPOST;
-+
-+      termios->c_lflag &=
-+              ~(ECHO          /* disable echo input characters */
-+              | ECHONL        /* disable echo new line */
-+              | ICANON        /* disable erase, kill, werase, and rprnt
-+                                 special characters */
-+              | ISIG          /* disable interrupt, quit, and suspend special
-+                                 characters */
-+              | IEXTEN);      /* disable non-POSIX special characters */
-+
-+      termios->c_cflag &=
-+              ~(CSIZE         /* no size */
-+              | PARENB        /* disable parity bit */
-+              | CBAUD         /* clear current baud rate */
-+              | CBAUDEX);     /* clear current buad rate */
-+
-+      termios->c_cflag |= CS8;        /* character size 8 bits */
-+
-+      /* baud rate 115200 */
-+      tty_termios_encode_baud_rate(termios, 115200, 115200);
-+}
-+
-+static void _hso_serial_set_termios(struct tty_struct *tty,
-+                                  struct ktermios *old)
-+{
-+      struct hso_serial *serial = tty->driver_data;
-+
-+      if (!serial) {
-+              printk(KERN_ERR "%s: no tty structures", __func__);
-+              return;
-+      }
-+
-+      D4("port %d", serial->minor);
-+
-+      /*
-+       *      Fix up unsupported bits
-+       */
-+      tty->termios.c_iflag &= ~IXON; /* disable enable XON/XOFF flow control */
-+
-+      tty->termios.c_cflag &=
-+              ~(CSIZE         /* no size */
-+              | PARENB        /* disable parity bit */
-+              | CBAUD         /* clear current baud rate */
-+              | CBAUDEX);     /* clear current buad rate */
-+
-+      tty->termios.c_cflag |= CS8;    /* character size 8 bits */
-+
-+      /* baud rate 115200 */
-+      tty_encode_baud_rate(tty, 115200, 115200);
-+}
-+
-+static void hso_resubmit_rx_bulk_urb(struct hso_serial *serial, struct urb *urb)
-+{
-+      int result;
-+      /* We are done with this URB, resubmit it. Prep the USB to wait for
-+       * another frame */
-+      usb_fill_bulk_urb(urb, serial->parent->usb,
-+                        usb_rcvbulkpipe(serial->parent->usb,
-+                                        serial->in_endp->
-+                                        bEndpointAddress & 0x7F),
-+                        urb->transfer_buffer, serial->rx_data_length,
-+                        hso_std_serial_read_bulk_callback, serial);
-+      /* Give this to the USB subsystem so it can tell us when more data
-+       * arrives. */
-+      result = usb_submit_urb(urb, GFP_ATOMIC);
-+      if (result) {
-+              dev_err(&urb->dev->dev, "%s failed submit serial rx_urb %d\n",
-+                      __func__, result);
-+      }
-+}
-+
-+
-+
-+
-+static void put_rxbuf_data_and_resubmit_bulk_urb(struct hso_serial *serial)
-+{
-+      int count;
-+      struct urb *curr_urb;
-+
-+      while (serial->rx_urb_filled[serial->curr_rx_urb_idx]) {
-+              curr_urb = serial->rx_urb[serial->curr_rx_urb_idx];
-+              count = put_rxbuf_data(curr_urb, serial);
-+              if (count == -1)
-+                      return;
-+              if (count == 0) {
-+                      serial->curr_rx_urb_idx++;
-+                      if (serial->curr_rx_urb_idx >= serial->num_rx_urbs)
-+                              serial->curr_rx_urb_idx = 0;
-+                      hso_resubmit_rx_bulk_urb(serial, curr_urb);
-+              }
-+      }
-+}
-+
-+static void put_rxbuf_data_and_resubmit_ctrl_urb(struct hso_serial *serial)
-+{
-+      int count = 0;
-+      struct urb *urb;
-+
-+      urb = serial->rx_urb[0];
-+      if (atomic_read(&serial->port.count) > 0) {
-+              count = put_rxbuf_data(urb, serial);
-+              if (count == -1)
-+                      return;
-+      }
-+      /* Re issue a read as long as we receive data. */
-+
-+      if (count == 0 && ((urb->actual_length != 0) ||
-+                         (serial->rx_state == RX_PENDING))) {
-+              serial->rx_state = RX_SENT;
-+              hso_mux_serial_read(serial);
-+      } else
-+              serial->rx_state = RX_IDLE;
-+}
-+
-+
-+/* read callback for Diag and CS port */
-+static void hso_std_serial_read_bulk_callback(struct urb *urb)
-+{
-+      struct hso_serial *serial = urb->context;
-+      int status = urb->status;
-+
-+      D4("\n--- Got serial_read_bulk callback %02x ---", status);
-+
-+      /* sanity check */
-+      if (!serial) {
-+              D1("serial == NULL");
-+              return;
-+      }
-+      if (status) {
-+              handle_usb_error(status, __func__, serial->parent);
-+              return;
-+      }
-+
-+      D1("Actual length = %d\n", urb->actual_length);
-+      DUMP1(urb->transfer_buffer, urb->actual_length);
-+
-+      /* Anyone listening? */
-+      if (atomic_read(&serial->port.count) == 0)
-+              return;
-+
-+      if (serial->parent->port_spec & HSO_INFO_CRC_BUG)
-+              fix_crc_bug(urb, serial->in_endp->wMaxPacketSize);
-+      /* Valid data, handle RX data */
-+      spin_lock(&serial->serial_lock);
-+      serial->rx_urb_filled[hso_urb_to_index(serial, urb)] = 1;
-+      put_rxbuf_data_and_resubmit_bulk_urb(serial);
-+      spin_unlock(&serial->serial_lock);
-+}
-+
-+/*
-+ * This needs to be a tasklet otherwise we will
-+ * end up recursively calling this function.
-+ */
-+static void hso_unthrottle_tasklet(struct hso_serial *serial)
-+{
-+      unsigned long flags;
-+
-+      spin_lock_irqsave(&serial->serial_lock, flags);
-+      if ((serial->parent->port_spec & HSO_INTF_MUX))
-+              put_rxbuf_data_and_resubmit_ctrl_urb(serial);
-+      else
-+              put_rxbuf_data_and_resubmit_bulk_urb(serial);
-+      spin_unlock_irqrestore(&serial->serial_lock, flags);
-+}
-+
-+static        void hso_unthrottle(struct tty_struct *tty)
-+{
-+      struct hso_serial *serial = tty->driver_data;
-+
-+      tasklet_hi_schedule(&serial->unthrottle_tasklet);
-+}
-+
-+/* open the requested serial port */
-+static int hso_serial_open(struct tty_struct *tty, struct file *filp)
-+{
-+      struct hso_serial *serial = get_serial_by_index(tty->index);
-+      int result;
-+
-+      /* sanity check */
-+      if (serial == NULL || serial->magic != HSO_SERIAL_MAGIC) {
-+              WARN_ON(1);
-+              tty->driver_data = NULL;
-+              D1("Failed to open port");
-+              return -ENODEV;
-+      }
-+
-+      mutex_lock(&serial->parent->mutex);
-+      result = usb_autopm_get_interface(serial->parent->interface);
-+      if (result < 0)
-+              goto err_out;
-+
-+      D1("Opening %d", serial->minor);
-+
-+      /* setup */
-+      tty->driver_data = serial;
-+      tty_port_tty_set(&serial->port, tty);
-+
-+      /* check for port already opened, if not set the termios */
-+      if (atomic_inc_return(&serial->port.count) == 1) {
-+              serial->rx_state = RX_IDLE;
-+              /* Force default termio settings */
-+              _hso_serial_set_termios(tty, NULL);
-+              tasklet_init(&serial->unthrottle_tasklet,
-+                           (void (*)(unsigned long))hso_unthrottle_tasklet,
-+                           (unsigned long)serial);
-+              result = hso_start_serial_device(serial->parent, GFP_KERNEL);
-+              if (result) {
-+                      hso_stop_serial_device(serial->parent);
-+                      atomic_dec(&serial->port.count);
-+              } else {
-+                      kref_get(&serial->parent->ref);
-+              }
-+      } else {
-+              D1("Port was already open");
-+      }
-+
-+      usb_autopm_put_interface(serial->parent->interface);
-+
-+      /* done */
-+      if (result)
-+              hso_serial_tiocmset(tty, TIOCM_RTS | TIOCM_DTR, 0);
-+err_out:
-+      mutex_unlock(&serial->parent->mutex);
-+      return result;
-+}
-+
-+/* close the requested serial port */
-+static void hso_serial_close(struct tty_struct *tty, struct file *filp)
-+{
-+      struct hso_serial *serial = tty->driver_data;
-+      u8 usb_gone;
-+
-+      D1("Closing serial port");
-+
-+      /* Open failed, no close cleanup required */
-+      if (serial == NULL)
-+              return;
-+
-+      mutex_lock(&serial->parent->mutex);
-+      usb_gone = serial->parent->usb_gone;
-+
-+      if (!usb_gone)
-+              usb_autopm_get_interface(serial->parent->interface);
-+
-+      /* reset the rts and dtr */
-+      /* do the actual close */
-+      atomic_dec(&serial->port.count);
-+
-+      if (atomic_read(&serial->port.count) <= 0) {
-+              atomic_set(&serial->port.count, 0);
-+              tty_port_tty_set(&serial->port, NULL);
-+              if (!usb_gone)
-+                      hso_stop_serial_device(serial->parent);
-+              tasklet_kill(&serial->unthrottle_tasklet);
-+      }
-+
-+      if (!usb_gone)
-+              usb_autopm_put_interface(serial->parent->interface);
-+
-+      mutex_unlock(&serial->parent->mutex);
-+}
-+
-+/* close the requested serial port */
-+static int hso_serial_write(struct tty_struct *tty, const unsigned char *buf,
-+                          int count)
-+{
-+      struct hso_serial *serial = tty->driver_data;
-+      int space, tx_bytes;
-+      unsigned long flags;
-+
-+      /* sanity check */
-+      if (serial == NULL) {
-+              printk(KERN_ERR "%s: serial is NULL\n", __func__);
-+              return -ENODEV;
-+      }
-+
-+      spin_lock_irqsave(&serial->serial_lock, flags);
-+
-+      space = serial->tx_data_length - serial->tx_buffer_count;
-+      tx_bytes = (count < space) ? count : space;
-+
-+      if (!tx_bytes)
-+              goto out;
-+
-+      memcpy(serial->tx_buffer + serial->tx_buffer_count, buf, tx_bytes);
-+      serial->tx_buffer_count += tx_bytes;
-+
-+out:
-+      spin_unlock_irqrestore(&serial->serial_lock, flags);
-+
-+      hso_kick_transmit(serial);
-+      /* done */
-+      return tx_bytes;
-+}
-+
-+/* how much room is there for writing */
-+static int hso_serial_write_room(struct tty_struct *tty)
-+{
-+      struct hso_serial *serial = tty->driver_data;
-+      int room;
-+      unsigned long flags;
-+
-+      spin_lock_irqsave(&serial->serial_lock, flags);
-+      room = serial->tx_data_length - serial->tx_buffer_count;
-+      spin_unlock_irqrestore(&serial->serial_lock, flags);
-+
-+      /* return free room */
-+      return room;
-+}
-+
-+static void hso_serial_cleanup(struct tty_struct *tty)
-+{
-+      struct hso_serial *serial = tty->driver_data;
-+
-+      if (!serial)
-+              return;
-+
-+      kref_put(&serial->parent->ref, hso_serial_ref_free);
-+}
-+
-+/* setup the term */
-+static void hso_serial_set_termios(struct tty_struct *tty, struct ktermios *old)
-+{
-+      struct hso_serial *serial = tty->driver_data;
-+      unsigned long flags;
-+
-+      if (old)
-+              D5("Termios called with: cflags new[%d] - old[%d]",
-+                 tty->termios.c_cflag, old->c_cflag);
-+
-+      /* the actual setup */
-+      spin_lock_irqsave(&serial->serial_lock, flags);
-+      if (atomic_read(&serial->port.count))
-+              _hso_serial_set_termios(tty, old);
-+      else
-+              tty->termios = *old;
-+      spin_unlock_irqrestore(&serial->serial_lock, flags);
-+
-+      /* done */
-+}
-+
-+/* how many characters in the buffer */
-+static int hso_serial_chars_in_buffer(struct tty_struct *tty)
-+{
-+      struct hso_serial *serial = tty->driver_data;
-+      int chars;
-+      unsigned long flags;
-+
-+      /* sanity check */
-+      if (serial == NULL)
-+              return 0;
-+
-+      spin_lock_irqsave(&serial->serial_lock, flags);
-+      chars = serial->tx_buffer_count;
-+      spin_unlock_irqrestore(&serial->serial_lock, flags);
-+
-+      return chars;
-+}
-+static int tiocmget_submit_urb(struct hso_serial *serial,
-+                             struct hso_tiocmget *tiocmget,
-+                             struct usb_device *usb)
-+{
-+      int result;
-+
-+      if (serial->parent->usb_gone)
-+              return -ENODEV;
-+      usb_fill_int_urb(tiocmget->urb, usb,
-+                       usb_rcvintpipe(usb,
-+                                      tiocmget->endp->
-+                                      bEndpointAddress & 0x7F),
-+                       &tiocmget->serial_state_notification,
-+                       sizeof(struct hso_serial_state_notification),
-+                       tiocmget_intr_callback, serial,
-+                       tiocmget->endp->bInterval);
-+      result = usb_submit_urb(tiocmget->urb, GFP_ATOMIC);
-+      if (result) {
-+              dev_warn(&usb->dev, "%s usb_submit_urb failed %d\n", __func__,
-+                       result);
-+      }
-+      return result;
-+
-+}
-+
-+static void tiocmget_intr_callback(struct urb *urb)
-+{
-+      struct hso_serial *serial = urb->context;
-+      struct hso_tiocmget *tiocmget;
-+      int status = urb->status;
-+      u16 UART_state_bitmap, prev_UART_state_bitmap;
-+      struct uart_icount *icount;
-+      struct hso_serial_state_notification *serial_state_notification;
-+      struct usb_device *usb;
-+      struct usb_interface *interface;
-+      int if_num;
-+
-+      /* Sanity checks */
-+      if (!serial)
-+              return;
-+      if (status) {
-+              handle_usb_error(status, __func__, serial->parent);
-+              return;
-+      }
-+
-+      /* tiocmget is only supported on HSO_PORT_MODEM */
-+      tiocmget = serial->tiocmget;
-+      if (!tiocmget)
-+              return;
-+      BUG_ON((serial->parent->port_spec & HSO_PORT_MASK) != HSO_PORT_MODEM);
-+
-+      usb = serial->parent->usb;
-+      interface = serial->parent->interface;
-+
-+      if_num = interface->cur_altsetting->desc.bInterfaceNumber;
-+
-+      /* wIndex should be the USB interface number of the port to which the
-+       * notification applies, which should always be the Modem port.
-+       */
-+      serial_state_notification = &tiocmget->serial_state_notification;
-+      if (serial_state_notification->bmRequestType != BM_REQUEST_TYPE ||
-+          serial_state_notification->bNotification != B_NOTIFICATION ||
-+          le16_to_cpu(serial_state_notification->wValue) != W_VALUE ||
-+          le16_to_cpu(serial_state_notification->wIndex) != if_num ||
-+          le16_to_cpu(serial_state_notification->wLength) != W_LENGTH) {
-+              dev_warn(&usb->dev,
-+                       "hso received invalid serial state notification\n");
-+              DUMP(serial_state_notification,
-+                   sizeof(struct hso_serial_state_notification));
-+      } else {
-+
-+              UART_state_bitmap = le16_to_cpu(serial_state_notification->
-+                                              UART_state_bitmap);
-+              prev_UART_state_bitmap = tiocmget->prev_UART_state_bitmap;
-+              icount = &tiocmget->icount;
-+              spin_lock(&serial->serial_lock);
-+              if ((UART_state_bitmap & B_OVERRUN) !=
-+                 (prev_UART_state_bitmap & B_OVERRUN))
-+                      icount->parity++;
-+              if ((UART_state_bitmap & B_PARITY) !=
-+                 (prev_UART_state_bitmap & B_PARITY))
-+                      icount->parity++;
-+              if ((UART_state_bitmap & B_FRAMING) !=
-+                 (prev_UART_state_bitmap & B_FRAMING))
-+                      icount->frame++;
-+              if ((UART_state_bitmap & B_RING_SIGNAL) &&
-+                 !(prev_UART_state_bitmap & B_RING_SIGNAL))
-+                      icount->rng++;
-+              if ((UART_state_bitmap & B_BREAK) !=
-+                 (prev_UART_state_bitmap & B_BREAK))
-+                      icount->brk++;
-+              if ((UART_state_bitmap & B_TX_CARRIER) !=
-+                 (prev_UART_state_bitmap & B_TX_CARRIER))
-+                      icount->dsr++;
-+              if ((UART_state_bitmap & B_RX_CARRIER) !=
-+                 (prev_UART_state_bitmap & B_RX_CARRIER))
-+                      icount->dcd++;
-+              tiocmget->prev_UART_state_bitmap = UART_state_bitmap;
-+              spin_unlock(&serial->serial_lock);
-+              tiocmget->intr_completed = 1;
-+              wake_up_interruptible(&tiocmget->waitq);
-+      }
-+      memset(serial_state_notification, 0,
-+             sizeof(struct hso_serial_state_notification));
-+      tiocmget_submit_urb(serial,
-+                          tiocmget,
-+                          serial->parent->usb);
-+}
-+
-+/*
-+ * next few functions largely stolen from drivers/serial/serial_core.c
-+ */
-+/* Wait for any of the 4 modem inputs (DCD,RI,DSR,CTS) to change
-+ * - mask passed in arg for lines of interest
-+ *   (use |'ed TIOCM_RNG/DSR/CD/CTS for masking)
-+ * Caller should use TIOCGICOUNT to see which one it was
-+ */
-+static int
-+hso_wait_modem_status(struct hso_serial *serial, unsigned long arg)
-+{
-+      DECLARE_WAITQUEUE(wait, current);
-+      struct uart_icount cprev, cnow;
-+      struct hso_tiocmget  *tiocmget;
-+      int ret;
-+
-+      tiocmget = serial->tiocmget;
-+      if (!tiocmget)
-+              return -ENOENT;
-+      /*
-+       * note the counters on entry
-+       */
-+      spin_lock_irq(&serial->serial_lock);
-+      memcpy(&cprev, &tiocmget->icount, sizeof(struct uart_icount));
-+      spin_unlock_irq(&serial->serial_lock);
-+      add_wait_queue(&tiocmget->waitq, &wait);
-+      for (;;) {
-+              spin_lock_irq(&serial->serial_lock);
-+              memcpy(&cnow, &tiocmget->icount, sizeof(struct uart_icount));
-+              spin_unlock_irq(&serial->serial_lock);
-+              set_current_state(TASK_INTERRUPTIBLE);
-+              if (((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) ||
-+                  ((arg & TIOCM_DSR) && (cnow.dsr != cprev.dsr)) ||
-+                  ((arg & TIOCM_CD)  && (cnow.dcd != cprev.dcd))) {
-+                      ret = 0;
-+                      break;
-+              }
-+              schedule();
-+              /* see if a signal did it */
-+              if (signal_pending(current)) {
-+                      ret = -ERESTARTSYS;
-+                      break;
-+              }
-+              cprev = cnow;
-+      }
-+      __set_current_state(TASK_RUNNING);
-+      remove_wait_queue(&tiocmget->waitq, &wait);
-+
-+      return ret;
-+}
-+
-+/*
-+ * Get counter of input serial line interrupts (DCD,RI,DSR,CTS)
-+ * Return: write counters to the user passed counter struct
-+ * NB: both 1->0 and 0->1 transitions are counted except for
-+ *     RI where only 0->1 is counted.
-+ */
-+static int hso_get_count(struct tty_struct *tty,
-+                struct serial_icounter_struct *icount)
-+{
-+      struct uart_icount cnow;
-+      struct hso_serial *serial = tty->driver_data;
-+      struct hso_tiocmget  *tiocmget = serial->tiocmget;
-+
-+      memset(icount, 0, sizeof(struct serial_icounter_struct));
-+
-+      if (!tiocmget)
-+               return -ENOENT;
-+      spin_lock_irq(&serial->serial_lock);
-+      memcpy(&cnow, &tiocmget->icount, sizeof(struct uart_icount));
-+      spin_unlock_irq(&serial->serial_lock);
-+
-+      icount->cts         = cnow.cts;
-+      icount->dsr         = cnow.dsr;
-+      icount->rng         = cnow.rng;
-+      icount->dcd         = cnow.dcd;
-+      icount->rx          = cnow.rx;
-+      icount->tx          = cnow.tx;
-+      icount->frame       = cnow.frame;
-+      icount->overrun     = cnow.overrun;
-+      icount->parity      = cnow.parity;
-+      icount->brk         = cnow.brk;
-+      icount->buf_overrun = cnow.buf_overrun;
-+
-+      return 0;
-+}
-+
-+
-+static int hso_serial_tiocmget(struct tty_struct *tty)
-+{
-+      int retval;
-+      struct hso_serial *serial = tty->driver_data;
-+      struct hso_tiocmget  *tiocmget;
-+      u16 UART_state_bitmap;
-+
-+      /* sanity check */
-+      if (!serial) {
-+              D1("no tty structures");
-+              return -EINVAL;
-+      }
-+      spin_lock_irq(&serial->serial_lock);
-+      retval = ((serial->rts_state) ? TIOCM_RTS : 0) |
-+          ((serial->dtr_state) ? TIOCM_DTR : 0);
-+      tiocmget = serial->tiocmget;
-+      if (tiocmget) {
-+
-+              UART_state_bitmap = le16_to_cpu(
-+                      tiocmget->prev_UART_state_bitmap);
-+              if (UART_state_bitmap & B_RING_SIGNAL)
-+                      retval |=  TIOCM_RNG;
-+              if (UART_state_bitmap & B_RX_CARRIER)
-+                      retval |=  TIOCM_CD;
-+              if (UART_state_bitmap & B_TX_CARRIER)
-+                      retval |=  TIOCM_DSR;
-+      }
-+      spin_unlock_irq(&serial->serial_lock);
-+      return retval;
-+}
-+
-+static int hso_serial_tiocmset(struct tty_struct *tty,
-+                             unsigned int set, unsigned int clear)
-+{
-+      int val = 0;
-+      unsigned long flags;
-+      int if_num;
-+      struct hso_serial *serial = tty->driver_data;
-+      struct usb_interface *interface;
-+
-+      /* sanity check */
-+      if (!serial) {
-+              D1("no tty structures");
-+              return -EINVAL;
-+      }
-+
-+      if ((serial->parent->port_spec & HSO_PORT_MASK) != HSO_PORT_MODEM)
-+              return -EINVAL;
-+
-+      interface = serial->parent->interface;
-+      if_num = interface->cur_altsetting->desc.bInterfaceNumber;
-+
-+      spin_lock_irqsave(&serial->serial_lock, flags);
-+      if (set & TIOCM_RTS)
-+              serial->rts_state = 1;
-+      if (set & TIOCM_DTR)
-+              serial->dtr_state = 1;
-+
-+      if (clear & TIOCM_RTS)
-+              serial->rts_state = 0;
-+      if (clear & TIOCM_DTR)
-+              serial->dtr_state = 0;
-+
-+      if (serial->dtr_state)
-+              val |= 0x01;
-+      if (serial->rts_state)
-+              val |= 0x02;
-+
-+      spin_unlock_irqrestore(&serial->serial_lock, flags);
-+
-+      return usb_control_msg(serial->parent->usb,
-+                             usb_rcvctrlpipe(serial->parent->usb, 0), 0x22,
-+                             0x21, val, if_num, NULL, 0,
-+                             USB_CTRL_SET_TIMEOUT);
-+}
-+
-+static int hso_serial_ioctl(struct tty_struct *tty,
-+                          unsigned int cmd, unsigned long arg)
-+{
-+      struct hso_serial *serial = tty->driver_data;
-+      int ret = 0;
-+      D4("IOCTL cmd: %d, arg: %ld", cmd, arg);
-+
-+      if (!serial)
-+              return -ENODEV;
-+      switch (cmd) {
-+      case TIOCMIWAIT:
-+              ret = hso_wait_modem_status(serial, arg);
-+              break;
-+      default:
-+              ret = -ENOIOCTLCMD;
-+              break;
-+      }
-+      return ret;
-+}
-+
-+
-+/* starts a transmit */
-+static void hso_kick_transmit(struct hso_serial *serial)
-+{
-+      u8 *temp;
-+      unsigned long flags;
-+      int res;
-+
-+      spin_lock_irqsave(&serial->serial_lock, flags);
-+      if (!serial->tx_buffer_count)
-+              goto out;
-+
-+      if (serial->tx_urb_used)
-+              goto out;
-+
-+      /* Wakeup USB interface if necessary */
-+      if (hso_get_activity(serial->parent) == -EAGAIN)
-+              goto out;
-+
-+      /* Switch pointers around to avoid memcpy */
-+      temp = serial->tx_buffer;
-+      serial->tx_buffer = serial->tx_data;
-+      serial->tx_data = temp;
-+      serial->tx_data_count = serial->tx_buffer_count;
-+      serial->tx_buffer_count = 0;
-+
-+      /* If temp is set, it means we switched buffers */
-+      if (temp && serial->write_data) {
-+              res = serial->write_data(serial);
-+              if (res >= 0)
-+                      serial->tx_urb_used = 1;
-+      }
-+out:
-+      spin_unlock_irqrestore(&serial->serial_lock, flags);
-+}
-+
-+/* make a request (for reading and writing data to muxed serial port) */
-+static int mux_device_request(struct hso_serial *serial, u8 type, u16 port,
-+                            struct urb *ctrl_urb,
-+                            struct usb_ctrlrequest *ctrl_req,
-+                            u8 *ctrl_urb_data, u32 size)
-+{
-+      int result;
-+      int pipe;
-+
-+      /* Sanity check */
-+      if (!serial || !ctrl_urb || !ctrl_req) {
-+              printk(KERN_ERR "%s: Wrong arguments\n", __func__);
-+              return -EINVAL;
-+      }
-+
-+      /* initialize */
-+      ctrl_req->wValue = 0;
-+      ctrl_req->wIndex = cpu_to_le16(hso_port_to_mux(port));
-+      ctrl_req->wLength = cpu_to_le16(size);
-+
-+      if (type == USB_CDC_GET_ENCAPSULATED_RESPONSE) {
-+              /* Reading command */
-+              ctrl_req->bRequestType = USB_DIR_IN |
-+                                       USB_TYPE_OPTION_VENDOR |
-+                                       USB_RECIP_INTERFACE;
-+              ctrl_req->bRequest = USB_CDC_GET_ENCAPSULATED_RESPONSE;
-+              pipe = usb_rcvctrlpipe(serial->parent->usb, 0);
-+      } else {
-+              /* Writing command */
-+              ctrl_req->bRequestType = USB_DIR_OUT |
-+                                       USB_TYPE_OPTION_VENDOR |
-+                                       USB_RECIP_INTERFACE;
-+              ctrl_req->bRequest = USB_CDC_SEND_ENCAPSULATED_COMMAND;
-+              pipe = usb_sndctrlpipe(serial->parent->usb, 0);
-+      }
-+      /* syslog */
-+      D2("%s command (%02x) len: %d, port: %d",
-+         type == USB_CDC_GET_ENCAPSULATED_RESPONSE ? "Read" : "Write",
-+         ctrl_req->bRequestType, ctrl_req->wLength, port);
-+
-+      /* Load ctrl urb */
-+      ctrl_urb->transfer_flags = 0;
-+      usb_fill_control_urb(ctrl_urb,
-+                           serial->parent->usb,
-+                           pipe,
-+                           (u8 *) ctrl_req,
-+                           ctrl_urb_data, size, ctrl_callback, serial);
-+      /* Send it on merry way */
-+      result = usb_submit_urb(ctrl_urb, GFP_ATOMIC);
-+      if (result) {
-+              dev_err(&ctrl_urb->dev->dev,
-+                      "%s failed submit ctrl_urb %d type %d\n", __func__,
-+                      result, type);
-+              return result;
-+      }
-+
-+      /* done */
-+      return size;
-+}
-+
-+/* called by intr_callback when read occurs */
-+static int hso_mux_serial_read(struct hso_serial *serial)
-+{
-+      if (!serial)
-+              return -EINVAL;
-+
-+      /* clean data */
-+      memset(serial->rx_data[0], 0, CTRL_URB_RX_SIZE);
-+      /* make the request */
-+
-+      if (serial->num_rx_urbs != 1) {
-+              dev_err(&serial->parent->interface->dev,
-+                      "ERROR: mux'd reads with multiple buffers "
-+                      "not possible\n");
-+              return 0;
-+      }
-+      return mux_device_request(serial,
-+                                USB_CDC_GET_ENCAPSULATED_RESPONSE,
-+                                serial->parent->port_spec & HSO_PORT_MASK,
-+                                serial->rx_urb[0],
-+                                &serial->ctrl_req_rx,
-+                                serial->rx_data[0], serial->rx_data_length);
-+}
-+
-+/* used for muxed serial port callback (muxed serial read) */
-+static void intr_callback(struct urb *urb)
-+{
-+      struct hso_shared_int *shared_int = urb->context;
-+      struct hso_serial *serial;
-+      unsigned char *port_req;
-+      int status = urb->status;
-+      int i;
-+
-+      usb_mark_last_busy(urb->dev);
-+
-+      /* sanity check */
-+      if (!shared_int)
-+              return;
-+
-+      /* status check */
-+      if (status) {
-+              handle_usb_error(status, __func__, NULL);
-+              return;
-+      }
-+      D4("\n--- Got intr callback 0x%02X ---", status);
-+
-+      /* what request? */
-+      port_req = urb->transfer_buffer;
-+      D4(" port_req = 0x%.2X\n", *port_req);
-+      /* loop over all muxed ports to find the one sending this */
-+      for (i = 0; i < 8; i++) {
-+              /* max 8 channels on MUX */
-+              if (*port_req & (1 << i)) {
-+                      serial = get_serial_by_shared_int_and_type(shared_int,
-+                                                                 (1 << i));
-+                      if (serial != NULL) {
-+                              D1("Pending read interrupt on port %d\n", i);
-+                              spin_lock(&serial->serial_lock);
-+                              if (serial->rx_state == RX_IDLE &&
-+                                      atomic_read(&serial->port.count) > 0) {
-+                                      /* Setup and send a ctrl req read on
-+                                       * port i */
-+                                      if (!serial->rx_urb_filled[0]) {
-+                                              serial->rx_state = RX_SENT;
-+                                              hso_mux_serial_read(serial);
-+                                      } else
-+                                              serial->rx_state = RX_PENDING;
-+                              } else {
-+                                      D1("Already a read pending on "
-+                                         "port %d or port not open\n", i);
-+                              }
-+                              spin_unlock(&serial->serial_lock);
-+                      }
-+              }
-+      }
-+      /* Resubmit interrupt urb */
-+      hso_mux_submit_intr_urb(shared_int, urb->dev, GFP_ATOMIC);
-+}
-+
-+/* called for writing to muxed serial port */
-+static int hso_mux_serial_write_data(struct hso_serial *serial)
-+{
-+      if (NULL == serial)
-+              return -EINVAL;
-+
-+      return mux_device_request(serial,
-+                                USB_CDC_SEND_ENCAPSULATED_COMMAND,
-+                                serial->parent->port_spec & HSO_PORT_MASK,
-+                                serial->tx_urb,
-+                                &serial->ctrl_req_tx,
-+                                serial->tx_data, serial->tx_data_count);
-+}
-+
-+/* write callback for Diag and CS port */
-+static void hso_std_serial_write_bulk_callback(struct urb *urb)
-+{
-+      struct hso_serial *serial = urb->context;
-+      int status = urb->status;
-+
-+      /* sanity check */
-+      if (!serial) {
-+              D1("serial == NULL");
-+              return;
-+      }
-+
-+      spin_lock(&serial->serial_lock);
-+      serial->tx_urb_used = 0;
-+      spin_unlock(&serial->serial_lock);
-+      if (status) {
-+              handle_usb_error(status, __func__, serial->parent);
-+              return;
-+      }
-+      hso_put_activity(serial->parent);
-+      tty_port_tty_wakeup(&serial->port);
-+      hso_kick_transmit(serial);
-+
-+      D1(" ");
-+}
-+
-+/* called for writing diag or CS serial port */
-+static int hso_std_serial_write_data(struct hso_serial *serial)
-+{
-+      int count = serial->tx_data_count;
-+      int result;
-+
-+      usb_fill_bulk_urb(serial->tx_urb,
-+                        serial->parent->usb,
-+                        usb_sndbulkpipe(serial->parent->usb,
-+                                        serial->out_endp->
-+                                        bEndpointAddress & 0x7F),
-+                        serial->tx_data, serial->tx_data_count,
-+                        hso_std_serial_write_bulk_callback, serial);
-+
-+      result = usb_submit_urb(serial->tx_urb, GFP_ATOMIC);
-+      if (result) {
-+              dev_warn(&serial->parent->usb->dev,
-+                       "Failed to submit urb - res %d\n", result);
-+              return result;
-+      }
-+
-+      return count;
-+}
-+
-+/* callback after read or write on muxed serial port */
-+static void ctrl_callback(struct urb *urb)
-+{
-+      struct hso_serial *serial = urb->context;
-+      struct usb_ctrlrequest *req;
-+      int status = urb->status;
-+
-+      /* sanity check */
-+      if (!serial)
-+              return;
-+
-+      spin_lock(&serial->serial_lock);
-+      serial->tx_urb_used = 0;
-+      spin_unlock(&serial->serial_lock);
-+      if (status) {
-+              handle_usb_error(status, __func__, serial->parent);
-+              return;
-+      }
-+
-+      /* what request? */
-+      req = (struct usb_ctrlrequest *)(urb->setup_packet);
-+      D4("\n--- Got muxed ctrl callback 0x%02X ---", status);
-+      D4("Actual length of urb = %d\n", urb->actual_length);
-+      DUMP1(urb->transfer_buffer, urb->actual_length);
-+
-+      if (req->bRequestType ==
-+          (USB_DIR_IN | USB_TYPE_OPTION_VENDOR | USB_RECIP_INTERFACE)) {
-+              /* response to a read command */
-+              serial->rx_urb_filled[0] = 1;
-+              spin_lock(&serial->serial_lock);
-+              put_rxbuf_data_and_resubmit_ctrl_urb(serial);
-+              spin_unlock(&serial->serial_lock);
-+      } else {
-+              hso_put_activity(serial->parent);
-+              tty_port_tty_wakeup(&serial->port);
-+              /* response to a write command */
-+              hso_kick_transmit(serial);
-+      }
-+}
-+
-+/* handle RX data for serial port */
-+static int put_rxbuf_data(struct urb *urb, struct hso_serial *serial)
-+{
-+      struct tty_struct *tty;
-+      int count;
-+
-+      /* Sanity check */
-+      if (urb == NULL || serial == NULL) {
-+              D1("serial = NULL");
-+              return -2;
-+      }
-+
-+      tty = tty_port_tty_get(&serial->port);
-+
-+      if (tty && test_bit(TTY_THROTTLED, &tty->flags)) {
-+              tty_kref_put(tty);
-+              return -1;
-+      }
-+
-+      /* Push data to tty */
-+      D1("data to push to tty");
-+      count = tty_buffer_request_room(&serial->port, urb->actual_length);
-+      if (count >= urb->actual_length) {
-+              tty_insert_flip_string(&serial->port, urb->transfer_buffer,
-+                                     urb->actual_length);
-+              tty_flip_buffer_push(&serial->port);
-+      } else {
-+              dev_warn(&serial->parent->usb->dev,
-+                       "dropping data, %d bytes lost\n", urb->actual_length);
-+      }
-+
-+      tty_kref_put(tty);
-+
-+      serial->rx_urb_filled[hso_urb_to_index(serial, urb)] = 0;
-+
-+      return 0;
-+}
-+
-+
-+/* Base driver functions */
-+
-+static void hso_log_port(struct hso_device *hso_dev)
-+{
-+      char *port_type;
-+      char port_dev[20];
-+
-+      switch (hso_dev->port_spec & HSO_PORT_MASK) {
-+      case HSO_PORT_CONTROL:
-+              port_type = "Control";
-+              break;
-+      case HSO_PORT_APP:
-+              port_type = "Application";
-+              break;
-+      case HSO_PORT_GPS:
-+              port_type = "GPS";
-+              break;
-+      case HSO_PORT_GPS_CONTROL:
-+              port_type = "GPS control";
-+              break;
-+      case HSO_PORT_APP2:
-+              port_type = "Application2";
-+              break;
-+      case HSO_PORT_PCSC:
-+              port_type = "PCSC";
-+              break;
-+      case HSO_PORT_DIAG:
-+              port_type = "Diagnostic";
-+              break;
-+      case HSO_PORT_DIAG2:
-+              port_type = "Diagnostic2";
-+              break;
-+      case HSO_PORT_MODEM:
-+              port_type = "Modem";
-+              break;
-+      case HSO_PORT_NETWORK:
-+              port_type = "Network";
-+              break;
-+      default:
-+              port_type = "Unknown";
-+              break;
-+      }
-+      if ((hso_dev->port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK) {
-+              sprintf(port_dev, "%s", dev2net(hso_dev)->net->name);
-+      } else
-+              sprintf(port_dev, "/dev/%s%d", tty_filename,
-+                      dev2ser(hso_dev)->minor);
-+
-+      dev_dbg(&hso_dev->interface->dev, "HSO: Found %s port %s\n",
-+              port_type, port_dev);
-+}
-+
-+static int hso_start_net_device(struct hso_device *hso_dev)
-+{
-+      int i, result = 0;
-+      struct hso_net *hso_net = dev2net(hso_dev);
-+
-+      if (!hso_net)
-+              return -ENODEV;
-+
-+      /* send URBs for all read buffers */
-+      for (i = 0; i < MUX_BULK_RX_BUF_COUNT; i++) {
-+
-+              /* Prep a receive URB */
-+              usb_fill_bulk_urb(hso_net->mux_bulk_rx_urb_pool[i],
-+                                hso_dev->usb,
-+                                usb_rcvbulkpipe(hso_dev->usb,
-+                                                hso_net->in_endp->
-+                                                bEndpointAddress & 0x7F),
-+                                hso_net->mux_bulk_rx_buf_pool[i],
-+                                MUX_BULK_RX_BUF_SIZE, read_bulk_callback,
-+                                hso_net);
-+
-+              /* Put it out there so the device can send us stuff */
-+              result = usb_submit_urb(hso_net->mux_bulk_rx_urb_pool[i],
-+                                      GFP_NOIO);
-+              if (result)
-+                      dev_warn(&hso_dev->usb->dev,
-+                              "%s failed mux_bulk_rx_urb[%d] %d\n", __func__,
-+                              i, result);
-+      }
-+
-+      return result;
-+}
-+
-+static int hso_stop_net_device(struct hso_device *hso_dev)
-+{
-+      int i;
-+      struct hso_net *hso_net = dev2net(hso_dev);
-+
-+      if (!hso_net)
-+              return -ENODEV;
-+
-+      for (i = 0; i < MUX_BULK_RX_BUF_COUNT; i++) {
-+              if (hso_net->mux_bulk_rx_urb_pool[i])
-+                      usb_kill_urb(hso_net->mux_bulk_rx_urb_pool[i]);
-+
-+      }
-+      if (hso_net->mux_bulk_tx_urb)
-+              usb_kill_urb(hso_net->mux_bulk_tx_urb);
-+
-+      return 0;
-+}
-+
-+static int hso_start_serial_device(struct hso_device *hso_dev, gfp_t flags)
-+{
-+      int i, result = 0;
-+      struct hso_serial *serial = dev2ser(hso_dev);
-+
-+      if (!serial)
-+              return -ENODEV;
-+
-+      /* If it is not the MUX port fill in and submit a bulk urb (already
-+       * allocated in hso_serial_start) */
-+      if (!(serial->parent->port_spec & HSO_INTF_MUX)) {
-+              for (i = 0; i < serial->num_rx_urbs; i++) {
-+                      usb_fill_bulk_urb(serial->rx_urb[i],
-+                                        serial->parent->usb,
-+                                        usb_rcvbulkpipe(serial->parent->usb,
-+                                                        serial->in_endp->
-+                                                        bEndpointAddress &
-+                                                        0x7F),
-+                                        serial->rx_data[i],
-+                                        serial->rx_data_length,
-+                                        hso_std_serial_read_bulk_callback,
-+                                        serial);
-+                      result = usb_submit_urb(serial->rx_urb[i], flags);
-+                      if (result) {
-+                              dev_warn(&serial->parent->usb->dev,
-+                                       "Failed to submit urb - res %d\n",
-+                                       result);
-+                              break;
-+                      }
-+              }
-+      } else {
-+              mutex_lock(&serial->shared_int->shared_int_lock);
-+              if (!serial->shared_int->use_count) {
-+                      result =
-+                          hso_mux_submit_intr_urb(serial->shared_int,
-+                                                  hso_dev->usb, flags);
-+              }
-+              serial->shared_int->use_count++;
-+              mutex_unlock(&serial->shared_int->shared_int_lock);
-+      }
-+      if (serial->tiocmget)
-+              tiocmget_submit_urb(serial,
-+                                  serial->tiocmget,
-+                                  serial->parent->usb);
-+      return result;
-+}
-+
-+static int hso_stop_serial_device(struct hso_device *hso_dev)
-+{
-+      int i;
-+      struct hso_serial *serial = dev2ser(hso_dev);
-+      struct hso_tiocmget  *tiocmget;
-+
-+      if (!serial)
-+              return -ENODEV;
-+
-+      for (i = 0; i < serial->num_rx_urbs; i++) {
-+              if (serial->rx_urb[i]) {
-+                      usb_kill_urb(serial->rx_urb[i]);
-+                      serial->rx_urb_filled[i] = 0;
-+              }
-+      }
-+      serial->curr_rx_urb_idx = 0;
-+
-+      if (serial->tx_urb)
-+              usb_kill_urb(serial->tx_urb);
-+
-+      if (serial->shared_int) {
-+              mutex_lock(&serial->shared_int->shared_int_lock);
-+              if (serial->shared_int->use_count &&
-+                  (--serial->shared_int->use_count == 0)) {
-+                      struct urb *urb;
-+
-+                      urb = serial->shared_int->shared_intr_urb;
-+                      if (urb)
-+                              usb_kill_urb(urb);
-+              }
-+              mutex_unlock(&serial->shared_int->shared_int_lock);
-+      }
-+      tiocmget = serial->tiocmget;
-+      if (tiocmget) {
-+              wake_up_interruptible(&tiocmget->waitq);
-+              usb_kill_urb(tiocmget->urb);
-+      }
-+
-+      return 0;
-+}
-+
-+static void hso_serial_tty_unregister(struct hso_serial *serial)
-+{
-+      tty_unregister_device(tty_drv, serial->minor);
-+}
-+
-+static void hso_serial_common_free(struct hso_serial *serial)
-+{
-+      int i;
-+
-+      for (i = 0; i < serial->num_rx_urbs; i++) {
-+              /* unlink and free RX URB */
-+              usb_free_urb(serial->rx_urb[i]);
-+              /* free the RX buffer */
-+              kfree(serial->rx_data[i]);
-+      }
-+
-+      /* unlink and free TX URB */
-+      usb_free_urb(serial->tx_urb);
-+      kfree(serial->tx_buffer);
-+      kfree(serial->tx_data);
-+      tty_port_destroy(&serial->port);
-+}
-+
-+static int hso_serial_common_create(struct hso_serial *serial, int num_urbs,
-+                                  int rx_size, int tx_size)
-+{
-+      struct device *dev;
-+      int minor;
-+      int i;
-+
-+      tty_port_init(&serial->port);
-+
-+      minor = get_free_serial_index();
-+      if (minor < 0)
-+              goto exit;
-+
-+      /* register our minor number */
-+      serial->parent->dev = tty_port_register_device_attr(&serial->port,
-+                      tty_drv, minor, &serial->parent->interface->dev,
-+                      serial->parent, hso_serial_dev_groups);
-+      dev = serial->parent->dev;
-+
-+      /* fill in specific data for later use */
-+      serial->minor = minor;
-+      serial->magic = HSO_SERIAL_MAGIC;
-+      spin_lock_init(&serial->serial_lock);
-+      serial->num_rx_urbs = num_urbs;
-+
-+      /* RX, allocate urb and initialize */
-+
-+      /* prepare our RX buffer */
-+      serial->rx_data_length = rx_size;
-+      for (i = 0; i < serial->num_rx_urbs; i++) {
-+              serial->rx_urb[i] = usb_alloc_urb(0, GFP_KERNEL);
-+              if (!serial->rx_urb[i]) {
-+                      dev_err(dev, "Could not allocate urb?\n");
-+                      goto exit;
-+              }
-+              serial->rx_urb[i]->transfer_buffer = NULL;
-+              serial->rx_urb[i]->transfer_buffer_length = 0;
-+              serial->rx_data[i] = kzalloc(serial->rx_data_length,
-+                                           GFP_KERNEL);
-+              if (!serial->rx_data[i])
-+                      goto exit;
-+      }
-+
-+      /* TX, allocate urb and initialize */
-+      serial->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!serial->tx_urb) {
-+              dev_err(dev, "Could not allocate urb?\n");
-+              goto exit;
-+      }
-+      serial->tx_urb->transfer_buffer = NULL;
-+      serial->tx_urb->transfer_buffer_length = 0;
-+      /* prepare our TX buffer */
-+      serial->tx_data_count = 0;
-+      serial->tx_buffer_count = 0;
-+      serial->tx_data_length = tx_size;
-+      serial->tx_data = kzalloc(serial->tx_data_length, GFP_KERNEL);
-+      if (!serial->tx_data)
-+              goto exit;
-+
-+      serial->tx_buffer = kzalloc(serial->tx_data_length, GFP_KERNEL);
-+      if (!serial->tx_buffer)
-+              goto exit;
-+
-+      return 0;
-+exit:
-+      hso_serial_tty_unregister(serial);
-+      hso_serial_common_free(serial);
-+      return -1;
-+}
-+
-+/* Creates a general hso device */
-+static struct hso_device *hso_create_device(struct usb_interface *intf,
-+                                          int port_spec)
-+{
-+      struct hso_device *hso_dev;
-+
-+      hso_dev = kzalloc(sizeof(*hso_dev), GFP_ATOMIC);
-+      if (!hso_dev)
-+              return NULL;
-+
-+      hso_dev->port_spec = port_spec;
-+      hso_dev->usb = interface_to_usbdev(intf);
-+      hso_dev->interface = intf;
-+      kref_init(&hso_dev->ref);
-+      mutex_init(&hso_dev->mutex);
-+
-+      INIT_WORK(&hso_dev->async_get_intf, async_get_intf);
-+      INIT_WORK(&hso_dev->async_put_intf, async_put_intf);
-+
-+      return hso_dev;
-+}
-+
-+/* Removes a network device in the network device table */
-+static int remove_net_device(struct hso_device *hso_dev)
-+{
-+      int i;
-+
-+      for (i = 0; i < HSO_MAX_NET_DEVICES; i++) {
-+              if (network_table[i] == hso_dev) {
-+                      network_table[i] = NULL;
-+                      break;
-+              }
-+      }
-+      if (i == HSO_MAX_NET_DEVICES)
-+              return -1;
-+      return 0;
-+}
-+
-+/* Frees our network device */
-+static void hso_free_net_device(struct hso_device *hso_dev)
-+{
-+      int i;
-+      struct hso_net *hso_net = dev2net(hso_dev);
-+
-+      if (!hso_net)
-+              return;
-+
-+      remove_net_device(hso_net->parent);
-+
-+      if (hso_net->net)
-+              unregister_netdev(hso_net->net);
-+
-+      /* start freeing */
-+      for (i = 0; i < MUX_BULK_RX_BUF_COUNT; i++) {
-+              usb_free_urb(hso_net->mux_bulk_rx_urb_pool[i]);
-+              kfree(hso_net->mux_bulk_rx_buf_pool[i]);
-+              hso_net->mux_bulk_rx_buf_pool[i] = NULL;
-+      }
-+      usb_free_urb(hso_net->mux_bulk_tx_urb);
-+      kfree(hso_net->mux_bulk_tx_buf);
-+      hso_net->mux_bulk_tx_buf = NULL;
-+
-+      if (hso_net->net)
-+              free_netdev(hso_net->net);
-+
-+      kfree(hso_dev);
-+}
-+
-+static const struct net_device_ops hso_netdev_ops = {
-+      .ndo_open       = hso_net_open,
-+      .ndo_stop       = hso_net_close,
-+      .ndo_start_xmit = hso_net_start_xmit,
-+      .ndo_tx_timeout = hso_net_tx_timeout,
-+};
-+
-+/* initialize the network interface */
-+static void hso_net_init(struct net_device *net)
-+{
-+      struct hso_net *hso_net = netdev_priv(net);
-+
-+      D1("sizeof hso_net is %d", (int)sizeof(*hso_net));
-+
-+      /* fill in the other fields */
-+      net->netdev_ops = &hso_netdev_ops;
-+      net->watchdog_timeo = HSO_NET_TX_TIMEOUT;
-+      net->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
-+      net->type = ARPHRD_NONE;
-+      net->mtu = DEFAULT_MTU - 14;
-+      net->tx_queue_len = 10;
-+      net->ethtool_ops = &ops;
-+
-+      /* and initialize the semaphore */
-+      spin_lock_init(&hso_net->net_lock);
-+}
-+
-+/* Adds a network device in the network device table */
-+static int add_net_device(struct hso_device *hso_dev)
-+{
-+      int i;
-+
-+      for (i = 0; i < HSO_MAX_NET_DEVICES; i++) {
-+              if (network_table[i] == NULL) {
-+                      network_table[i] = hso_dev;
-+                      break;
-+              }
-+      }
-+      if (i == HSO_MAX_NET_DEVICES)
-+              return -1;
-+      return 0;
-+}
-+
-+static int hso_rfkill_set_block(void *data, bool blocked)
-+{
-+      struct hso_device *hso_dev = data;
-+      int enabled = !blocked;
-+      int rv;
-+
-+      mutex_lock(&hso_dev->mutex);
-+      if (hso_dev->usb_gone)
-+              rv = 0;
-+      else
-+              rv = usb_control_msg(hso_dev->usb, usb_rcvctrlpipe(hso_dev->usb, 0),
-+                                     enabled ? 0x82 : 0x81, 0x40, 0, 0, NULL, 0,
-+                                     USB_CTRL_SET_TIMEOUT);
-+      mutex_unlock(&hso_dev->mutex);
-+      return rv;
-+}
-+
-+static const struct rfkill_ops hso_rfkill_ops = {
-+      .set_block = hso_rfkill_set_block,
-+};
-+
-+/* Creates and sets up everything for rfkill */
-+static void hso_create_rfkill(struct hso_device *hso_dev,
-+                           struct usb_interface *interface)
-+{
-+      struct hso_net *hso_net = dev2net(hso_dev);
-+      struct device *dev = &hso_net->net->dev;
-+      static u32 rfkill_counter;
-+
-+      snprintf(hso_net->name, sizeof(hso_net->name), "hso-%d",
-+               rfkill_counter++);
-+
-+      hso_net->rfkill = rfkill_alloc(hso_net->name,
-+                                     &interface_to_usbdev(interface)->dev,
-+                                     RFKILL_TYPE_WWAN,
-+                                     &hso_rfkill_ops, hso_dev);
-+      if (!hso_net->rfkill) {
-+              dev_err(dev, "%s - Out of memory\n", __func__);
-+              return;
-+      }
-+      if (rfkill_register(hso_net->rfkill) < 0) {
-+              rfkill_destroy(hso_net->rfkill);
-+              hso_net->rfkill = NULL;
-+              dev_err(dev, "%s - Failed to register rfkill\n", __func__);
-+              return;
-+      }
-+}
-+
-+static struct device_type hso_type = {
-+      .name   = "wwan",
-+};
-+
-+/* Creates our network device */
-+static struct hso_device *hso_create_net_device(struct usb_interface *interface,
-+                                              int port_spec)
-+{
-+      int result, i;
-+      struct net_device *net;
-+      struct hso_net *hso_net;
-+      struct hso_device *hso_dev;
-+
-+      hso_dev = hso_create_device(interface, port_spec);
-+      if (!hso_dev)
-+              return NULL;
-+
-+      /* allocate our network device, then we can put in our private data */
-+      /* call hso_net_init to do the basic initialization */
-+      net = alloc_netdev(sizeof(struct hso_net), "hso%d", NET_NAME_UNKNOWN,
-+                         hso_net_init);
-+      if (!net) {
-+              dev_err(&interface->dev, "Unable to create ethernet device\n");
-+              goto exit;
-+      }
-+
-+      hso_net = netdev_priv(net);
-+
-+      hso_dev->port_data.dev_net = hso_net;
-+      hso_net->net = net;
-+      hso_net->parent = hso_dev;
-+
-+      hso_net->in_endp = hso_get_ep(interface, USB_ENDPOINT_XFER_BULK,
-+                                    USB_DIR_IN);
-+      if (!hso_net->in_endp) {
-+              dev_err(&interface->dev, "Can't find BULK IN endpoint\n");
-+              goto exit;
-+      }
-+      hso_net->out_endp = hso_get_ep(interface, USB_ENDPOINT_XFER_BULK,
-+                                     USB_DIR_OUT);
-+      if (!hso_net->out_endp) {
-+              dev_err(&interface->dev, "Can't find BULK OUT endpoint\n");
-+              goto exit;
-+      }
-+      SET_NETDEV_DEV(net, &interface->dev);
-+      SET_NETDEV_DEVTYPE(net, &hso_type);
-+
-+      /* registering our net device */
-+      result = register_netdev(net);
-+      if (result) {
-+              dev_err(&interface->dev, "Failed to register device\n");
-+              goto exit;
-+      }
-+
-+      /* start allocating */
-+      for (i = 0; i < MUX_BULK_RX_BUF_COUNT; i++) {
-+              hso_net->mux_bulk_rx_urb_pool[i] = usb_alloc_urb(0, GFP_KERNEL);
-+              if (!hso_net->mux_bulk_rx_urb_pool[i]) {
-+                      dev_err(&interface->dev, "Could not allocate rx urb\n");
-+                      goto exit;
-+              }
-+              hso_net->mux_bulk_rx_buf_pool[i] = kzalloc(MUX_BULK_RX_BUF_SIZE,
-+                                                         GFP_KERNEL);
-+              if (!hso_net->mux_bulk_rx_buf_pool[i])
-+                      goto exit;
-+      }
-+      hso_net->mux_bulk_tx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!hso_net->mux_bulk_tx_urb) {
-+              dev_err(&interface->dev, "Could not allocate tx urb\n");
-+              goto exit;
-+      }
-+      hso_net->mux_bulk_tx_buf = kzalloc(MUX_BULK_TX_BUF_SIZE, GFP_KERNEL);
-+      if (!hso_net->mux_bulk_tx_buf)
-+              goto exit;
-+
-+      add_net_device(hso_dev);
-+
-+      hso_log_port(hso_dev);
-+
-+      hso_create_rfkill(hso_dev, interface);
-+
-+      return hso_dev;
-+exit:
-+      hso_free_net_device(hso_dev);
-+      return NULL;
-+}
-+
-+static void hso_free_tiomget(struct hso_serial *serial)
-+{
-+      struct hso_tiocmget *tiocmget;
-+      if (!serial)
-+              return;
-+      tiocmget = serial->tiocmget;
-+      if (tiocmget) {
-+              usb_free_urb(tiocmget->urb);
-+              tiocmget->urb = NULL;
-+              serial->tiocmget = NULL;
-+              kfree(tiocmget);
-+      }
-+}
-+
-+/* Frees an AT channel ( goes for both mux and non-mux ) */
-+static void hso_free_serial_device(struct hso_device *hso_dev)
-+{
-+      struct hso_serial *serial = dev2ser(hso_dev);
-+
-+      if (!serial)
-+              return;
-+
-+      hso_serial_common_free(serial);
-+
-+      if (serial->shared_int) {
-+              mutex_lock(&serial->shared_int->shared_int_lock);
-+              if (--serial->shared_int->ref_count == 0)
-+                      hso_free_shared_int(serial->shared_int);
-+              else
-+                      mutex_unlock(&serial->shared_int->shared_int_lock);
-+      }
-+      hso_free_tiomget(serial);
-+      kfree(serial);
-+      kfree(hso_dev);
-+}
-+
-+/* Creates a bulk AT channel */
-+static struct hso_device *hso_create_bulk_serial_device(
-+                      struct usb_interface *interface, int port)
-+{
-+      struct hso_device *hso_dev;
-+      struct hso_serial *serial;
-+      int num_urbs;
-+      struct hso_tiocmget *tiocmget;
-+
-+      hso_dev = hso_create_device(interface, port);
-+      if (!hso_dev)
-+              return NULL;
-+
-+      serial = kzalloc(sizeof(*serial), GFP_KERNEL);
-+      if (!serial)
-+              goto exit;
-+
-+      serial->parent = hso_dev;
-+      hso_dev->port_data.dev_serial = serial;
-+
-+      if ((port & HSO_PORT_MASK) == HSO_PORT_MODEM) {
-+              num_urbs = 2;
-+              serial->tiocmget = kzalloc(sizeof(struct hso_tiocmget),
-+                                         GFP_KERNEL);
-+              /* it isn't going to break our heart if serial->tiocmget
-+               *  allocation fails don't bother checking this.
-+               */
-+              if (serial->tiocmget) {
-+                      tiocmget = serial->tiocmget;
-+                      tiocmget->urb = usb_alloc_urb(0, GFP_KERNEL);
-+                      if (tiocmget->urb) {
-+                              mutex_init(&tiocmget->mutex);
-+                              init_waitqueue_head(&tiocmget->waitq);
-+                              tiocmget->endp = hso_get_ep(
-+                                      interface,
-+                                      USB_ENDPOINT_XFER_INT,
-+                                      USB_DIR_IN);
-+                      } else
-+                              hso_free_tiomget(serial);
-+              }
-+      }
-+      else
-+              num_urbs = 1;
-+
-+      if (hso_serial_common_create(serial, num_urbs, BULK_URB_RX_SIZE,
-+                                   BULK_URB_TX_SIZE))
-+              goto exit;
-+
-+      serial->in_endp = hso_get_ep(interface, USB_ENDPOINT_XFER_BULK,
-+                                   USB_DIR_IN);
-+      if (!serial->in_endp) {
-+              dev_err(&interface->dev, "Failed to find BULK IN ep\n");
-+              goto exit2;
-+      }
-+
-+      if (!
-+          (serial->out_endp =
-+           hso_get_ep(interface, USB_ENDPOINT_XFER_BULK, USB_DIR_OUT))) {
-+              dev_err(&interface->dev, "Failed to find BULK IN ep\n");
-+              goto exit2;
-+      }
-+
-+      serial->write_data = hso_std_serial_write_data;
-+
-+      /* and record this serial */
-+      set_serial_by_index(serial->minor, serial);
-+
-+      /* setup the proc dirs and files if needed */
-+      hso_log_port(hso_dev);
-+
-+      /* done, return it */
-+      return hso_dev;
-+
-+exit2:
-+      hso_serial_tty_unregister(serial);
-+      hso_serial_common_free(serial);
-+exit:
-+      hso_free_tiomget(serial);
-+      kfree(serial);
-+      kfree(hso_dev);
-+      return NULL;
-+}
-+
-+/* Creates a multiplexed AT channel */
-+static
-+struct hso_device *hso_create_mux_serial_device(struct usb_interface *interface,
-+                                              int port,
-+                                              struct hso_shared_int *mux)
-+{
-+      struct hso_device *hso_dev;
-+      struct hso_serial *serial;
-+      int port_spec;
-+
-+      port_spec = HSO_INTF_MUX;
-+      port_spec &= ~HSO_PORT_MASK;
-+
-+      port_spec |= hso_mux_to_port(port);
-+      if ((port_spec & HSO_PORT_MASK) == HSO_PORT_NO_PORT)
-+              return NULL;
-+
-+      hso_dev = hso_create_device(interface, port_spec);
-+      if (!hso_dev)
-+              return NULL;
-+
-+      serial = kzalloc(sizeof(*serial), GFP_KERNEL);
-+      if (!serial)
-+              goto exit;
-+
-+      hso_dev->port_data.dev_serial = serial;
-+      serial->parent = hso_dev;
-+
-+      if (hso_serial_common_create
-+          (serial, 1, CTRL_URB_RX_SIZE, CTRL_URB_TX_SIZE))
-+              goto exit;
-+
-+      serial->tx_data_length--;
-+      serial->write_data = hso_mux_serial_write_data;
-+
-+      serial->shared_int = mux;
-+      mutex_lock(&serial->shared_int->shared_int_lock);
-+      serial->shared_int->ref_count++;
-+      mutex_unlock(&serial->shared_int->shared_int_lock);
-+
-+      /* and record this serial */
-+      set_serial_by_index(serial->minor, serial);
-+
-+      /* setup the proc dirs and files if needed */
-+      hso_log_port(hso_dev);
-+
-+      /* done, return it */
-+      return hso_dev;
-+
-+exit:
-+      if (serial) {
-+              tty_unregister_device(tty_drv, serial->minor);
-+              kfree(serial);
-+      }
-+      kfree(hso_dev);
-+      return NULL;
-+
-+}
-+
-+static void hso_free_shared_int(struct hso_shared_int *mux)
-+{
-+      usb_free_urb(mux->shared_intr_urb);
-+      kfree(mux->shared_intr_buf);
-+      mutex_unlock(&mux->shared_int_lock);
-+      kfree(mux);
-+}
-+
-+static
-+struct hso_shared_int *hso_create_shared_int(struct usb_interface *interface)
-+{
-+      struct hso_shared_int *mux = kzalloc(sizeof(*mux), GFP_KERNEL);
-+
-+      if (!mux)
-+              return NULL;
-+
-+      mux->intr_endp = hso_get_ep(interface, USB_ENDPOINT_XFER_INT,
-+                                  USB_DIR_IN);
-+      if (!mux->intr_endp) {
-+              dev_err(&interface->dev, "Can't find INT IN endpoint\n");
-+              goto exit;
-+      }
-+
-+      mux->shared_intr_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!mux->shared_intr_urb) {
-+              dev_err(&interface->dev, "Could not allocate intr urb?\n");
-+              goto exit;
-+      }
-+      mux->shared_intr_buf =
-+              kzalloc(le16_to_cpu(mux->intr_endp->wMaxPacketSize),
-+                      GFP_KERNEL);
-+      if (!mux->shared_intr_buf)
-+              goto exit;
-+
-+      mutex_init(&mux->shared_int_lock);
-+
-+      return mux;
-+
-+exit:
-+      kfree(mux->shared_intr_buf);
-+      usb_free_urb(mux->shared_intr_urb);
-+      kfree(mux);
-+      return NULL;
-+}
-+
-+/* Gets the port spec for a certain interface */
-+static int hso_get_config_data(struct usb_interface *interface)
-+{
-+      struct usb_device *usbdev = interface_to_usbdev(interface);
-+      u8 *config_data = kmalloc(17, GFP_KERNEL);
-+      u32 if_num = interface->cur_altsetting->desc.bInterfaceNumber;
-+      s32 result;
-+
-+      if (!config_data)
-+              return -ENOMEM;
-+      if (usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0),
-+                          0x86, 0xC0, 0, 0, config_data, 17,
-+                          USB_CTRL_SET_TIMEOUT) != 0x11) {
-+              kfree(config_data);
-+              return -EIO;
-+      }
-+
-+      switch (config_data[if_num]) {
-+      case 0x0:
-+              result = 0;
-+              break;
-+      case 0x1:
-+              result = HSO_PORT_DIAG;
-+              break;
-+      case 0x2:
-+              result = HSO_PORT_GPS;
-+              break;
-+      case 0x3:
-+              result = HSO_PORT_GPS_CONTROL;
-+              break;
-+      case 0x4:
-+              result = HSO_PORT_APP;
-+              break;
-+      case 0x5:
-+              result = HSO_PORT_APP2;
-+              break;
-+      case 0x6:
-+              result = HSO_PORT_CONTROL;
-+              break;
-+      case 0x7:
-+              result = HSO_PORT_NETWORK;
-+              break;
-+      case 0x8:
-+              result = HSO_PORT_MODEM;
-+              break;
-+      case 0x9:
-+              result = HSO_PORT_MSD;
-+              break;
-+      case 0xa:
-+              result = HSO_PORT_PCSC;
-+              break;
-+      case 0xb:
-+              result = HSO_PORT_VOICE;
-+              break;
-+      default:
-+              result = 0;
-+      }
-+
-+      if (result)
-+              result |= HSO_INTF_BULK;
-+
-+      if (config_data[16] & 0x1)
-+              result |= HSO_INFO_CRC_BUG;
-+
-+      kfree(config_data);
-+      return result;
-+}
-+
-+/* called once for each interface upon device insertion */
-+static int hso_probe(struct usb_interface *interface,
-+                   const struct usb_device_id *id)
-+{
-+      int mux, i, if_num, port_spec;
-+      unsigned char port_mask;
-+      struct hso_device *hso_dev = NULL;
-+      struct hso_shared_int *shared_int;
-+      struct hso_device *tmp_dev = NULL;
-+
-+      if (interface->cur_altsetting->desc.bInterfaceClass != 0xFF) {
-+              dev_err(&interface->dev, "Not our interface\n");
-+              return -ENODEV;
-+      }
-+
-+      if_num = interface->cur_altsetting->desc.bInterfaceNumber;
-+
-+      /* Get the interface/port specification from either driver_info or from
-+       * the device itself */
-+      if (id->driver_info)
-+              port_spec = ((u32 *)(id->driver_info))[if_num];
-+      else
-+              port_spec = hso_get_config_data(interface);
-+
-+      /* Check if we need to switch to alt interfaces prior to port
-+       * configuration */
-+      if (interface->num_altsetting > 1)
-+              usb_set_interface(interface_to_usbdev(interface), if_num, 1);
-+      interface->needs_remote_wakeup = 1;
-+
-+      /* Allocate new hso device(s) */
-+      switch (port_spec & HSO_INTF_MASK) {
-+      case HSO_INTF_MUX:
-+              if ((port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK) {
-+                      /* Create the network device */
-+                      if (!disable_net) {
-+                              hso_dev = hso_create_net_device(interface,
-+                                                              port_spec);
-+                              if (!hso_dev)
-+                                      goto exit;
-+                              tmp_dev = hso_dev;
-+                      }
-+              }
-+
-+              if (hso_get_mux_ports(interface, &port_mask))
-+                      /* TODO: de-allocate everything */
-+                      goto exit;
-+
-+              shared_int = hso_create_shared_int(interface);
-+              if (!shared_int)
-+                      goto exit;
-+
-+              for (i = 1, mux = 0; i < 0x100; i = i << 1, mux++) {
-+                      if (port_mask & i) {
-+                              hso_dev = hso_create_mux_serial_device(
-+                                              interface, i, shared_int);
-+                              if (!hso_dev)
-+                                      goto exit;
-+                      }
-+              }
-+
-+              if (tmp_dev)
-+                      hso_dev = tmp_dev;
-+              break;
-+
-+      case HSO_INTF_BULK:
-+              /* It's a regular bulk interface */
-+              if ((port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK) {
-+                      if (!disable_net)
-+                              hso_dev =
-+                                  hso_create_net_device(interface, port_spec);
-+              } else {
-+                      hso_dev =
-+                          hso_create_bulk_serial_device(interface, port_spec);
-+              }
-+              if (!hso_dev)
-+                      goto exit;
-+              break;
-+      default:
-+              goto exit;
-+      }
-+
-+      /* save our data pointer in this device */
-+      usb_set_intfdata(interface, hso_dev);
-+
-+      /* done */
-+      return 0;
-+exit:
-+      hso_free_interface(interface);
-+      return -ENODEV;
-+}
-+
-+/* device removed, cleaning up */
-+static void hso_disconnect(struct usb_interface *interface)
-+{
-+      hso_free_interface(interface);
-+
-+      /* remove reference of our private data */
-+      usb_set_intfdata(interface, NULL);
-+}
-+
-+static void async_get_intf(struct work_struct *data)
-+{
-+      struct hso_device *hso_dev =
-+          container_of(data, struct hso_device, async_get_intf);
-+      usb_autopm_get_interface(hso_dev->interface);
-+}
-+
-+static void async_put_intf(struct work_struct *data)
-+{
-+      struct hso_device *hso_dev =
-+          container_of(data, struct hso_device, async_put_intf);
-+      usb_autopm_put_interface(hso_dev->interface);
-+}
-+
-+static int hso_get_activity(struct hso_device *hso_dev)
-+{
-+      if (hso_dev->usb->state == USB_STATE_SUSPENDED) {
-+              if (!hso_dev->is_active) {
-+                      hso_dev->is_active = 1;
-+                      schedule_work(&hso_dev->async_get_intf);
-+              }
-+      }
-+
-+      if (hso_dev->usb->state != USB_STATE_CONFIGURED)
-+              return -EAGAIN;
-+
-+      usb_mark_last_busy(hso_dev->usb);
-+
-+      return 0;
-+}
-+
-+static int hso_put_activity(struct hso_device *hso_dev)
-+{
-+      if (hso_dev->usb->state != USB_STATE_SUSPENDED) {
-+              if (hso_dev->is_active) {
-+                      hso_dev->is_active = 0;
-+                      schedule_work(&hso_dev->async_put_intf);
-+                      return -EAGAIN;
-+              }
-+      }
-+      hso_dev->is_active = 0;
-+      return 0;
-+}
-+
-+/* called by kernel when we need to suspend device */
-+static int hso_suspend(struct usb_interface *iface, pm_message_t message)
-+{
-+      int i, result;
-+
-+      /* Stop all serial ports */
-+      for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
-+              if (serial_table[i] && (serial_table[i]->interface == iface)) {
-+                      result = hso_stop_serial_device(serial_table[i]);
-+                      if (result)
-+                              goto out;
-+              }
-+      }
-+
-+      /* Stop all network ports */
-+      for (i = 0; i < HSO_MAX_NET_DEVICES; i++) {
-+              if (network_table[i] &&
-+                  (network_table[i]->interface == iface)) {
-+                      result = hso_stop_net_device(network_table[i]);
-+                      if (result)
-+                              goto out;
-+              }
-+      }
-+
-+out:
-+      return 0;
-+}
-+
-+/* called by kernel when we need to resume device */
-+static int hso_resume(struct usb_interface *iface)
-+{
-+      int i, result = 0;
-+      struct hso_net *hso_net;
-+
-+      /* Start all serial ports */
-+      for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
-+              if (serial_table[i] && (serial_table[i]->interface == iface)) {
-+                      if (atomic_read(&dev2ser(serial_table[i])->port.count)) {
-+                              result =
-+                                  hso_start_serial_device(serial_table[i], GFP_NOIO);
-+                              hso_kick_transmit(dev2ser(serial_table[i]));
-+                              if (result)
-+                                      goto out;
-+                      }
-+              }
-+      }
-+
-+      /* Start all network ports */
-+      for (i = 0; i < HSO_MAX_NET_DEVICES; i++) {
-+              if (network_table[i] &&
-+                  (network_table[i]->interface == iface)) {
-+                      hso_net = dev2net(network_table[i]);
-+                      if (hso_net->flags & IFF_UP) {
-+                              /* First transmit any lingering data,
-+                                 then restart the device. */
-+                              if (hso_net->skb_tx_buf) {
-+                                      dev_dbg(&iface->dev,
-+                                              "Transmitting"
-+                                              " lingering data\n");
-+                                      hso_net_start_xmit(hso_net->skb_tx_buf,
-+                                                         hso_net->net);
-+                                      hso_net->skb_tx_buf = NULL;
-+                              }
-+                              result = hso_start_net_device(network_table[i]);
-+                              if (result)
-+                                      goto out;
-+                      }
-+              }
-+      }
-+
-+out:
-+      return result;
-+}
-+
-+static void hso_serial_ref_free(struct kref *ref)
-+{
-+      struct hso_device *hso_dev = container_of(ref, struct hso_device, ref);
-+
-+      hso_free_serial_device(hso_dev);
-+}
-+
-+static void hso_free_interface(struct usb_interface *interface)
-+{
-+      struct hso_serial *serial;
-+      int i;
-+
-+      for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
-+              if (serial_table[i] &&
-+                  (serial_table[i]->interface == interface)) {
-+                      serial = dev2ser(serial_table[i]);
-+                      tty_port_tty_hangup(&serial->port, false);
-+                      mutex_lock(&serial->parent->mutex);
-+                      serial->parent->usb_gone = 1;
-+                      mutex_unlock(&serial->parent->mutex);
-+                      cancel_work_sync(&serial_table[i]->async_put_intf);
-+                      cancel_work_sync(&serial_table[i]->async_get_intf);
-+                      hso_serial_tty_unregister(serial);
-+                      kref_put(&serial_table[i]->ref, hso_serial_ref_free);
-+                      set_serial_by_index(i, NULL);
-+              }
-+      }
-+
-+      for (i = 0; i < HSO_MAX_NET_DEVICES; i++) {
-+              if (network_table[i] &&
-+                  (network_table[i]->interface == interface)) {
-+                      struct rfkill *rfk = dev2net(network_table[i])->rfkill;
-+                      /* hso_stop_net_device doesn't stop the net queue since
-+                       * traffic needs to start it again when suspended */
-+                      netif_stop_queue(dev2net(network_table[i])->net);
-+                      hso_stop_net_device(network_table[i]);
-+                      cancel_work_sync(&network_table[i]->async_put_intf);
-+                      cancel_work_sync(&network_table[i]->async_get_intf);
-+                      if (rfk) {
-+                              rfkill_unregister(rfk);
-+                              rfkill_destroy(rfk);
-+                      }
-+                      hso_free_net_device(network_table[i]);
-+              }
-+      }
-+}
-+
-+/* Helper functions */
-+
-+/* Get the endpoint ! */
-+static struct usb_endpoint_descriptor *hso_get_ep(struct usb_interface *intf,
-+                                                int type, int dir)
-+{
-+      int i;
-+      struct usb_host_interface *iface = intf->cur_altsetting;
-+      struct usb_endpoint_descriptor *endp;
-+
-+      for (i = 0; i < iface->desc.bNumEndpoints; i++) {
-+              endp = &iface->endpoint[i].desc;
-+              if (((endp->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == dir) &&
-+                  (usb_endpoint_type(endp) == type))
-+                      return endp;
-+      }
-+
-+      return NULL;
-+}
-+
-+/* Get the byte that describes which ports are enabled */
-+static int hso_get_mux_ports(struct usb_interface *intf, unsigned char *ports)
-+{
-+      int i;
-+      struct usb_host_interface *iface = intf->cur_altsetting;
-+
-+      if (iface->extralen == 3) {
-+              *ports = iface->extra[2];
-+              return 0;
-+      }
-+
-+      for (i = 0; i < iface->desc.bNumEndpoints; i++) {
-+              if (iface->endpoint[i].extralen == 3) {
-+                      *ports = iface->endpoint[i].extra[2];
-+                      return 0;
-+              }
-+      }
-+
-+      return -1;
-+}
-+
-+/* interrupt urb needs to be submitted, used for serial read of muxed port */
-+static int hso_mux_submit_intr_urb(struct hso_shared_int *shared_int,
-+                                 struct usb_device *usb, gfp_t gfp)
-+{
-+      int result;
-+
-+      usb_fill_int_urb(shared_int->shared_intr_urb, usb,
-+                       usb_rcvintpipe(usb,
-+                              shared_int->intr_endp->bEndpointAddress & 0x7F),
-+                       shared_int->shared_intr_buf,
-+                       1,
-+                       intr_callback, shared_int,
-+                       shared_int->intr_endp->bInterval);
-+
-+      result = usb_submit_urb(shared_int->shared_intr_urb, gfp);
-+      if (result)
-+              dev_warn(&usb->dev, "%s failed mux_intr_urb %d\n", __func__,
-+                      result);
-+
-+      return result;
-+}
-+
-+/* operations setup of the serial interface */
-+static const struct tty_operations hso_serial_ops = {
-+      .open = hso_serial_open,
-+      .close = hso_serial_close,
-+      .write = hso_serial_write,
-+      .write_room = hso_serial_write_room,
-+      .cleanup = hso_serial_cleanup,
-+      .ioctl = hso_serial_ioctl,
-+      .set_termios = hso_serial_set_termios,
-+      .chars_in_buffer = hso_serial_chars_in_buffer,
-+      .tiocmget = hso_serial_tiocmget,
-+      .tiocmset = hso_serial_tiocmset,
-+      .get_icount = hso_get_count,
-+      .unthrottle = hso_unthrottle
-+};
-+
-+static struct usb_driver hso_driver = {
-+      .name = driver_name,
-+      .probe = hso_probe,
-+      .disconnect = hso_disconnect,
-+      .id_table = hso_ids,
-+      .suspend = hso_suspend,
-+      .resume = hso_resume,
-+      .reset_resume = hso_resume,
-+      .supports_autosuspend = 1,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+static int __init hso_init(void)
-+{
-+      int i;
-+      int result;
-+
-+      /* put it in the log */
-+      printk(KERN_INFO "hso: %s\n", version);
-+
-+      /* Initialise the serial table semaphore and table */
-+      spin_lock_init(&serial_table_lock);
-+      for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++)
-+              serial_table[i] = NULL;
-+
-+      /* allocate our driver using the proper amount of supported minors */
-+      tty_drv = alloc_tty_driver(HSO_SERIAL_TTY_MINORS);
-+      if (!tty_drv)
-+              return -ENOMEM;
-+
-+      /* fill in all needed values */
-+      tty_drv->driver_name = driver_name;
-+      tty_drv->name = tty_filename;
-+
-+      /* if major number is provided as parameter, use that one */
-+      if (tty_major)
-+              tty_drv->major = tty_major;
-+
-+      tty_drv->minor_start = 0;
-+      tty_drv->type = TTY_DRIVER_TYPE_SERIAL;
-+      tty_drv->subtype = SERIAL_TYPE_NORMAL;
-+      tty_drv->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
-+      tty_drv->init_termios = tty_std_termios;
-+      hso_init_termios(&tty_drv->init_termios);
-+      tty_set_operations(tty_drv, &hso_serial_ops);
-+
-+      /* register the tty driver */
-+      result = tty_register_driver(tty_drv);
-+      if (result) {
-+              printk(KERN_ERR "%s - tty_register_driver failed(%d)\n",
-+                      __func__, result);
-+              goto err_free_tty;
-+      }
-+
-+      /* register this module as an usb driver */
-+      result = usb_register(&hso_driver);
-+      if (result) {
-+              printk(KERN_ERR "Could not register hso driver? error: %d\n",
-+                      result);
-+              goto err_unreg_tty;
-+      }
-+
-+      /* done */
-+      return 0;
-+err_unreg_tty:
-+      tty_unregister_driver(tty_drv);
-+err_free_tty:
-+      put_tty_driver(tty_drv);
-+      return result;
-+}
-+
-+static void __exit hso_exit(void)
-+{
-+      printk(KERN_INFO "hso: unloaded\n");
-+
-+      tty_unregister_driver(tty_drv);
-+      put_tty_driver(tty_drv);
-+      /* deregister the usb driver */
-+      usb_deregister(&hso_driver);
-+}
-+
-+/* Module definitions */
-+module_init(hso_init);
-+module_exit(hso_exit);
-+
-+MODULE_AUTHOR(MOD_AUTHOR);
-+MODULE_DESCRIPTION(MOD_DESCRIPTION);
-+MODULE_LICENSE(MOD_LICENSE);
-+
-+/* change the debug level (eg: insmod hso.ko debug=0x04) */
-+MODULE_PARM_DESC(debug, "Level of debug [0x01 | 0x02 | 0x04 | 0x08 | 0x10]");
-+module_param(debug, int, S_IRUGO | S_IWUSR);
-+
-+/* set the major tty number (eg: insmod hso.ko tty_major=245) */
-+MODULE_PARM_DESC(tty_major, "Set the major tty number");
-+module_param(tty_major, int, S_IRUGO | S_IWUSR);
-+
-+/* disable network interface (eg: insmod hso.ko disable_net=1) */
-+MODULE_PARM_DESC(disable_net, "Disable the network interface");
-+module_param(disable_net, int, S_IRUGO | S_IWUSR);
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/huawei_cdc_ncm.c backports-4.2.6-1/drivers/net/usb/huawei_cdc_ncm.c
---- backports-4.2.6-1.org/drivers/net/usb/huawei_cdc_ncm.c     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/huawei_cdc_ncm.c 2016-06-28 14:35:17.981973887 +0200
-@@ -0,0 +1,224 @@
-+/* huawei_cdc_ncm.c - handles Huawei devices using the CDC NCM protocol as
-+ * transport layer.
-+ * Copyright (C) 2013  Enrico Mioso <mrkiko.rs@gmail.com>
-+ *
-+ *
-+ * ABSTRACT:
-+ * This driver handles devices resembling the CDC NCM standard, but
-+ * encapsulating another protocol inside it. An example are some Huawei 3G
-+ * devices, exposing an embedded AT channel where you can set up the NCM
-+ * connection.
-+ * This code has been heavily inspired by the cdc_mbim.c driver, which is
-+ * Copyright (c) 2012  Smith Micro Software, Inc.
-+ * Copyright (c) 2012  Bjørn Mork <bjorn@mork.no>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/if_vlan.h>
-+#include <linux/ip.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/usb/cdc.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/usb/cdc-wdm.h>
-+#include <linux/usb/cdc_ncm.h>
-+
-+/* Driver data */
-+struct huawei_cdc_ncm_state {
-+      struct cdc_ncm_ctx *ctx;
-+      atomic_t pmcount;
-+      struct usb_driver *subdriver;
-+      struct usb_interface *control;
-+      struct usb_interface *data;
-+};
-+
-+static int huawei_cdc_ncm_manage_power(struct usbnet *usbnet_dev, int on)
-+{
-+      struct huawei_cdc_ncm_state *drvstate = (void *)&usbnet_dev->data;
-+      int rv;
-+
-+      if ((on && atomic_add_return(1, &drvstate->pmcount) == 1) ||
-+                      (!on && atomic_dec_and_test(&drvstate->pmcount))) {
-+              rv = usb_autopm_get_interface(usbnet_dev->intf);
-+              usbnet_dev->intf->needs_remote_wakeup = on;
-+              if (!rv)
-+                      usb_autopm_put_interface(usbnet_dev->intf);
-+      }
-+      return 0;
-+}
-+
-+static int huawei_cdc_ncm_wdm_manage_power(struct usb_interface *intf,
-+                                         int status)
-+{
-+      struct usbnet *usbnet_dev = usb_get_intfdata(intf);
-+
-+      /* can be called while disconnecting */
-+      if (!usbnet_dev)
-+              return 0;
-+
-+      return huawei_cdc_ncm_manage_power(usbnet_dev, status);
-+}
-+
-+
-+static int huawei_cdc_ncm_bind(struct usbnet *usbnet_dev,
-+                             struct usb_interface *intf)
-+{
-+      struct cdc_ncm_ctx *ctx;
-+      struct usb_driver *subdriver = ERR_PTR(-ENODEV);
-+      int ret = -ENODEV;
-+      struct huawei_cdc_ncm_state *drvstate = (void *)&usbnet_dev->data;
-+      int drvflags = 0;
-+
-+      /* altsetting should always be 1 for NCM devices - so we hard-coded
-+       * it here. Some huawei devices will need the NDP part of the NCM package to
-+       * be at the end of the frame.
-+       */
-+      drvflags |= CDC_NCM_FLAG_NDP_TO_END;
-+      ret = cdc_ncm_bind_common(usbnet_dev, intf, 1, drvflags);
-+      if (ret)
-+              goto err;
-+
-+      ctx = drvstate->ctx;
-+
-+      if (usbnet_dev->status)
-+              /* The wMaxCommand buffer must be big enough to hold
-+               * any message from the modem. Experience has shown
-+               * that some replies are more than 256 bytes long
-+               */
-+              subdriver = usb_cdc_wdm_register(ctx->control,
-+                                               &usbnet_dev->status->desc,
-+                                               1024, /* wMaxCommand */
-+                                               huawei_cdc_ncm_wdm_manage_power);
-+      if (IS_ERR(subdriver)) {
-+              ret = PTR_ERR(subdriver);
-+              cdc_ncm_unbind(usbnet_dev, intf);
-+              goto err;
-+      }
-+
-+      /* Prevent usbnet from using the status descriptor */
-+      usbnet_dev->status = NULL;
-+
-+      drvstate->subdriver = subdriver;
-+
-+err:
-+      return ret;
-+}
-+
-+static void huawei_cdc_ncm_unbind(struct usbnet *usbnet_dev,
-+                                struct usb_interface *intf)
-+{
-+      struct huawei_cdc_ncm_state *drvstate = (void *)&usbnet_dev->data;
-+      struct cdc_ncm_ctx *ctx = drvstate->ctx;
-+
-+      if (drvstate->subdriver && drvstate->subdriver->disconnect)
-+              drvstate->subdriver->disconnect(ctx->control);
-+      drvstate->subdriver = NULL;
-+
-+      cdc_ncm_unbind(usbnet_dev, intf);
-+}
-+
-+static int huawei_cdc_ncm_suspend(struct usb_interface *intf,
-+                                pm_message_t message)
-+{
-+      int ret = 0;
-+      struct usbnet *usbnet_dev = usb_get_intfdata(intf);
-+      struct huawei_cdc_ncm_state *drvstate = (void *)&usbnet_dev->data;
-+      struct cdc_ncm_ctx *ctx = drvstate->ctx;
-+
-+      if (ctx == NULL) {
-+              ret = -ENODEV;
-+              goto error;
-+      }
-+
-+      ret = usbnet_suspend(intf, message);
-+      if (ret < 0)
-+              goto error;
-+
-+      if (intf == ctx->control &&
-+              drvstate->subdriver &&
-+              drvstate->subdriver->suspend)
-+              ret = drvstate->subdriver->suspend(intf, message);
-+      if (ret < 0)
-+              usbnet_resume(intf);
-+
-+error:
-+      return ret;
-+}
-+
-+static int huawei_cdc_ncm_resume(struct usb_interface *intf)
-+{
-+      int ret = 0;
-+      struct usbnet *usbnet_dev = usb_get_intfdata(intf);
-+      struct huawei_cdc_ncm_state *drvstate = (void *)&usbnet_dev->data;
-+      bool callsub;
-+      struct cdc_ncm_ctx *ctx = drvstate->ctx;
-+
-+      /* should we call subdriver's resume function? */
-+      callsub =
-+              (intf == ctx->control &&
-+              drvstate->subdriver &&
-+              drvstate->subdriver->resume);
-+
-+      if (callsub)
-+              ret = drvstate->subdriver->resume(intf);
-+      if (ret < 0)
-+              goto err;
-+      ret = usbnet_resume(intf);
-+      if (ret < 0 && callsub)
-+              drvstate->subdriver->suspend(intf, PMSG_SUSPEND);
-+err:
-+      return ret;
-+}
-+
-+static const struct driver_info huawei_cdc_ncm_info = {
-+      .description = "Huawei CDC NCM device",
-+      .flags = FLAG_NO_SETINT | FLAG_MULTI_PACKET | FLAG_WWAN,
-+      .bind = huawei_cdc_ncm_bind,
-+      .unbind = huawei_cdc_ncm_unbind,
-+      .manage_power = huawei_cdc_ncm_manage_power,
-+      .rx_fixup = cdc_ncm_rx_fixup,
-+      .tx_fixup = cdc_ncm_tx_fixup,
-+};
-+
-+static const struct usb_device_id huawei_cdc_ncm_devs[] = {
-+      /* Huawei NCM devices disguised as vendor specific */
-+      { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x16),
-+        .driver_info = (unsigned long)&huawei_cdc_ncm_info,
-+      },
-+      { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x46),
-+        .driver_info = (unsigned long)&huawei_cdc_ncm_info,
-+      },
-+      { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x76),
-+        .driver_info = (unsigned long)&huawei_cdc_ncm_info,
-+      },
-+      { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x03, 0x16),
-+        .driver_info = (unsigned long)&huawei_cdc_ncm_info,
-+      },
-+
-+      /* Terminating entry */
-+      {
-+      },
-+};
-+MODULE_DEVICE_TABLE(usb, huawei_cdc_ncm_devs);
-+
-+static struct usb_driver huawei_cdc_ncm_driver = {
-+      .name = "huawei_cdc_ncm",
-+      .id_table = huawei_cdc_ncm_devs,
-+      .probe = usbnet_probe,
-+      .disconnect = usbnet_disconnect,
-+      .suspend = huawei_cdc_ncm_suspend,
-+      .resume = huawei_cdc_ncm_resume,
-+      .reset_resume = huawei_cdc_ncm_resume,
-+      .supports_autosuspend = 1,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+module_usb_driver(huawei_cdc_ncm_driver);
-+MODULE_AUTHOR("Enrico Mioso <mrkiko.rs@gmail.com>");
-+MODULE_DESCRIPTION("USB CDC NCM host driver with encapsulated protocol support");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/int51x1.c backports-4.2.6-1/drivers/net/usb/int51x1.c
---- backports-4.2.6-1.org/drivers/net/usb/int51x1.c    1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/int51x1.c        2016-06-28 14:35:17.985307220 +0200
-@@ -0,0 +1,199 @@
-+/*
-+ * Copyright (c) 2009 Peter Holik
-+ *
-+ * Intellon usb PLC (Powerline Communications) usb net driver
-+ *
-+ * http://www.tandel.be/downloads/INT51X1_Datasheet.pdf
-+ *
-+ * Based on the work of Jan 'RedBully' Seiffert
-+ */
-+
-+/*
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or.
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/ctype.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/slab.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/usb/usbnet.h>
-+
-+#define INT51X1_VENDOR_ID     0x09e1
-+#define INT51X1_PRODUCT_ID    0x5121
-+
-+#define INT51X1_HEADER_SIZE   2       /* 2 byte header */
-+
-+#define PACKET_TYPE_PROMISCUOUS               (1 << 0)
-+#define PACKET_TYPE_ALL_MULTICAST     (1 << 1) /* no filter */
-+#define PACKET_TYPE_DIRECTED          (1 << 2)
-+#define PACKET_TYPE_BROADCAST         (1 << 3)
-+#define PACKET_TYPE_MULTICAST         (1 << 4) /* filtered */
-+
-+#define SET_ETHERNET_PACKET_FILTER    0x43
-+
-+static int int51x1_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      int len;
-+
-+      if (!(pskb_may_pull(skb, INT51X1_HEADER_SIZE))) {
-+              netdev_err(dev->net, "unexpected tiny rx frame\n");
-+              return 0;
-+      }
-+
-+      len = le16_to_cpu(*(__le16 *)&skb->data[skb->len - 2]);
-+
-+      skb_trim(skb, len);
-+
-+      return 1;
-+}
-+
-+static struct sk_buff *int51x1_tx_fixup(struct usbnet *dev,
-+              struct sk_buff *skb, gfp_t flags)
-+{
-+      int pack_len = skb->len;
-+      int pack_with_header_len = pack_len + INT51X1_HEADER_SIZE;
-+      int headroom = skb_headroom(skb);
-+      int tailroom = skb_tailroom(skb);
-+      int need_tail = 0;
-+      __le16 *len;
-+
-+      /* if packet and our header is smaler than 64 pad to 64 (+ ZLP) */
-+      if ((pack_with_header_len) < dev->maxpacket)
-+              need_tail = dev->maxpacket - pack_with_header_len + 1;
-+      /*
-+       * usbnet would send a ZLP if packetlength mod urbsize == 0 for us,
-+       * but we need to know ourself, because this would add to the length
-+       * we send down to the device...
-+       */
-+      else if (!(pack_with_header_len % dev->maxpacket))
-+              need_tail = 1;
-+
-+      if (!skb_cloned(skb) &&
-+                      (headroom + tailroom >= need_tail + INT51X1_HEADER_SIZE)) {
-+              if (headroom < INT51X1_HEADER_SIZE || tailroom < need_tail) {
-+                      skb->data = memmove(skb->head + INT51X1_HEADER_SIZE,
-+                                      skb->data, skb->len);
-+                      skb_set_tail_pointer(skb, skb->len);
-+              }
-+      } else {
-+              struct sk_buff *skb2;
-+
-+              skb2 = skb_copy_expand(skb,
-+                              INT51X1_HEADER_SIZE,
-+                              need_tail,
-+                              flags);
-+              dev_kfree_skb_any(skb);
-+              if (!skb2)
-+                      return NULL;
-+              skb = skb2;
-+      }
-+
-+      pack_len += need_tail;
-+      pack_len &= 0x07ff;
-+
-+      len = (__le16 *) __skb_push(skb, INT51X1_HEADER_SIZE);
-+      *len = cpu_to_le16(pack_len);
-+
-+      if(need_tail)
-+              memset(__skb_put(skb, need_tail), 0, need_tail);
-+
-+      return skb;
-+}
-+
-+static void int51x1_set_multicast(struct net_device *netdev)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      u16 filter = PACKET_TYPE_DIRECTED | PACKET_TYPE_BROADCAST;
-+
-+      if (netdev->flags & IFF_PROMISC) {
-+              /* do not expect to see traffic of other PLCs */
-+              filter |= PACKET_TYPE_PROMISCUOUS;
-+              netdev_info(dev->net, "promiscuous mode enabled\n");
-+      } else if (!netdev_mc_empty(netdev) ||
-+                (netdev->flags & IFF_ALLMULTI)) {
-+              filter |= PACKET_TYPE_ALL_MULTICAST;
-+              netdev_dbg(dev->net, "receive all multicast enabled\n");
-+      } else {
-+              /* ~PROMISCUOUS, ~MULTICAST */
-+              netdev_dbg(dev->net, "receive own packets only\n");
-+      }
-+
-+      usbnet_write_cmd_async(dev, SET_ETHERNET_PACKET_FILTER,
-+                             USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
-+                             filter, 0, NULL, 0);
-+}
-+
-+static const struct net_device_ops int51x1_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = usbnet_change_mtu,
-+      .ndo_set_mac_address    = eth_mac_addr,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_set_rx_mode        = int51x1_set_multicast,
-+};
-+
-+static int int51x1_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int status = usbnet_get_ethernet_addr(dev, 3);
-+
-+      if (status)
-+              return status;
-+
-+      dev->net->hard_header_len += INT51X1_HEADER_SIZE;
-+      dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
-+      dev->net->netdev_ops = &int51x1_netdev_ops;
-+
-+      return usbnet_get_endpoints(dev, intf);
-+}
-+
-+static const struct driver_info int51x1_info = {
-+      .description = "Intellon usb powerline adapter",
-+      .bind        = int51x1_bind,
-+      .rx_fixup    = int51x1_rx_fixup,
-+      .tx_fixup    = int51x1_tx_fixup,
-+      .in          = 1,
-+      .out         = 2,
-+      .flags       = FLAG_ETHER,
-+};
-+
-+static const struct usb_device_id products[] = {
-+      {
-+      USB_DEVICE(INT51X1_VENDOR_ID, INT51X1_PRODUCT_ID),
-+              .driver_info = (unsigned long) &int51x1_info,
-+      },
-+      {},
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver int51x1_driver = {
-+      .name       = "int51x1",
-+      .id_table   = products,
-+      .probe      = usbnet_probe,
-+      .disconnect = usbnet_disconnect,
-+      .suspend    = usbnet_suspend,
-+      .resume     = usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(int51x1_driver);
-+
-+MODULE_AUTHOR("Peter Holik");
-+MODULE_DESCRIPTION("Intellon usb powerline adapter");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/ipheth.c backports-4.2.6-1/drivers/net/usb/ipheth.c
---- backports-4.2.6-1.org/drivers/net/usb/ipheth.c     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/ipheth.c 2016-06-28 14:35:17.985307220 +0200
-@@ -0,0 +1,588 @@
-+/*
-+ * ipheth.c - Apple iPhone USB Ethernet driver
-+ *
-+ * Copyright (c) 2009 Diego Giagio <diego@giagio.com>
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. Neither the name of GIAGIO.COM nor the names of its contributors
-+ *    may be used to endorse or promote products derived from this software
-+ *    without specific prior written permission.
-+ *
-+ * Alternatively, provided that this notice is retained in full, this
-+ * software may be distributed under the terms of the GNU General
-+ * Public License ("GPL") version 2, in which case the provisions of the
-+ * GPL apply INSTEAD OF those given above.
-+ *
-+ * The provided data structures and external interfaces from this code
-+ * are not restricted to be used by modules with a GPL compatible license.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-+ * DAMAGE.
-+ *
-+ *
-+ * Attention: iPhone device must be paired, otherwise it won't respond to our
-+ * driver. For more info: http://giagio.com/wiki/moin.cgi/iPhoneEthernetDriver
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/usb.h>
-+#include <linux/workqueue.h>
-+
-+#define USB_VENDOR_APPLE        0x05ac
-+#define USB_PRODUCT_IPHONE      0x1290
-+#define USB_PRODUCT_IPHONE_3G   0x1292
-+#define USB_PRODUCT_IPHONE_3GS  0x1294
-+#define USB_PRODUCT_IPHONE_4  0x1297
-+#define USB_PRODUCT_IPAD 0x129a
-+#define USB_PRODUCT_IPAD_2    0x12a2
-+#define USB_PRODUCT_IPAD_3    0x12a6
-+#define USB_PRODUCT_IPAD_MINI    0x12ab
-+#define USB_PRODUCT_IPHONE_4_VZW 0x129c
-+#define USB_PRODUCT_IPHONE_4S 0x12a0
-+#define USB_PRODUCT_IPHONE_5  0x12a8
-+
-+#define IPHETH_USBINTF_CLASS    255
-+#define IPHETH_USBINTF_SUBCLASS 253
-+#define IPHETH_USBINTF_PROTO    1
-+
-+#define IPHETH_BUF_SIZE         1516
-+#define IPHETH_IP_ALIGN               2       /* padding at front of URB */
-+#define IPHETH_TX_TIMEOUT       (5 * HZ)
-+
-+#define IPHETH_INTFNUM          2
-+#define IPHETH_ALT_INTFNUM      1
-+
-+#define IPHETH_CTRL_ENDP        0x00
-+#define IPHETH_CTRL_BUF_SIZE    0x40
-+#define IPHETH_CTRL_TIMEOUT     (5 * HZ)
-+
-+#define IPHETH_CMD_GET_MACADDR   0x00
-+#define IPHETH_CMD_CARRIER_CHECK 0x45
-+
-+#define IPHETH_CARRIER_CHECK_TIMEOUT round_jiffies_relative(1 * HZ)
-+#define IPHETH_CARRIER_ON       0x04
-+
-+static struct usb_device_id ipheth_table[] = {
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPHONE,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_3G,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_3GS,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPAD,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPAD_2,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPAD_3,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPAD_MINI,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4_VZW,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4S,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { USB_DEVICE_AND_INTERFACE_INFO(
-+              USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_5,
-+              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+              IPHETH_USBINTF_PROTO) },
-+      { }
-+};
-+MODULE_DEVICE_TABLE(usb, ipheth_table);
-+
-+struct ipheth_device {
-+      struct usb_device *udev;
-+      struct usb_interface *intf;
-+      struct net_device *net;
-+      struct sk_buff *tx_skb;
-+      struct urb *tx_urb;
-+      struct urb *rx_urb;
-+      unsigned char *tx_buf;
-+      unsigned char *rx_buf;
-+      unsigned char *ctrl_buf;
-+      u8 bulk_in;
-+      u8 bulk_out;
-+      struct delayed_work carrier_work;
-+};
-+
-+static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags);
-+
-+static int ipheth_alloc_urbs(struct ipheth_device *iphone)
-+{
-+      struct urb *tx_urb = NULL;
-+      struct urb *rx_urb = NULL;
-+      u8 *tx_buf = NULL;
-+      u8 *rx_buf = NULL;
-+
-+      tx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (tx_urb == NULL)
-+              goto error_nomem;
-+
-+      rx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (rx_urb == NULL)
-+              goto free_tx_urb;
-+
-+      tx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE,
-+                                  GFP_KERNEL, &tx_urb->transfer_dma);
-+      if (tx_buf == NULL)
-+              goto free_rx_urb;
-+
-+      rx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE,
-+                                  GFP_KERNEL, &rx_urb->transfer_dma);
-+      if (rx_buf == NULL)
-+              goto free_tx_buf;
-+
-+
-+      iphone->tx_urb = tx_urb;
-+      iphone->rx_urb = rx_urb;
-+      iphone->tx_buf = tx_buf;
-+      iphone->rx_buf = rx_buf;
-+      return 0;
-+
-+free_tx_buf:
-+      usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, tx_buf,
-+                        tx_urb->transfer_dma);
-+free_rx_urb:
-+      usb_free_urb(rx_urb);
-+free_tx_urb:
-+      usb_free_urb(tx_urb);
-+error_nomem:
-+      return -ENOMEM;
-+}
-+
-+static void ipheth_free_urbs(struct ipheth_device *iphone)
-+{
-+      usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->rx_buf,
-+                        iphone->rx_urb->transfer_dma);
-+      usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->tx_buf,
-+                        iphone->tx_urb->transfer_dma);
-+      usb_free_urb(iphone->rx_urb);
-+      usb_free_urb(iphone->tx_urb);
-+}
-+
-+static void ipheth_kill_urbs(struct ipheth_device *dev)
-+{
-+      usb_kill_urb(dev->tx_urb);
-+      usb_kill_urb(dev->rx_urb);
-+}
-+
-+static void ipheth_rcvbulk_callback(struct urb *urb)
-+{
-+      struct ipheth_device *dev;
-+      struct sk_buff *skb;
-+      int status;
-+      char *buf;
-+      int len;
-+
-+      dev = urb->context;
-+      if (dev == NULL)
-+              return;
-+
-+      status = urb->status;
-+      switch (status) {
-+      case -ENOENT:
-+      case -ECONNRESET:
-+      case -ESHUTDOWN:
-+              return;
-+      case 0:
-+              break;
-+      default:
-+              dev_err(&dev->intf->dev, "%s: urb status: %d\n",
-+                      __func__, status);
-+              return;
-+      }
-+
-+      if (urb->actual_length <= IPHETH_IP_ALIGN) {
-+              dev->net->stats.rx_length_errors++;
-+              return;
-+      }
-+      len = urb->actual_length - IPHETH_IP_ALIGN;
-+      buf = urb->transfer_buffer + IPHETH_IP_ALIGN;
-+
-+      skb = dev_alloc_skb(len);
-+      if (!skb) {
-+              dev_err(&dev->intf->dev, "%s: dev_alloc_skb: -ENOMEM\n",
-+                      __func__);
-+              dev->net->stats.rx_dropped++;
-+              return;
-+      }
-+
-+      memcpy(skb_put(skb, len), buf, len);
-+      skb->dev = dev->net;
-+      skb->protocol = eth_type_trans(skb, dev->net);
-+
-+      dev->net->stats.rx_packets++;
-+      dev->net->stats.rx_bytes += len;
-+
-+      netif_rx(skb);
-+      ipheth_rx_submit(dev, GFP_ATOMIC);
-+}
-+
-+static void ipheth_sndbulk_callback(struct urb *urb)
-+{
-+      struct ipheth_device *dev;
-+      int status = urb->status;
-+
-+      dev = urb->context;
-+      if (dev == NULL)
-+              return;
-+
-+      if (status != 0 &&
-+          status != -ENOENT &&
-+          status != -ECONNRESET &&
-+          status != -ESHUTDOWN)
-+              dev_err(&dev->intf->dev, "%s: urb status: %d\n",
-+              __func__, status);
-+
-+      dev_kfree_skb_irq(dev->tx_skb);
-+      netif_wake_queue(dev->net);
-+}
-+
-+static int ipheth_carrier_set(struct ipheth_device *dev)
-+{
-+      struct usb_device *udev = dev->udev;
-+      int retval;
-+
-+      retval = usb_control_msg(udev,
-+                      usb_rcvctrlpipe(udev, IPHETH_CTRL_ENDP),
-+                      IPHETH_CMD_CARRIER_CHECK, /* request */
-+                      0xc0, /* request type */
-+                      0x00, /* value */
-+                      0x02, /* index */
-+                      dev->ctrl_buf, IPHETH_CTRL_BUF_SIZE,
-+                      IPHETH_CTRL_TIMEOUT);
-+      if (retval < 0) {
-+              dev_err(&dev->intf->dev, "%s: usb_control_msg: %d\n",
-+                      __func__, retval);
-+              return retval;
-+      }
-+
-+      if (dev->ctrl_buf[0] == IPHETH_CARRIER_ON)
-+              netif_carrier_on(dev->net);
-+      else
-+              netif_carrier_off(dev->net);
-+
-+      return 0;
-+}
-+
-+static void ipheth_carrier_check_work(struct work_struct *work)
-+{
-+      struct ipheth_device *dev = container_of(work, struct ipheth_device,
-+                                               carrier_work.work);
-+
-+      ipheth_carrier_set(dev);
-+      schedule_delayed_work(&dev->carrier_work, IPHETH_CARRIER_CHECK_TIMEOUT);
-+}
-+
-+static int ipheth_get_macaddr(struct ipheth_device *dev)
-+{
-+      struct usb_device *udev = dev->udev;
-+      struct net_device *net = dev->net;
-+      int retval;
-+
-+      retval = usb_control_msg(udev,
-+                               usb_rcvctrlpipe(udev, IPHETH_CTRL_ENDP),
-+                               IPHETH_CMD_GET_MACADDR, /* request */
-+                               0xc0, /* request type */
-+                               0x00, /* value */
-+                               0x02, /* index */
-+                               dev->ctrl_buf,
-+                               IPHETH_CTRL_BUF_SIZE,
-+                               IPHETH_CTRL_TIMEOUT);
-+      if (retval < 0) {
-+              dev_err(&dev->intf->dev, "%s: usb_control_msg: %d\n",
-+                      __func__, retval);
-+      } else if (retval < ETH_ALEN) {
-+              dev_err(&dev->intf->dev,
-+                      "%s: usb_control_msg: short packet: %d bytes\n",
-+                      __func__, retval);
-+              retval = -EINVAL;
-+      } else {
-+              memcpy(net->dev_addr, dev->ctrl_buf, ETH_ALEN);
-+              retval = 0;
-+      }
-+
-+      return retval;
-+}
-+
-+static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags)
-+{
-+      struct usb_device *udev = dev->udev;
-+      int retval;
-+
-+      usb_fill_bulk_urb(dev->rx_urb, udev,
-+                        usb_rcvbulkpipe(udev, dev->bulk_in),
-+                        dev->rx_buf, IPHETH_BUF_SIZE,
-+                        ipheth_rcvbulk_callback,
-+                        dev);
-+      dev->rx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
-+
-+      retval = usb_submit_urb(dev->rx_urb, mem_flags);
-+      if (retval)
-+              dev_err(&dev->intf->dev, "%s: usb_submit_urb: %d\n",
-+                      __func__, retval);
-+      return retval;
-+}
-+
-+static int ipheth_open(struct net_device *net)
-+{
-+      struct ipheth_device *dev = netdev_priv(net);
-+      struct usb_device *udev = dev->udev;
-+      int retval = 0;
-+
-+      usb_set_interface(udev, IPHETH_INTFNUM, IPHETH_ALT_INTFNUM);
-+
-+      retval = ipheth_carrier_set(dev);
-+      if (retval)
-+              return retval;
-+
-+      retval = ipheth_rx_submit(dev, GFP_KERNEL);
-+      if (retval)
-+              return retval;
-+
-+      schedule_delayed_work(&dev->carrier_work, IPHETH_CARRIER_CHECK_TIMEOUT);
-+      netif_start_queue(net);
-+      return retval;
-+}
-+
-+static int ipheth_close(struct net_device *net)
-+{
-+      struct ipheth_device *dev = netdev_priv(net);
-+
-+      cancel_delayed_work_sync(&dev->carrier_work);
-+      netif_stop_queue(net);
-+      return 0;
-+}
-+
-+static int ipheth_tx(struct sk_buff *skb, struct net_device *net)
-+{
-+      struct ipheth_device *dev = netdev_priv(net);
-+      struct usb_device *udev = dev->udev;
-+      int retval;
-+
-+      /* Paranoid */
-+      if (skb->len > IPHETH_BUF_SIZE) {
-+              WARN(1, "%s: skb too large: %d bytes\n", __func__, skb->len);
-+              dev->net->stats.tx_dropped++;
-+              dev_kfree_skb_irq(skb);
-+              return NETDEV_TX_OK;
-+      }
-+
-+      memcpy(dev->tx_buf, skb->data, skb->len);
-+      if (skb->len < IPHETH_BUF_SIZE)
-+              memset(dev->tx_buf + skb->len, 0, IPHETH_BUF_SIZE - skb->len);
-+
-+      usb_fill_bulk_urb(dev->tx_urb, udev,
-+                        usb_sndbulkpipe(udev, dev->bulk_out),
-+                        dev->tx_buf, IPHETH_BUF_SIZE,
-+                        ipheth_sndbulk_callback,
-+                        dev);
-+      dev->tx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
-+
-+      retval = usb_submit_urb(dev->tx_urb, GFP_ATOMIC);
-+      if (retval) {
-+              dev_err(&dev->intf->dev, "%s: usb_submit_urb: %d\n",
-+                      __func__, retval);
-+              dev->net->stats.tx_errors++;
-+              dev_kfree_skb_irq(skb);
-+      } else {
-+              dev->tx_skb = skb;
-+
-+              dev->net->stats.tx_packets++;
-+              dev->net->stats.tx_bytes += skb->len;
-+              netif_stop_queue(net);
-+      }
-+
-+      return NETDEV_TX_OK;
-+}
-+
-+static void ipheth_tx_timeout(struct net_device *net)
-+{
-+      struct ipheth_device *dev = netdev_priv(net);
-+
-+      dev_err(&dev->intf->dev, "%s: TX timeout\n", __func__);
-+      dev->net->stats.tx_errors++;
-+      usb_unlink_urb(dev->tx_urb);
-+}
-+
-+static u32 ipheth_ethtool_op_get_link(struct net_device *net)
-+{
-+      struct ipheth_device *dev = netdev_priv(net);
-+      return netif_carrier_ok(dev->net);
-+}
-+
-+static const struct ethtool_ops ops = {
-+      .get_link = ipheth_ethtool_op_get_link
-+};
-+
-+static const struct net_device_ops ipheth_netdev_ops = {
-+      .ndo_open = ipheth_open,
-+      .ndo_stop = ipheth_close,
-+      .ndo_start_xmit = ipheth_tx,
-+      .ndo_tx_timeout = ipheth_tx_timeout,
-+};
-+
-+static int ipheth_probe(struct usb_interface *intf,
-+                      const struct usb_device_id *id)
-+{
-+      struct usb_device *udev = interface_to_usbdev(intf);
-+      struct usb_host_interface *hintf;
-+      struct usb_endpoint_descriptor *endp;
-+      struct ipheth_device *dev;
-+      struct net_device *netdev;
-+      int i;
-+      int retval;
-+
-+      netdev = alloc_etherdev(sizeof(struct ipheth_device));
-+      if (!netdev)
-+              return -ENOMEM;
-+
-+      netdev->netdev_ops = &ipheth_netdev_ops;
-+      netdev->watchdog_timeo = IPHETH_TX_TIMEOUT;
-+      strcpy(netdev->name, "eth%d");
-+
-+      dev = netdev_priv(netdev);
-+      dev->udev = udev;
-+      dev->net = netdev;
-+      dev->intf = intf;
-+
-+      /* Set up endpoints */
-+      hintf = usb_altnum_to_altsetting(intf, IPHETH_ALT_INTFNUM);
-+      if (hintf == NULL) {
-+              retval = -ENODEV;
-+              dev_err(&intf->dev, "Unable to find alternate settings interface\n");
-+              goto err_endpoints;
-+      }
-+
-+      for (i = 0; i < hintf->desc.bNumEndpoints; i++) {
-+              endp = &hintf->endpoint[i].desc;
-+              if (usb_endpoint_is_bulk_in(endp))
-+                      dev->bulk_in = endp->bEndpointAddress;
-+              else if (usb_endpoint_is_bulk_out(endp))
-+                      dev->bulk_out = endp->bEndpointAddress;
-+      }
-+      if (!(dev->bulk_in && dev->bulk_out)) {
-+              retval = -ENODEV;
-+              dev_err(&intf->dev, "Unable to find endpoints\n");
-+              goto err_endpoints;
-+      }
-+
-+      dev->ctrl_buf = kmalloc(IPHETH_CTRL_BUF_SIZE, GFP_KERNEL);
-+      if (dev->ctrl_buf == NULL) {
-+              retval = -ENOMEM;
-+              goto err_alloc_ctrl_buf;
-+      }
-+
-+      retval = ipheth_get_macaddr(dev);
-+      if (retval)
-+              goto err_get_macaddr;
-+
-+      INIT_DELAYED_WORK(&dev->carrier_work, ipheth_carrier_check_work);
-+
-+      retval = ipheth_alloc_urbs(dev);
-+      if (retval) {
-+              dev_err(&intf->dev, "error allocating urbs: %d\n", retval);
-+              goto err_alloc_urbs;
-+      }
-+
-+      usb_set_intfdata(intf, dev);
-+
-+      SET_NETDEV_DEV(netdev, &intf->dev);
-+      netdev->ethtool_ops = &ops;
-+
-+      retval = register_netdev(netdev);
-+      if (retval) {
-+              dev_err(&intf->dev, "error registering netdev: %d\n", retval);
-+              retval = -EIO;
-+              goto err_register_netdev;
-+      }
-+
-+      dev_info(&intf->dev, "Apple iPhone USB Ethernet device attached\n");
-+      return 0;
-+
-+err_register_netdev:
-+      ipheth_free_urbs(dev);
-+err_alloc_urbs:
-+err_get_macaddr:
-+err_alloc_ctrl_buf:
-+      kfree(dev->ctrl_buf);
-+err_endpoints:
-+      free_netdev(netdev);
-+      return retval;
-+}
-+
-+static void ipheth_disconnect(struct usb_interface *intf)
-+{
-+      struct ipheth_device *dev;
-+
-+      dev = usb_get_intfdata(intf);
-+      if (dev != NULL) {
-+              unregister_netdev(dev->net);
-+              ipheth_kill_urbs(dev);
-+              ipheth_free_urbs(dev);
-+              kfree(dev->ctrl_buf);
-+              free_netdev(dev->net);
-+      }
-+      usb_set_intfdata(intf, NULL);
-+      dev_info(&intf->dev, "Apple iPhone USB Ethernet now disconnected\n");
-+}
-+
-+static struct usb_driver ipheth_driver = {
-+      .name =         "ipheth",
-+      .probe =        ipheth_probe,
-+      .disconnect =   ipheth_disconnect,
-+      .id_table =     ipheth_table,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(ipheth_driver);
-+
-+MODULE_AUTHOR("Diego Giagio <diego@giagio.com>");
-+MODULE_DESCRIPTION("Apple iPhone USB Ethernet driver");
-+MODULE_LICENSE("Dual BSD/GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/kalmia.c backports-4.2.6-1/drivers/net/usb/kalmia.c
---- backports-4.2.6-1.org/drivers/net/usb/kalmia.c     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/kalmia.c 2016-06-28 14:35:17.985307220 +0200
-@@ -0,0 +1,366 @@
-+/*
-+ * USB network interface driver for Samsung Kalmia based LTE USB modem like the
-+ * Samsung GT-B3730 and GT-B3710.
-+ *
-+ * Copyright (C) 2011 Marius Bjoernstad Kotsbak <marius@kotsbak.com>
-+ *
-+ * Sponsored by Quicklink Video Distribution Services Ltd.
-+ *
-+ * Based on the cdc_eem module.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ctype.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/crc32.h>
-+#include <linux/usb/cdc.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/gfp.h>
-+
-+/*
-+ * The Samsung Kalmia based LTE USB modems have a CDC ACM port for modem control
-+ * handled by the "option" module and an ethernet data port handled by this
-+ * module.
-+ *
-+ * The stick must first be switched into modem mode by usb_modeswitch
-+ * or similar tool. Then the modem gets sent two initialization packets by
-+ * this module, which gives the MAC address of the device. User space can then
-+ * connect the modem using AT commands through the ACM port and then use
-+ * DHCP on the network interface exposed by this module. Network packets are
-+ * sent to and from the modem in a proprietary format discovered after watching
-+ * the behavior of the windows driver for the modem.
-+ *
-+ * More information about the use of the modem is available in usb_modeswitch
-+ * forum and the project page:
-+ *
-+ * http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?t=465
-+ * https://github.com/mkotsbak/Samsung-GT-B3730-linux-driver
-+ */
-+
-+/* #define    DEBUG */
-+/* #define    VERBOSE */
-+
-+#define KALMIA_HEADER_LENGTH 6
-+#define KALMIA_ALIGN_SIZE 4
-+#define KALMIA_USB_TIMEOUT 10000
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static int
-+kalmia_send_init_packet(struct usbnet *dev, u8 *init_msg, u8 init_msg_len,
-+      u8 *buffer, u8 expected_len)
-+{
-+      int act_len;
-+      int status;
-+
-+      netdev_dbg(dev->net, "Sending init packet");
-+
-+      status = usb_bulk_msg(dev->udev, usb_sndbulkpipe(dev->udev, 0x02),
-+              init_msg, init_msg_len, &act_len, KALMIA_USB_TIMEOUT);
-+      if (status != 0) {
-+              netdev_err(dev->net,
-+                      "Error sending init packet. Status %i, length %i\n",
-+                      status, act_len);
-+              return status;
-+      }
-+      else if (act_len != init_msg_len) {
-+              netdev_err(dev->net,
-+                      "Did not send all of init packet. Bytes sent: %i",
-+                      act_len);
-+      }
-+      else {
-+              netdev_dbg(dev->net, "Successfully sent init packet.");
-+      }
-+
-+      status = usb_bulk_msg(dev->udev, usb_rcvbulkpipe(dev->udev, 0x81),
-+              buffer, expected_len, &act_len, KALMIA_USB_TIMEOUT);
-+
-+      if (status != 0)
-+              netdev_err(dev->net,
-+                      "Error receiving init result. Status %i, length %i\n",
-+                      status, act_len);
-+      else if (act_len != expected_len)
-+              netdev_err(dev->net, "Unexpected init result length: %i\n",
-+                      act_len);
-+
-+      return status;
-+}
-+
-+static int
-+kalmia_init_and_get_ethernet_addr(struct usbnet *dev, u8 *ethernet_addr)
-+{
-+      static const char init_msg_1[] =
-+              { 0x57, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
-+              0x00, 0x00 };
-+      static const char init_msg_2[] =
-+              { 0x57, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf4,
-+              0x00, 0x00 };
-+      static const int buflen = 28;
-+      char *usb_buf;
-+      int status;
-+
-+      usb_buf = kmalloc(buflen, GFP_DMA | GFP_KERNEL);
-+      if (!usb_buf)
-+              return -ENOMEM;
-+
-+      memcpy(usb_buf, init_msg_1, 12);
-+      status = kalmia_send_init_packet(dev, usb_buf, sizeof(init_msg_1)
-+              / sizeof(init_msg_1[0]), usb_buf, 24);
-+      if (status != 0)
-+              return status;
-+
-+      memcpy(usb_buf, init_msg_2, 12);
-+      status = kalmia_send_init_packet(dev, usb_buf, sizeof(init_msg_2)
-+              / sizeof(init_msg_2[0]), usb_buf, 28);
-+      if (status != 0)
-+              return status;
-+
-+      memcpy(ethernet_addr, usb_buf + 10, ETH_ALEN);
-+
-+      kfree(usb_buf);
-+      return status;
-+}
-+
-+static int
-+kalmia_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int status;
-+      u8 ethernet_addr[ETH_ALEN];
-+
-+      /* Don't bind to AT command interface */
-+      if (intf->cur_altsetting->desc.bInterfaceClass != USB_CLASS_VENDOR_SPEC)
-+              return -EINVAL;
-+
-+      dev->in = usb_rcvbulkpipe(dev->udev, 0x81 & USB_ENDPOINT_NUMBER_MASK);
-+      dev->out = usb_sndbulkpipe(dev->udev, 0x02 & USB_ENDPOINT_NUMBER_MASK);
-+      dev->status = NULL;
-+
-+      dev->net->hard_header_len += KALMIA_HEADER_LENGTH;
-+      dev->hard_mtu = 1400;
-+      dev->rx_urb_size = dev->hard_mtu * 10; // Found as optimal after testing
-+
-+      status = kalmia_init_and_get_ethernet_addr(dev, ethernet_addr);
-+
-+      if (status < 0) {
-+              usb_set_intfdata(intf, NULL);
-+              usb_driver_release_interface(driver_of(intf), intf);
-+              return status;
-+      }
-+
-+      memcpy(dev->net->dev_addr, ethernet_addr, ETH_ALEN);
-+
-+      return status;
-+}
-+
-+static struct sk_buff *
-+kalmia_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
-+{
-+      struct sk_buff *skb2 = NULL;
-+      u16 content_len;
-+      unsigned char *header_start;
-+      unsigned char ether_type_1, ether_type_2;
-+      u8 remainder, padlen = 0;
-+
-+      if (!skb_cloned(skb)) {
-+              int headroom = skb_headroom(skb);
-+              int tailroom = skb_tailroom(skb);
-+
-+              if ((tailroom >= KALMIA_ALIGN_SIZE) && (headroom
-+                      >= KALMIA_HEADER_LENGTH))
-+                      goto done;
-+
-+              if ((headroom + tailroom) > (KALMIA_HEADER_LENGTH
-+                      + KALMIA_ALIGN_SIZE)) {
-+                      skb->data = memmove(skb->head + KALMIA_HEADER_LENGTH,
-+                              skb->data, skb->len);
-+                      skb_set_tail_pointer(skb, skb->len);
-+                      goto done;
-+              }
-+      }
-+
-+      skb2 = skb_copy_expand(skb, KALMIA_HEADER_LENGTH,
-+              KALMIA_ALIGN_SIZE, flags);
-+      if (!skb2)
-+              return NULL;
-+
-+      dev_kfree_skb_any(skb);
-+      skb = skb2;
-+
-+done:
-+      header_start = skb_push(skb, KALMIA_HEADER_LENGTH);
-+      ether_type_1 = header_start[KALMIA_HEADER_LENGTH + 12];
-+      ether_type_2 = header_start[KALMIA_HEADER_LENGTH + 13];
-+
-+      netdev_dbg(dev->net, "Sending etherType: %02x%02x", ether_type_1,
-+              ether_type_2);
-+
-+      /* According to empiric data for data packages */
-+      header_start[0] = 0x57;
-+      header_start[1] = 0x44;
-+      content_len = skb->len - KALMIA_HEADER_LENGTH;
-+
-+      put_unaligned_le16(content_len, &header_start[2]);
-+      header_start[4] = ether_type_1;
-+      header_start[5] = ether_type_2;
-+
-+      /* Align to 4 bytes by padding with zeros */
-+      remainder = skb->len % KALMIA_ALIGN_SIZE;
-+      if (remainder > 0) {
-+              padlen = KALMIA_ALIGN_SIZE - remainder;
-+              memset(skb_put(skb, padlen), 0, padlen);
-+      }
-+
-+      netdev_dbg(dev->net,
-+              "Sending package with length %i and padding %i. Header: %6phC.",
-+              content_len, padlen, header_start);
-+
-+      return skb;
-+}
-+
-+static int
-+kalmia_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      /*
-+       * Our task here is to strip off framing, leaving skb with one
-+       * data frame for the usbnet framework code to process.
-+       */
-+      static const u8 HEADER_END_OF_USB_PACKET[] =
-+              { 0x57, 0x5a, 0x00, 0x00, 0x08, 0x00 };
-+      static const u8 EXPECTED_UNKNOWN_HEADER_1[] =
-+              { 0x57, 0x43, 0x1e, 0x00, 0x15, 0x02 };
-+      static const u8 EXPECTED_UNKNOWN_HEADER_2[] =
-+              { 0x57, 0x50, 0x0e, 0x00, 0x00, 0x00 };
-+      int i = 0;
-+
-+      /* incomplete header? */
-+      if (skb->len < KALMIA_HEADER_LENGTH)
-+              return 0;
-+
-+      do {
-+              struct sk_buff *skb2 = NULL;
-+              u8 *header_start;
-+              u16 usb_packet_length, ether_packet_length;
-+              int is_last;
-+
-+              header_start = skb->data;
-+
-+              if (unlikely(header_start[0] != 0x57 || header_start[1] != 0x44)) {
-+                      if (!memcmp(header_start, EXPECTED_UNKNOWN_HEADER_1,
-+                              sizeof(EXPECTED_UNKNOWN_HEADER_1)) || !memcmp(
-+                              header_start, EXPECTED_UNKNOWN_HEADER_2,
-+                              sizeof(EXPECTED_UNKNOWN_HEADER_2))) {
-+                              netdev_dbg(dev->net,
-+                                      "Received expected unknown frame header: %6phC. Package length: %i\n",
-+                                      header_start,
-+                                      skb->len - KALMIA_HEADER_LENGTH);
-+                      }
-+                      else {
-+                              netdev_err(dev->net,
-+                                      "Received unknown frame header: %6phC. Package length: %i\n",
-+                                      header_start,
-+                                      skb->len - KALMIA_HEADER_LENGTH);
-+                              return 0;
-+                      }
-+              }
-+              else
-+                      netdev_dbg(dev->net,
-+                              "Received header: %6phC. Package length: %i\n",
-+                              header_start, skb->len - KALMIA_HEADER_LENGTH);
-+
-+              /* subtract start header and end header */
-+              usb_packet_length = skb->len - (2 * KALMIA_HEADER_LENGTH);
-+              ether_packet_length = get_unaligned_le16(&header_start[2]);
-+              skb_pull(skb, KALMIA_HEADER_LENGTH);
-+
-+              /* Some small packets misses end marker */
-+              if (usb_packet_length < ether_packet_length) {
-+                      ether_packet_length = usb_packet_length
-+                              + KALMIA_HEADER_LENGTH;
-+                      is_last = true;
-+              }
-+              else {
-+                      netdev_dbg(dev->net, "Correct package length #%i", i
-+                              + 1);
-+
-+                      is_last = (memcmp(skb->data + ether_packet_length,
-+                              HEADER_END_OF_USB_PACKET,
-+                              sizeof(HEADER_END_OF_USB_PACKET)) == 0);
-+                      if (!is_last) {
-+                              header_start = skb->data + ether_packet_length;
-+                              netdev_dbg(dev->net,
-+                                      "End header: %6phC. Package length: %i\n",
-+                                      header_start,
-+                                      skb->len - KALMIA_HEADER_LENGTH);
-+                      }
-+              }
-+
-+              if (is_last) {
-+                      skb2 = skb;
-+              }
-+              else {
-+                      skb2 = skb_clone(skb, GFP_ATOMIC);
-+                      if (unlikely(!skb2))
-+                              return 0;
-+              }
-+
-+              skb_trim(skb2, ether_packet_length);
-+
-+              if (is_last) {
-+                      return 1;
-+              }
-+              else {
-+                      usbnet_skb_return(dev, skb2);
-+                      skb_pull(skb, ether_packet_length);
-+              }
-+
-+              i++;
-+      }
-+      while (skb->len);
-+
-+      return 1;
-+}
-+
-+static const struct driver_info kalmia_info = {
-+      .description = "Samsung Kalmia LTE USB dongle",
-+      .flags = FLAG_WWAN,
-+      .bind = kalmia_bind,
-+      .rx_fixup = kalmia_rx_fixup,
-+      .tx_fixup = kalmia_tx_fixup
-+};
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static const struct usb_device_id products[] = {
-+      /* The unswitched USB ID, to get the module auto loaded: */
-+      { USB_DEVICE(0x04e8, 0x689a) },
-+      /* The stick swithed into modem (by e.g. usb_modeswitch): */
-+      { USB_DEVICE(0x04e8, 0x6889),
-+              .driver_info = (unsigned long) &kalmia_info, },
-+      { /* EMPTY == end of list */} };
-+MODULE_DEVICE_TABLE( usb, products);
-+
-+static struct usb_driver kalmia_driver = {
-+      .name = "kalmia",
-+      .id_table = products,
-+      .probe = usbnet_probe,
-+      .disconnect = usbnet_disconnect,
-+      .suspend = usbnet_suspend,
-+      .resume = usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(kalmia_driver);
-+
-+MODULE_AUTHOR("Marius Bjoernstad Kotsbak <marius@kotsbak.com>");
-+MODULE_DESCRIPTION("Samsung Kalmia USB network driver");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/kaweth.c backports-4.2.6-1/drivers/net/usb/kaweth.c
---- backports-4.2.6-1.org/drivers/net/usb/kaweth.c     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/kaweth.c 2016-06-28 14:35:17.988640553 +0200
-@@ -0,0 +1,1331 @@
-+/****************************************************************
-+ *
-+ *     kaweth.c - driver for KL5KUSB101 based USB->Ethernet
-+ *
-+ *     (c) 2000 Interlan Communications
-+ *     (c) 2000 Stephane Alnet
-+ *     (C) 2001 Brad Hards
-+ *     (C) 2002 Oliver Neukum
-+ *
-+ *     Original author: The Zapman <zapman@interlan.net>
-+ *     Inspired by, and much credit goes to Michael Rothwell
-+ *     <rothwell@interlan.net> for the test equipment, help, and patience
-+ *     Based off of (and with thanks to) Petko Manolov's pegaus.c driver.
-+ *     Also many thanks to Joel Silverman and Ed Surprenant at Kawasaki
-+ *     for providing the firmware and driver resources.
-+ *
-+ *     This program is free software; you can redistribute it and/or
-+ *     modify it under the terms of the GNU General Public License as
-+ *     published by the Free Software Foundation; either version 2, or
-+ *     (at your option) any later version.
-+ *
-+ *     This program is distributed in the hope that it will be useful,
-+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *     GNU General Public License for more details.
-+ *
-+ *     You should have received a copy of the GNU General Public License
-+ *     along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ *
-+ ****************************************************************/
-+
-+/* TODO:
-+ * Develop test procedures for USB net interfaces
-+ * Run test procedures
-+ * Fix bugs from previous two steps
-+ * Snoop other OSs for any tricks we're not doing
-+ * Reduce arbitrary timeouts
-+ * Smart multicast support
-+ * Temporary MAC change support
-+ * Tunable SOFs parameter - ioctl()?
-+ * Ethernet stats collection
-+ * Code formatting improvements
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+#include <linux/string.h>
-+#include <linux/delay.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/usb.h>
-+#include <linux/types.h>
-+#include <linux/ethtool.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/wait.h>
-+#include <linux/firmware.h>
-+#include <asm/uaccess.h>
-+#include <asm/byteorder.h>
-+
-+#undef DEBUG
-+
-+#define KAWETH_MTU                    1514
-+#define KAWETH_BUF_SIZE                       1664
-+#define KAWETH_TX_TIMEOUT             (5 * HZ)
-+#define KAWETH_SCRATCH_SIZE           32
-+#define KAWETH_FIRMWARE_BUF_SIZE      4096
-+#define KAWETH_CONTROL_TIMEOUT                (30000)
-+
-+#define KAWETH_STATUS_BROKEN          0x0000001
-+#define KAWETH_STATUS_CLOSING         0x0000002
-+#define KAWETH_STATUS_SUSPENDING      0x0000004
-+
-+#define KAWETH_STATUS_BLOCKED (KAWETH_STATUS_CLOSING | KAWETH_STATUS_SUSPENDING)
-+
-+#define KAWETH_PACKET_FILTER_PROMISCUOUS      0x01
-+#define KAWETH_PACKET_FILTER_ALL_MULTICAST    0x02
-+#define KAWETH_PACKET_FILTER_DIRECTED         0x04
-+#define KAWETH_PACKET_FILTER_BROADCAST                0x08
-+#define KAWETH_PACKET_FILTER_MULTICAST                0x10
-+
-+/* Table 7 */
-+#define KAWETH_COMMAND_GET_ETHERNET_DESC      0x00
-+#define KAWETH_COMMAND_MULTICAST_FILTERS        0x01
-+#define KAWETH_COMMAND_SET_PACKET_FILTER      0x02
-+#define KAWETH_COMMAND_STATISTICS               0x03
-+#define KAWETH_COMMAND_SET_TEMP_MAC           0x06
-+#define KAWETH_COMMAND_GET_TEMP_MAC             0x07
-+#define KAWETH_COMMAND_SET_URB_SIZE           0x08
-+#define KAWETH_COMMAND_SET_SOFS_WAIT          0x09
-+#define KAWETH_COMMAND_SCAN                   0xFF
-+
-+#define KAWETH_SOFS_TO_WAIT                   0x05
-+
-+#define INTBUFFERSIZE                         4
-+
-+#define STATE_OFFSET                          0
-+#define STATE_MASK                            0x40
-+#define       STATE_SHIFT                             5
-+
-+#define IS_BLOCKED(s) (s & KAWETH_STATUS_BLOCKED)
-+
-+
-+MODULE_AUTHOR("Michael Zappe <zapman@interlan.net>, Stephane Alnet <stephane@u-picardie.fr>, Brad Hards <bhards@bigpond.net.au> and Oliver Neukum <oliver@neukum.org>");
-+MODULE_DESCRIPTION("KL5USB101 USB Ethernet driver");
-+MODULE_LICENSE("GPL");
-+MODULE_FIRMWARE("kaweth/new_code.bin");
-+MODULE_FIRMWARE("kaweth/new_code_fix.bin");
-+MODULE_FIRMWARE("kaweth/trigger_code.bin");
-+MODULE_FIRMWARE("kaweth/trigger_code_fix.bin");
-+
-+static const char driver_name[] = "kaweth";
-+
-+static int kaweth_probe(
-+              struct usb_interface *intf,
-+              const struct usb_device_id *id  /* from id_table */
-+      );
-+static void kaweth_disconnect(struct usb_interface *intf);
-+static int kaweth_internal_control_msg(struct usb_device *usb_dev,
-+                                     unsigned int pipe,
-+                                     struct usb_ctrlrequest *cmd, void *data,
-+                                     int len, int timeout);
-+static int kaweth_suspend(struct usb_interface *intf, pm_message_t message);
-+static int kaweth_resume(struct usb_interface *intf);
-+
-+/****************************************************************
-+ *     usb_device_id
-+ ****************************************************************/
-+static struct usb_device_id usb_klsi_table[] = {
-+      { USB_DEVICE(0x03e8, 0x0008) }, /* AOX Endpoints USB Ethernet */
-+      { USB_DEVICE(0x04bb, 0x0901) }, /* I-O DATA USB-ET/T */
-+      { USB_DEVICE(0x0506, 0x03e8) }, /* 3Com 3C19250 */
-+      { USB_DEVICE(0x0506, 0x11f8) }, /* 3Com 3C460 */
-+      { USB_DEVICE(0x0557, 0x2002) }, /* ATEN USB Ethernet */
-+      { USB_DEVICE(0x0557, 0x4000) }, /* D-Link DSB-650C */
-+      { USB_DEVICE(0x0565, 0x0002) }, /* Peracom Enet */
-+      { USB_DEVICE(0x0565, 0x0003) }, /* Optus@Home UEP1045A */
-+      { USB_DEVICE(0x0565, 0x0005) }, /* Peracom Enet2 */
-+      { USB_DEVICE(0x05e9, 0x0008) }, /* KLSI KL5KUSB101B */
-+      { USB_DEVICE(0x05e9, 0x0009) }, /* KLSI KL5KUSB101B (Board change) */
-+      { USB_DEVICE(0x066b, 0x2202) }, /* Linksys USB10T */
-+      { USB_DEVICE(0x06e1, 0x0008) }, /* ADS USB-10BT */
-+      { USB_DEVICE(0x06e1, 0x0009) }, /* ADS USB-10BT */
-+      { USB_DEVICE(0x0707, 0x0100) }, /* SMC 2202USB */
-+      { USB_DEVICE(0x07aa, 0x0001) }, /* Correga K.K. */
-+      { USB_DEVICE(0x07b8, 0x4000) }, /* D-Link DU-E10 */
-+      { USB_DEVICE(0x07c9, 0xb010) }, /* Allied Telesyn AT-USB10 USB Ethernet Adapter */
-+      { USB_DEVICE(0x0846, 0x1001) }, /* NetGear EA-101 */
-+      { USB_DEVICE(0x0846, 0x1002) }, /* NetGear EA-101 */
-+      { USB_DEVICE(0x085a, 0x0008) }, /* PortGear Ethernet Adapter */
-+      { USB_DEVICE(0x085a, 0x0009) }, /* PortGear Ethernet Adapter */
-+      { USB_DEVICE(0x087d, 0x5704) }, /* Jaton USB Ethernet Device Adapter */
-+      { USB_DEVICE(0x0951, 0x0008) }, /* Kingston Technology USB Ethernet Adapter */
-+      { USB_DEVICE(0x095a, 0x3003) }, /* Portsmith Express Ethernet Adapter */
-+      { USB_DEVICE(0x10bd, 0x1427) }, /* ASANTE USB To Ethernet Adapter */
-+      { USB_DEVICE(0x1342, 0x0204) }, /* Mobility USB-Ethernet Adapter */
-+      { USB_DEVICE(0x13d2, 0x0400) }, /* Shark Pocket Adapter */
-+      { USB_DEVICE(0x1485, 0x0001) }, /* Silicom U2E */
-+      { USB_DEVICE(0x1485, 0x0002) }, /* Psion Dacom Gold Port Ethernet */
-+      { USB_DEVICE(0x1645, 0x0005) }, /* Entrega E45 */
-+      { USB_DEVICE(0x1645, 0x0008) }, /* Entrega USB Ethernet Adapter */
-+      { USB_DEVICE(0x1645, 0x8005) }, /* PortGear Ethernet Adapter */
-+      { USB_DEVICE(0x1668, 0x0323) }, /* Actiontec USB Ethernet */
-+      { USB_DEVICE(0x2001, 0x4000) }, /* D-link DSB-650C */
-+      {} /* Null terminator */
-+};
-+
-+MODULE_DEVICE_TABLE (usb, usb_klsi_table);
-+
-+/****************************************************************
-+ *     kaweth_driver
-+ ****************************************************************/
-+static struct usb_driver kaweth_driver = {
-+      .name =         driver_name,
-+      .probe =        kaweth_probe,
-+      .disconnect =   kaweth_disconnect,
-+      .suspend =      kaweth_suspend,
-+      .resume =       kaweth_resume,
-+      .id_table =     usb_klsi_table,
-+      .supports_autosuspend = 1,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+typedef __u8 eth_addr_t[6];
-+
-+/****************************************************************
-+ *     usb_eth_dev
-+ ****************************************************************/
-+struct usb_eth_dev {
-+      char *name;
-+      __u16 vendor;
-+      __u16 device;
-+      void *pdata;
-+};
-+
-+/****************************************************************
-+ *     kaweth_ethernet_configuration
-+ *     Refer Table 8
-+ ****************************************************************/
-+struct kaweth_ethernet_configuration
-+{
-+      __u8 size;
-+      __u8 reserved1;
-+      __u8 reserved2;
-+      eth_addr_t hw_addr;
-+      __u32 statistics_mask;
-+      __le16 segment_size;
-+      __u16 max_multicast_filters;
-+      __u8 reserved3;
-+} __packed;
-+
-+/****************************************************************
-+ *     kaweth_device
-+ ****************************************************************/
-+struct kaweth_device
-+{
-+      spinlock_t device_lock;
-+
-+      __u32 status;
-+      int end;
-+      int suspend_lowmem_rx;
-+      int suspend_lowmem_ctrl;
-+      int linkstate;
-+      int opened;
-+      struct delayed_work lowmem_work;
-+
-+      struct usb_device *dev;
-+      struct usb_interface *intf;
-+      struct net_device *net;
-+      wait_queue_head_t term_wait;
-+
-+      struct urb *rx_urb;
-+      struct urb *tx_urb;
-+      struct urb *irq_urb;
-+
-+      dma_addr_t intbufferhandle;
-+      __u8 *intbuffer;
-+      dma_addr_t rxbufferhandle;
-+      __u8 *rx_buf;
-+
-+      
-+      struct sk_buff *tx_skb;
-+
-+      __u8 *firmware_buf;
-+      __u8 scratch[KAWETH_SCRATCH_SIZE];
-+      __u16 packet_filter_bitmap;
-+
-+      struct kaweth_ethernet_configuration configuration;
-+
-+      struct net_device_stats stats;
-+};
-+
-+/****************************************************************
-+ *     kaweth_control
-+ ****************************************************************/
-+static int kaweth_control(struct kaweth_device *kaweth,
-+                        unsigned int pipe,
-+                        __u8 request,
-+                        __u8 requesttype,
-+                        __u16 value,
-+                        __u16 index,
-+                        void *data,
-+                        __u16 size,
-+                        int timeout)
-+{
-+      struct usb_ctrlrequest *dr;
-+      int retval;
-+
-+      netdev_dbg(kaweth->net, "kaweth_control()\n");
-+
-+      if(in_interrupt()) {
-+              netdev_dbg(kaweth->net, "in_interrupt()\n");
-+              return -EBUSY;
-+      }
-+
-+      dr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC);
-+      if (!dr)
-+              return -ENOMEM;
-+
-+      dr->bRequestType = requesttype;
-+      dr->bRequest = request;
-+      dr->wValue = cpu_to_le16(value);
-+      dr->wIndex = cpu_to_le16(index);
-+      dr->wLength = cpu_to_le16(size);
-+
-+      retval = kaweth_internal_control_msg(kaweth->dev,
-+                                           pipe,
-+                                           dr,
-+                                           data,
-+                                           size,
-+                                           timeout);
-+
-+      kfree(dr);
-+      return retval;
-+}
-+
-+/****************************************************************
-+ *     kaweth_read_configuration
-+ ****************************************************************/
-+static int kaweth_read_configuration(struct kaweth_device *kaweth)
-+{
-+      int retval;
-+
-+      netdev_dbg(kaweth->net, "Reading kaweth configuration\n");
-+
-+      retval = kaweth_control(kaweth,
-+                              usb_rcvctrlpipe(kaweth->dev, 0),
-+                              KAWETH_COMMAND_GET_ETHERNET_DESC,
-+                              USB_TYPE_VENDOR | USB_DIR_IN | USB_RECIP_DEVICE,
-+                              0,
-+                              0,
-+                              (void *)&kaweth->configuration,
-+                              sizeof(kaweth->configuration),
-+                              KAWETH_CONTROL_TIMEOUT);
-+
-+      return retval;
-+}
-+
-+/****************************************************************
-+ *     kaweth_set_urb_size
-+ ****************************************************************/
-+static int kaweth_set_urb_size(struct kaweth_device *kaweth, __u16 urb_size)
-+{
-+      int retval;
-+
-+      netdev_dbg(kaweth->net, "Setting URB size to %d\n", (unsigned)urb_size);
-+
-+      retval = kaweth_control(kaweth,
-+                              usb_sndctrlpipe(kaweth->dev, 0),
-+                              KAWETH_COMMAND_SET_URB_SIZE,
-+                              USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
-+                              urb_size,
-+                              0,
-+                              (void *)&kaweth->scratch,
-+                              0,
-+                              KAWETH_CONTROL_TIMEOUT);
-+
-+      return retval;
-+}
-+
-+/****************************************************************
-+ *     kaweth_set_sofs_wait
-+ ****************************************************************/
-+static int kaweth_set_sofs_wait(struct kaweth_device *kaweth, __u16 sofs_wait)
-+{
-+      int retval;
-+
-+      netdev_dbg(kaweth->net, "Set SOFS wait to %d\n", (unsigned)sofs_wait);
-+
-+      retval = kaweth_control(kaweth,
-+                              usb_sndctrlpipe(kaweth->dev, 0),
-+                              KAWETH_COMMAND_SET_SOFS_WAIT,
-+                              USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
-+                              sofs_wait,
-+                              0,
-+                              (void *)&kaweth->scratch,
-+                              0,
-+                              KAWETH_CONTROL_TIMEOUT);
-+
-+      return retval;
-+}
-+
-+/****************************************************************
-+ *     kaweth_set_receive_filter
-+ ****************************************************************/
-+static int kaweth_set_receive_filter(struct kaweth_device *kaweth,
-+                                   __u16 receive_filter)
-+{
-+      int retval;
-+
-+      netdev_dbg(kaweth->net, "Set receive filter to %d\n",
-+                 (unsigned)receive_filter);
-+
-+      retval = kaweth_control(kaweth,
-+                              usb_sndctrlpipe(kaweth->dev, 0),
-+                              KAWETH_COMMAND_SET_PACKET_FILTER,
-+                              USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
-+                              receive_filter,
-+                              0,
-+                              (void *)&kaweth->scratch,
-+                              0,
-+                              KAWETH_CONTROL_TIMEOUT);
-+
-+      return retval;
-+}
-+
-+/****************************************************************
-+ *     kaweth_download_firmware
-+ ****************************************************************/
-+static int kaweth_download_firmware(struct kaweth_device *kaweth,
-+                                  const char *fwname,
-+                                  __u8 interrupt,
-+                                  __u8 type)
-+{
-+      const struct firmware *fw;
-+      int data_len;
-+      int ret;
-+
-+      ret = request_firmware(&fw, fwname, &kaweth->dev->dev);
-+      if (ret) {
-+              dev_err(&kaweth->intf->dev, "Firmware request failed\n");
-+              return ret;
-+      }
-+
-+      if (fw->size > KAWETH_FIRMWARE_BUF_SIZE) {
-+              dev_err(&kaweth->intf->dev, "Firmware too big: %zu\n",
-+                      fw->size);
-+              release_firmware(fw);
-+              return -ENOSPC;
-+      }
-+      data_len = fw->size;
-+      memcpy(kaweth->firmware_buf, fw->data, fw->size);
-+
-+      release_firmware(fw);
-+
-+      kaweth->firmware_buf[2] = (data_len & 0xFF) - 7;
-+      kaweth->firmware_buf[3] = data_len >> 8;
-+      kaweth->firmware_buf[4] = type;
-+      kaweth->firmware_buf[5] = interrupt;
-+
-+      netdev_dbg(kaweth->net, "High: %i, Low:%i\n", kaweth->firmware_buf[3],
-+                 kaweth->firmware_buf[2]);
-+
-+      netdev_dbg(kaweth->net,
-+                 "Downloading firmware at %p to kaweth device at %p\n",
-+                 kaweth->firmware_buf, kaweth);
-+      netdev_dbg(kaweth->net, "Firmware length: %d\n", data_len);
-+
-+      return kaweth_control(kaweth,
-+                            usb_sndctrlpipe(kaweth->dev, 0),
-+                            KAWETH_COMMAND_SCAN,
-+                            USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
-+                            0,
-+                            0,
-+                            (void *)kaweth->firmware_buf,
-+                            data_len,
-+                            KAWETH_CONTROL_TIMEOUT);
-+}
-+
-+/****************************************************************
-+ *     kaweth_trigger_firmware
-+ ****************************************************************/
-+static int kaweth_trigger_firmware(struct kaweth_device *kaweth,
-+                                 __u8 interrupt)
-+{
-+      kaweth->firmware_buf[0] = 0xB6;
-+      kaweth->firmware_buf[1] = 0xC3;
-+      kaweth->firmware_buf[2] = 0x01;
-+      kaweth->firmware_buf[3] = 0x00;
-+      kaweth->firmware_buf[4] = 0x06;
-+      kaweth->firmware_buf[5] = interrupt;
-+      kaweth->firmware_buf[6] = 0x00;
-+      kaweth->firmware_buf[7] = 0x00;
-+
-+      netdev_dbg(kaweth->net, "Triggering firmware\n");
-+
-+      return kaweth_control(kaweth,
-+                            usb_sndctrlpipe(kaweth->dev, 0),
-+                            KAWETH_COMMAND_SCAN,
-+                            USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
-+                            0,
-+                            0,
-+                            (void *)kaweth->firmware_buf,
-+                            8,
-+                            KAWETH_CONTROL_TIMEOUT);
-+}
-+
-+/****************************************************************
-+ *     kaweth_reset
-+ ****************************************************************/
-+static int kaweth_reset(struct kaweth_device *kaweth)
-+{
-+      int result;
-+
-+      netdev_dbg(kaweth->net, "kaweth_reset(%p)\n", kaweth);
-+      result = usb_reset_configuration(kaweth->dev);
-+      mdelay(10);
-+
-+      netdev_dbg(kaweth->net, "kaweth_reset() returns %d.\n", result);
-+
-+      return result;
-+}
-+
-+static void kaweth_usb_receive(struct urb *);
-+static int kaweth_resubmit_rx_urb(struct kaweth_device *, gfp_t);
-+
-+/****************************************************************
-+      int_callback
-+*****************************************************************/
-+
-+static void kaweth_resubmit_int_urb(struct kaweth_device *kaweth, gfp_t mf)
-+{
-+      int status;
-+
-+      status = usb_submit_urb (kaweth->irq_urb, mf);
-+      if (unlikely(status == -ENOMEM)) {
-+              kaweth->suspend_lowmem_ctrl = 1;
-+              schedule_delayed_work(&kaweth->lowmem_work, HZ/4);
-+      } else {
-+              kaweth->suspend_lowmem_ctrl = 0;
-+      }
-+
-+      if (status)
-+              dev_err(&kaweth->intf->dev,
-+                      "can't resubmit intr, %s-%s, status %d\n",
-+                      kaweth->dev->bus->bus_name,
-+                      kaweth->dev->devpath, status);
-+}
-+
-+static void int_callback(struct urb *u)
-+{
-+      struct kaweth_device *kaweth = u->context;
-+      int act_state;
-+      int status = u->status;
-+
-+      switch (status) {
-+      case 0:                 /* success */
-+              break;
-+      case -ECONNRESET:       /* unlink */
-+      case -ENOENT:
-+      case -ESHUTDOWN:
-+              return;
-+      /* -EPIPE:  should clear the halt */
-+      default:                /* error */
-+              goto resubmit;
-+      }
-+
-+      /* we check the link state to report changes */
-+      if (kaweth->linkstate != (act_state = ( kaweth->intbuffer[STATE_OFFSET] | STATE_MASK) >> STATE_SHIFT)) {
-+              if (act_state)
-+                      netif_carrier_on(kaweth->net);
-+              else
-+                      netif_carrier_off(kaweth->net);
-+
-+              kaweth->linkstate = act_state;
-+      }
-+resubmit:
-+      kaweth_resubmit_int_urb(kaweth, GFP_ATOMIC);
-+}
-+
-+static void kaweth_resubmit_tl(struct work_struct *work)
-+{
-+      struct kaweth_device *kaweth =
-+              container_of(work, struct kaweth_device, lowmem_work.work);
-+
-+      if (IS_BLOCKED(kaweth->status))
-+              return;
-+
-+      if (kaweth->suspend_lowmem_rx)
-+              kaweth_resubmit_rx_urb(kaweth, GFP_NOIO);
-+
-+      if (kaweth->suspend_lowmem_ctrl)
-+              kaweth_resubmit_int_urb(kaweth, GFP_NOIO);
-+}
-+
-+
-+/****************************************************************
-+ *     kaweth_resubmit_rx_urb
-+ ****************************************************************/
-+static int kaweth_resubmit_rx_urb(struct kaweth_device *kaweth,
-+                                              gfp_t mem_flags)
-+{
-+      int result;
-+
-+      usb_fill_bulk_urb(kaweth->rx_urb,
-+                    kaweth->dev,
-+                    usb_rcvbulkpipe(kaweth->dev, 1),
-+                    kaweth->rx_buf,
-+                    KAWETH_BUF_SIZE,
-+                    kaweth_usb_receive,
-+                    kaweth);
-+      kaweth->rx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
-+      kaweth->rx_urb->transfer_dma = kaweth->rxbufferhandle;
-+
-+      if((result = usb_submit_urb(kaweth->rx_urb, mem_flags))) {
-+              if (result == -ENOMEM) {
-+                      kaweth->suspend_lowmem_rx = 1;
-+                      schedule_delayed_work(&kaweth->lowmem_work, HZ/4);
-+              }
-+              dev_err(&kaweth->intf->dev, "resubmitting rx_urb %d failed\n",
-+                      result);
-+      } else {
-+              kaweth->suspend_lowmem_rx = 0;
-+      }
-+
-+      return result;
-+}
-+
-+static void kaweth_async_set_rx_mode(struct kaweth_device *kaweth);
-+
-+/****************************************************************
-+ *     kaweth_usb_receive
-+ ****************************************************************/
-+static void kaweth_usb_receive(struct urb *urb)
-+{
-+      struct device *dev = &urb->dev->dev;
-+      struct kaweth_device *kaweth = urb->context;
-+      struct net_device *net = kaweth->net;
-+      int status = urb->status;
-+
-+      int count = urb->actual_length;
-+      int count2 = urb->transfer_buffer_length;
-+
-+      __u16 pkt_len = le16_to_cpup((__le16 *)kaweth->rx_buf);
-+
-+      struct sk_buff *skb;
-+
-+      if (unlikely(status == -EPIPE)) {
-+              kaweth->stats.rx_errors++;
-+              kaweth->end = 1;
-+              wake_up(&kaweth->term_wait);
-+              dev_dbg(dev, "Status was -EPIPE.\n");
-+              return;
-+      }
-+      if (unlikely(status == -ECONNRESET || status == -ESHUTDOWN)) {
-+              /* we are killed - set a flag and wake the disconnect handler */
-+              kaweth->end = 1;
-+              wake_up(&kaweth->term_wait);
-+              dev_dbg(dev, "Status was -ECONNRESET or -ESHUTDOWN.\n");
-+              return;
-+      }
-+      if (unlikely(status == -EPROTO || status == -ETIME ||
-+                   status == -EILSEQ)) {
-+              kaweth->stats.rx_errors++;
-+              dev_dbg(dev, "Status was -EPROTO, -ETIME, or -EILSEQ.\n");
-+              return;
-+      }
-+      if (unlikely(status == -EOVERFLOW)) {
-+              kaweth->stats.rx_errors++;
-+              dev_dbg(dev, "Status was -EOVERFLOW.\n");
-+      }
-+      spin_lock(&kaweth->device_lock);
-+      if (IS_BLOCKED(kaweth->status)) {
-+              spin_unlock(&kaweth->device_lock);
-+              return;
-+      }
-+      spin_unlock(&kaweth->device_lock);
-+
-+      if(status && status != -EREMOTEIO && count != 1) {
-+              dev_err(&kaweth->intf->dev,
-+                      "%s RX status: %d count: %d packet_len: %d\n",
-+                      net->name, status, count, (int)pkt_len);
-+              kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC);
-+                return;
-+      }
-+
-+      if(kaweth->net && (count > 2)) {
-+              if(pkt_len > (count - 2)) {
-+                      dev_err(&kaweth->intf->dev,
-+                              "Packet length too long for USB frame (pkt_len: %x, count: %x)\n",
-+                              pkt_len, count);
-+                      dev_err(&kaweth->intf->dev, "Packet len & 2047: %x\n",
-+                              pkt_len & 2047);
-+                      dev_err(&kaweth->intf->dev, "Count 2: %x\n", count2);
-+                      kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC);
-+                        return;
-+                }
-+
-+              if(!(skb = dev_alloc_skb(pkt_len+2))) {
-+                      kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC);
-+                        return;
-+              }
-+
-+              skb_reserve(skb, 2);    /* Align IP on 16 byte boundaries */
-+
-+              skb_copy_to_linear_data(skb, kaweth->rx_buf + 2, pkt_len);
-+
-+              skb_put(skb, pkt_len);
-+
-+              skb->protocol = eth_type_trans(skb, net);
-+
-+              netif_rx(skb);
-+
-+              kaweth->stats.rx_packets++;
-+              kaweth->stats.rx_bytes += pkt_len;
-+      }
-+
-+      kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC);
-+}
-+
-+/****************************************************************
-+ *     kaweth_open
-+ ****************************************************************/
-+static int kaweth_open(struct net_device *net)
-+{
-+      struct kaweth_device *kaweth = netdev_priv(net);
-+      int res;
-+
-+      netdev_dbg(kaweth->net, "Opening network device.\n");
-+
-+      res = usb_autopm_get_interface(kaweth->intf);
-+      if (res) {
-+              dev_err(&kaweth->intf->dev, "Interface cannot be resumed.\n");
-+              return -EIO;
-+      }
-+      res = kaweth_resubmit_rx_urb(kaweth, GFP_KERNEL);
-+      if (res)
-+              goto err_out;
-+
-+      usb_fill_int_urb(
-+              kaweth->irq_urb,
-+              kaweth->dev,
-+              usb_rcvintpipe(kaweth->dev, 3),
-+              kaweth->intbuffer,
-+              INTBUFFERSIZE,
-+              int_callback,
-+              kaweth,
-+              250); /* overriding the descriptor */
-+      kaweth->irq_urb->transfer_dma = kaweth->intbufferhandle;
-+      kaweth->irq_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
-+
-+      res = usb_submit_urb(kaweth->irq_urb, GFP_KERNEL);
-+      if (res) {
-+              usb_kill_urb(kaweth->rx_urb);
-+              goto err_out;
-+      }
-+      kaweth->opened = 1;
-+
-+      netif_start_queue(net);
-+
-+      kaweth_async_set_rx_mode(kaweth);
-+      return 0;
-+
-+err_out:
-+      usb_autopm_put_interface(kaweth->intf);
-+      return -EIO;
-+}
-+
-+/****************************************************************
-+ *     kaweth_kill_urbs
-+ ****************************************************************/
-+static void kaweth_kill_urbs(struct kaweth_device *kaweth)
-+{
-+      usb_kill_urb(kaweth->irq_urb);
-+      usb_kill_urb(kaweth->rx_urb);
-+      usb_kill_urb(kaweth->tx_urb);
-+
-+      cancel_delayed_work_sync(&kaweth->lowmem_work);
-+
-+      /* a scheduled work may have resubmitted,
-+         we hit them again */
-+      usb_kill_urb(kaweth->irq_urb);
-+      usb_kill_urb(kaweth->rx_urb);
-+}
-+
-+/****************************************************************
-+ *     kaweth_close
-+ ****************************************************************/
-+static int kaweth_close(struct net_device *net)
-+{
-+      struct kaweth_device *kaweth = netdev_priv(net);
-+
-+      netif_stop_queue(net);
-+      kaweth->opened = 0;
-+
-+      kaweth->status |= KAWETH_STATUS_CLOSING;
-+
-+      kaweth_kill_urbs(kaweth);
-+
-+      kaweth->status &= ~KAWETH_STATUS_CLOSING;
-+
-+      usb_autopm_put_interface(kaweth->intf);
-+
-+      return 0;
-+}
-+
-+static u32 kaweth_get_link(struct net_device *dev)
-+{
-+      struct kaweth_device *kaweth = netdev_priv(dev);
-+
-+      return kaweth->linkstate;
-+}
-+
-+static const struct ethtool_ops ops = {
-+      .get_link       = kaweth_get_link
-+};
-+
-+/****************************************************************
-+ *     kaweth_usb_transmit_complete
-+ ****************************************************************/
-+static void kaweth_usb_transmit_complete(struct urb *urb)
-+{
-+      struct kaweth_device *kaweth = urb->context;
-+      struct sk_buff *skb = kaweth->tx_skb;
-+      int status = urb->status;
-+
-+      if (unlikely(status != 0))
-+              if (status != -ENOENT)
-+                      dev_dbg(&urb->dev->dev, "%s: TX status %d.\n",
-+                              kaweth->net->name, status);
-+
-+      netif_wake_queue(kaweth->net);
-+      dev_kfree_skb_irq(skb);
-+}
-+
-+/****************************************************************
-+ *     kaweth_start_xmit
-+ ****************************************************************/
-+static netdev_tx_t kaweth_start_xmit(struct sk_buff *skb,
-+                                         struct net_device *net)
-+{
-+      struct kaweth_device *kaweth = netdev_priv(net);
-+      __le16 *private_header;
-+
-+      int res;
-+
-+      spin_lock_irq(&kaweth->device_lock);
-+
-+      kaweth_async_set_rx_mode(kaweth);
-+      netif_stop_queue(net);
-+      if (IS_BLOCKED(kaweth->status)) {
-+              goto skip;
-+      }
-+
-+      /* We now decide whether we can put our special header into the sk_buff */
-+      if (skb_cloned(skb) || skb_headroom(skb) < 2) {
-+              /* no such luck - we make our own */
-+              struct sk_buff *copied_skb;
-+              copied_skb = skb_copy_expand(skb, 2, 0, GFP_ATOMIC);
-+              dev_kfree_skb_irq(skb);
-+              skb = copied_skb;
-+              if (!copied_skb) {
-+                      kaweth->stats.tx_errors++;
-+                      netif_start_queue(net);
-+                      spin_unlock_irq(&kaweth->device_lock);
-+                      return NETDEV_TX_OK;
-+              }
-+      }
-+
-+      private_header = (__le16 *)__skb_push(skb, 2);
-+      *private_header = cpu_to_le16(skb->len-2);
-+      kaweth->tx_skb = skb;
-+
-+      usb_fill_bulk_urb(kaweth->tx_urb,
-+                    kaweth->dev,
-+                    usb_sndbulkpipe(kaweth->dev, 2),
-+                    private_header,
-+                    skb->len,
-+                    kaweth_usb_transmit_complete,
-+                    kaweth);
-+      kaweth->end = 0;
-+
-+      if((res = usb_submit_urb(kaweth->tx_urb, GFP_ATOMIC)))
-+      {
-+              dev_warn(&net->dev, "kaweth failed tx_urb %d\n", res);
-+skip:
-+              kaweth->stats.tx_errors++;
-+
-+              netif_start_queue(net);
-+              dev_kfree_skb_irq(skb);
-+      }
-+      else
-+      {
-+              kaweth->stats.tx_packets++;
-+              kaweth->stats.tx_bytes += skb->len;
-+      }
-+
-+      spin_unlock_irq(&kaweth->device_lock);
-+
-+      return NETDEV_TX_OK;
-+}
-+
-+/****************************************************************
-+ *     kaweth_set_rx_mode
-+ ****************************************************************/
-+static void kaweth_set_rx_mode(struct net_device *net)
-+{
-+      struct kaweth_device *kaweth = netdev_priv(net);
-+
-+      __u16 packet_filter_bitmap = KAWETH_PACKET_FILTER_DIRECTED |
-+                                     KAWETH_PACKET_FILTER_BROADCAST |
-+                                   KAWETH_PACKET_FILTER_MULTICAST;
-+
-+      netdev_dbg(net, "Setting Rx mode to %d\n", packet_filter_bitmap);
-+
-+      netif_stop_queue(net);
-+
-+      if (net->flags & IFF_PROMISC) {
-+              packet_filter_bitmap |= KAWETH_PACKET_FILTER_PROMISCUOUS;
-+      }
-+      else if (!netdev_mc_empty(net) || (net->flags & IFF_ALLMULTI)) {
-+              packet_filter_bitmap |= KAWETH_PACKET_FILTER_ALL_MULTICAST;
-+      }
-+
-+      kaweth->packet_filter_bitmap = packet_filter_bitmap;
-+      netif_wake_queue(net);
-+}
-+
-+/****************************************************************
-+ *     kaweth_async_set_rx_mode
-+ ****************************************************************/
-+static void kaweth_async_set_rx_mode(struct kaweth_device *kaweth)
-+{
-+      int result;
-+      __u16 packet_filter_bitmap = kaweth->packet_filter_bitmap;
-+
-+      kaweth->packet_filter_bitmap = 0;
-+      if (packet_filter_bitmap == 0)
-+              return;
-+
-+      if (in_interrupt())
-+              return;
-+
-+      result = kaweth_control(kaweth,
-+                              usb_sndctrlpipe(kaweth->dev, 0),
-+                              KAWETH_COMMAND_SET_PACKET_FILTER,
-+                              USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
-+                              packet_filter_bitmap,
-+                              0,
-+                              (void *)&kaweth->scratch,
-+                              0,
-+                              KAWETH_CONTROL_TIMEOUT);
-+
-+      if(result < 0) {
-+              dev_err(&kaweth->intf->dev, "Failed to set Rx mode: %d\n",
-+                      result);
-+      }
-+      else {
-+              netdev_dbg(kaweth->net, "Set Rx mode to %d\n",
-+                         packet_filter_bitmap);
-+      }
-+}
-+
-+/****************************************************************
-+ *     kaweth_netdev_stats
-+ ****************************************************************/
-+static struct net_device_stats *kaweth_netdev_stats(struct net_device *dev)
-+{
-+      struct kaweth_device *kaweth = netdev_priv(dev);
-+      return &kaweth->stats;
-+}
-+
-+/****************************************************************
-+ *     kaweth_tx_timeout
-+ ****************************************************************/
-+static void kaweth_tx_timeout(struct net_device *net)
-+{
-+      struct kaweth_device *kaweth = netdev_priv(net);
-+
-+      dev_warn(&net->dev, "%s: Tx timed out. Resetting.\n", net->name);
-+      kaweth->stats.tx_errors++;
-+      net->trans_start = jiffies;
-+
-+      usb_unlink_urb(kaweth->tx_urb);
-+}
-+
-+/****************************************************************
-+ *     kaweth_suspend
-+ ****************************************************************/
-+static int kaweth_suspend(struct usb_interface *intf, pm_message_t message)
-+{
-+      struct kaweth_device *kaweth = usb_get_intfdata(intf);
-+      unsigned long flags;
-+
-+      dev_dbg(&intf->dev, "Suspending device\n");
-+      spin_lock_irqsave(&kaweth->device_lock, flags);
-+      kaweth->status |= KAWETH_STATUS_SUSPENDING;
-+      spin_unlock_irqrestore(&kaweth->device_lock, flags);
-+
-+      kaweth_kill_urbs(kaweth);
-+      return 0;
-+}
-+
-+/****************************************************************
-+ *     kaweth_resume
-+ ****************************************************************/
-+static int kaweth_resume(struct usb_interface *intf)
-+{
-+      struct kaweth_device *kaweth = usb_get_intfdata(intf);
-+      unsigned long flags;
-+
-+      dev_dbg(&intf->dev, "Resuming device\n");
-+      spin_lock_irqsave(&kaweth->device_lock, flags);
-+      kaweth->status &= ~KAWETH_STATUS_SUSPENDING;
-+      spin_unlock_irqrestore(&kaweth->device_lock, flags);
-+
-+      if (!kaweth->opened)
-+              return 0;
-+      kaweth_resubmit_rx_urb(kaweth, GFP_NOIO);
-+      kaweth_resubmit_int_urb(kaweth, GFP_NOIO);
-+
-+      return 0;
-+}
-+
-+/****************************************************************
-+ *     kaweth_probe
-+ ****************************************************************/
-+
-+
-+static const struct net_device_ops kaweth_netdev_ops = {
-+      .ndo_open =                     kaweth_open,
-+      .ndo_stop =                     kaweth_close,
-+      .ndo_start_xmit =               kaweth_start_xmit,
-+      .ndo_tx_timeout =               kaweth_tx_timeout,
-+      .ndo_set_rx_mode =              kaweth_set_rx_mode,
-+      .ndo_get_stats =                kaweth_netdev_stats,
-+      .ndo_change_mtu =               eth_change_mtu,
-+      .ndo_set_mac_address =          eth_mac_addr,
-+      .ndo_validate_addr =            eth_validate_addr,
-+};
-+
-+static int kaweth_probe(
-+              struct usb_interface *intf,
-+              const struct usb_device_id *id      /* from id_table */
-+      )
-+{
-+      struct device *dev = &intf->dev;
-+      struct usb_device *udev = interface_to_usbdev(intf);
-+      struct kaweth_device *kaweth;
-+      struct net_device *netdev;
-+      const eth_addr_t bcast_addr = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
-+      int result = 0;
-+
-+      dev_dbg(dev,
-+              "Kawasaki Device Probe (Device number:%d): 0x%4.4x:0x%4.4x:0x%4.4x\n",
-+              udev->devnum, le16_to_cpu(udev->descriptor.idVendor),
-+              le16_to_cpu(udev->descriptor.idProduct),
-+              le16_to_cpu(udev->descriptor.bcdDevice));
-+
-+      dev_dbg(dev, "Device at %p\n", udev);
-+
-+      dev_dbg(dev, "Descriptor length: %x type: %x\n",
-+              (int)udev->descriptor.bLength,
-+              (int)udev->descriptor.bDescriptorType);
-+
-+      netdev = alloc_etherdev(sizeof(*kaweth));
-+      if (!netdev)
-+              return -ENOMEM;
-+
-+      kaweth = netdev_priv(netdev);
-+      kaweth->dev = udev;
-+      kaweth->net = netdev;
-+
-+      spin_lock_init(&kaweth->device_lock);
-+      init_waitqueue_head(&kaweth->term_wait);
-+
-+      dev_dbg(dev, "Resetting.\n");
-+
-+      kaweth_reset(kaweth);
-+
-+      /*
-+       * If high byte of bcdDevice is nonzero, firmware is already
-+       * downloaded. Don't try to do it again, or we'll hang the device.
-+       */
-+
-+      if (le16_to_cpu(udev->descriptor.bcdDevice) >> 8) {
-+              dev_info(dev, "Firmware present in device.\n");
-+      } else {
-+              /* Download the firmware */
-+              dev_info(dev, "Downloading firmware...\n");
-+              kaweth->firmware_buf = (__u8 *)__get_free_page(GFP_KERNEL);
-+              if ((result = kaweth_download_firmware(kaweth,
-+                                                    "kaweth/new_code.bin",
-+                                                    100,
-+                                                    2)) < 0) {
-+                      dev_err(dev, "Error downloading firmware (%d)\n",
-+                              result);
-+                      goto err_fw;
-+              }
-+
-+              if ((result = kaweth_download_firmware(kaweth,
-+                                                    "kaweth/new_code_fix.bin",
-+                                                    100,
-+                                                    3)) < 0) {
-+                      dev_err(dev, "Error downloading firmware fix (%d)\n",
-+                              result);
-+                      goto err_fw;
-+              }
-+
-+              if ((result = kaweth_download_firmware(kaweth,
-+                                                    "kaweth/trigger_code.bin",
-+                                                    126,
-+                                                    2)) < 0) {
-+                      dev_err(dev, "Error downloading trigger code (%d)\n",
-+                              result);
-+                      goto err_fw;
-+
-+              }
-+
-+              if ((result = kaweth_download_firmware(kaweth,
-+                                                    "kaweth/trigger_code_fix.bin",
-+                                                    126,
-+                                                    3)) < 0) {
-+                      dev_err(dev, "Error downloading trigger code fix (%d)\n", result);
-+                      goto err_fw;
-+              }
-+
-+
-+              if ((result = kaweth_trigger_firmware(kaweth, 126)) < 0) {
-+                      dev_err(dev, "Error triggering firmware (%d)\n", result);
-+                      goto err_fw;
-+              }
-+
-+              /* Device will now disappear for a moment...  */
-+              dev_info(dev, "Firmware loaded.  I'll be back...\n");
-+err_fw:
-+              free_page((unsigned long)kaweth->firmware_buf);
-+              free_netdev(netdev);
-+              return -EIO;
-+      }
-+
-+      result = kaweth_read_configuration(kaweth);
-+
-+      if(result < 0) {
-+              dev_err(dev, "Error reading configuration (%d), no net device created\n", result);
-+              goto err_free_netdev;
-+      }
-+
-+      dev_info(dev, "Statistics collection: %x\n", kaweth->configuration.statistics_mask);
-+      dev_info(dev, "Multicast filter limit: %x\n", kaweth->configuration.max_multicast_filters & ((1 << 15) - 1));
-+      dev_info(dev, "MTU: %d\n", le16_to_cpu(kaweth->configuration.segment_size));
-+      dev_info(dev, "Read MAC address %pM\n", kaweth->configuration.hw_addr);
-+
-+      if(!memcmp(&kaweth->configuration.hw_addr,
-+                   &bcast_addr,
-+                 sizeof(bcast_addr))) {
-+              dev_err(dev, "Firmware not functioning properly, no net device created\n");
-+              goto err_free_netdev;
-+      }
-+
-+      if(kaweth_set_urb_size(kaweth, KAWETH_BUF_SIZE) < 0) {
-+              dev_dbg(dev, "Error setting URB size\n");
-+              goto err_free_netdev;
-+      }
-+
-+      if(kaweth_set_sofs_wait(kaweth, KAWETH_SOFS_TO_WAIT) < 0) {
-+              dev_err(dev, "Error setting SOFS wait\n");
-+              goto err_free_netdev;
-+      }
-+
-+      result = kaweth_set_receive_filter(kaweth,
-+                                           KAWETH_PACKET_FILTER_DIRECTED |
-+                                           KAWETH_PACKET_FILTER_BROADCAST |
-+                                           KAWETH_PACKET_FILTER_MULTICAST);
-+
-+      if(result < 0) {
-+              dev_err(dev, "Error setting receive filter\n");
-+              goto err_free_netdev;
-+      }
-+
-+      dev_dbg(dev, "Initializing net device.\n");
-+
-+      kaweth->intf = intf;
-+
-+      kaweth->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!kaweth->tx_urb)
-+              goto err_free_netdev;
-+      kaweth->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!kaweth->rx_urb)
-+              goto err_only_tx;
-+      kaweth->irq_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!kaweth->irq_urb)
-+              goto err_tx_and_rx;
-+
-+      kaweth->intbuffer = usb_alloc_coherent( kaweth->dev,
-+                                              INTBUFFERSIZE,
-+                                              GFP_KERNEL,
-+                                              &kaweth->intbufferhandle);
-+      if (!kaweth->intbuffer)
-+              goto err_tx_and_rx_and_irq;
-+      kaweth->rx_buf = usb_alloc_coherent(    kaweth->dev,
-+                                              KAWETH_BUF_SIZE,
-+                                              GFP_KERNEL,
-+                                              &kaweth->rxbufferhandle);
-+      if (!kaweth->rx_buf)
-+              goto err_all_but_rxbuf;
-+
-+      memcpy(netdev->broadcast, &bcast_addr, sizeof(bcast_addr));
-+      memcpy(netdev->dev_addr, &kaweth->configuration.hw_addr,
-+               sizeof(kaweth->configuration.hw_addr));
-+
-+      netdev->netdev_ops = &kaweth_netdev_ops;
-+      netdev->watchdog_timeo = KAWETH_TX_TIMEOUT;
-+      netdev->mtu = le16_to_cpu(kaweth->configuration.segment_size);
-+      netdev->ethtool_ops = &ops;
-+
-+      /* kaweth is zeroed as part of alloc_netdev */
-+      INIT_DELAYED_WORK(&kaweth->lowmem_work, kaweth_resubmit_tl);
-+      usb_set_intfdata(intf, kaweth);
-+
-+#if 0
-+// dma_supported() is deeply broken on almost all architectures
-+      if (dma_supported (dev, 0xffffffffffffffffULL))
-+              kaweth->net->features |= NETIF_F_HIGHDMA;
-+#endif
-+
-+      SET_NETDEV_DEV(netdev, dev);
-+      if (register_netdev(netdev) != 0) {
-+              dev_err(dev, "Error registering netdev.\n");
-+              goto err_intfdata;
-+      }
-+
-+      dev_info(dev, "kaweth interface created at %s\n",
-+               kaweth->net->name);
-+
-+      dev_dbg(dev, "Kaweth probe returning.\n");
-+
-+      return 0;
-+
-+err_intfdata:
-+      usb_set_intfdata(intf, NULL);
-+      usb_free_coherent(kaweth->dev, KAWETH_BUF_SIZE, (void *)kaweth->rx_buf, kaweth->rxbufferhandle);
-+err_all_but_rxbuf:
-+      usb_free_coherent(kaweth->dev, INTBUFFERSIZE, (void *)kaweth->intbuffer, kaweth->intbufferhandle);
-+err_tx_and_rx_and_irq:
-+      usb_free_urb(kaweth->irq_urb);
-+err_tx_and_rx:
-+      usb_free_urb(kaweth->rx_urb);
-+err_only_tx:
-+      usb_free_urb(kaweth->tx_urb);
-+err_free_netdev:
-+      free_netdev(netdev);
-+
-+      return -EIO;
-+}
-+
-+/****************************************************************
-+ *     kaweth_disconnect
-+ ****************************************************************/
-+static void kaweth_disconnect(struct usb_interface *intf)
-+{
-+      struct kaweth_device *kaweth = usb_get_intfdata(intf);
-+      struct net_device *netdev;
-+
-+      dev_info(&intf->dev, "Unregistering\n");
-+
-+      usb_set_intfdata(intf, NULL);
-+      if (!kaweth) {
-+              dev_warn(&intf->dev, "unregistering non-existent device\n");
-+              return;
-+      }
-+      netdev = kaweth->net;
-+
-+      netdev_dbg(kaweth->net, "Unregistering net device\n");
-+      unregister_netdev(netdev);
-+
-+      usb_free_urb(kaweth->rx_urb);
-+      usb_free_urb(kaweth->tx_urb);
-+      usb_free_urb(kaweth->irq_urb);
-+
-+      usb_free_coherent(kaweth->dev, KAWETH_BUF_SIZE, (void *)kaweth->rx_buf, kaweth->rxbufferhandle);
-+      usb_free_coherent(kaweth->dev, INTBUFFERSIZE, (void *)kaweth->intbuffer, kaweth->intbufferhandle);
-+
-+      free_netdev(netdev);
-+}
-+
-+
-+// FIXME this completion stuff is a modified clone of
-+// an OLD version of some stuff in usb.c ...
-+struct usb_api_data {
-+      wait_queue_head_t wqh;
-+      int done;
-+};
-+
-+/*-------------------------------------------------------------------*
-+ * completion handler for compatibility wrappers (sync control/bulk) *
-+ *-------------------------------------------------------------------*/
-+static void usb_api_blocking_completion(struct urb *urb)
-+{
-+        struct usb_api_data *awd = (struct usb_api_data *)urb->context;
-+
-+      awd->done=1;
-+      wake_up(&awd->wqh);
-+}
-+
-+/*-------------------------------------------------------------------*
-+ *                         COMPATIBILITY STUFF                       *
-+ *-------------------------------------------------------------------*/
-+
-+// Starts urb and waits for completion or timeout
-+static int usb_start_wait_urb(struct urb *urb, int timeout, int* actual_length)
-+{
-+      struct usb_api_data awd;
-+        int status;
-+
-+        init_waitqueue_head(&awd.wqh);
-+        awd.done = 0;
-+
-+        urb->context = &awd;
-+        status = usb_submit_urb(urb, GFP_ATOMIC);
-+        if (status) {
-+                // something went wrong
-+                usb_free_urb(urb);
-+                return status;
-+        }
-+
-+      if (!wait_event_timeout(awd.wqh, awd.done, timeout)) {
-+                // timeout
-+                dev_warn(&urb->dev->dev, "usb_control/bulk_msg: timeout\n");
-+                usb_kill_urb(urb);  // remove urb safely
-+                status = -ETIMEDOUT;
-+        }
-+      else {
-+                status = urb->status;
-+      }
-+
-+        if (actual_length) {
-+                *actual_length = urb->actual_length;
-+      }
-+
-+        usb_free_urb(urb);
-+        return status;
-+}
-+
-+/*-------------------------------------------------------------------*/
-+// returns status (negative) or length (positive)
-+static int kaweth_internal_control_msg(struct usb_device *usb_dev,
-+                                     unsigned int pipe,
-+                                     struct usb_ctrlrequest *cmd, void *data,
-+                                     int len, int timeout)
-+{
-+        struct urb *urb;
-+        int retv;
-+        int length = 0; /* shut up GCC */
-+
-+      urb = usb_alloc_urb(0, GFP_ATOMIC);
-+        if (!urb)
-+                return -ENOMEM;
-+
-+        usb_fill_control_urb(urb, usb_dev, pipe, (unsigned char*)cmd, data,
-+                       len, usb_api_blocking_completion, NULL);
-+
-+        retv = usb_start_wait_urb(urb, timeout, &length);
-+        if (retv < 0) {
-+                return retv;
-+      }
-+        else {
-+                return length;
-+      }
-+}
-+
-+module_usb_driver(kaweth_driver);
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/Kconfig backports-4.2.6-1/drivers/net/usb/Kconfig
---- backports-4.2.6-1.org/drivers/net/usb/Kconfig      2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/Kconfig  2016-06-28 14:35:17.991973886 +0200
-@@ -13,7 +13,6 @@
- if USB_NET_DRIVERS
- config USB_CATC
--      depends on n
-       tristate "USB CATC NetMate-based Ethernet device support"
-       depends on m
-       depends on CRC32
-@@ -34,7 +33,6 @@
-         module will be called catc.
- config USB_KAWETH
--      depends on n
-       tristate "USB KLSI KL5USB101-based ethernet device support"
-       depends on m
-       ---help---
-@@ -75,7 +73,6 @@
-         module will be called kaweth.
- config USB_PEGASUS
--      depends on n
-       tristate "USB Pegasus/Pegasus-II based ethernet device support"
-       depends on m
-       select BPAUTO_MII
-@@ -92,7 +89,6 @@
-         module will be called pegasus.
- config USB_RTL8150
--      depends on n
-       tristate "USB RTL8150 based ethernet device support"
-       depends on m
-       select BPAUTO_MII
-@@ -105,7 +101,6 @@
-         module will be called rtl8150.
- config USB_RTL8152
--      depends on n
-       tristate "Realtek RTL8152/RTL8153 Based USB Ethernet Adapters"
-       depends on m
-       select BPAUTO_MII
-@@ -153,7 +148,6 @@
-         module will be called usbnet.
- config USB_NET_AX8817X
--      depends on n
-       tristate "ASIX AX88xxx Based USB 2.0 Ethernet Adapters"
-       depends on m
-       depends on USB_USBNET
-@@ -184,7 +178,6 @@
-         what other networking devices you have in use.
- config USB_NET_AX88179_178A
--      depends on n
-       tristate "ASIX AX88179/178A USB 3.0/2.0 to Gigabit Ethernet"
-       depends on m
-       depends on USB_USBNET
-@@ -233,7 +226,6 @@
-         name is used instead.
- config USB_NET_CDC_EEM
--      depends on n
-       tristate "CDC EEM support"
-       depends on m
-       depends on USB_USBNET
-@@ -269,7 +261,6 @@
-           * Ericsson F5521gw Mobile Broadband Module
- config USB_NET_HUAWEI_CDC_NCM
--      depends on n
-       tristate "Huawei NCM embedded AT channel support"
-       depends on m
-       depends on USB_USBNET
-@@ -305,7 +296,6 @@
-         module will be called cdc_mbim.
- config USB_NET_DM9601
--      depends on n
-       tristate "Davicom DM96xx based USB 10/100 ethernet devices"
-       depends on m
-       depends on USB_USBNET
-@@ -315,7 +305,6 @@
-         based USB 10/100 Ethernet adapters.
- config USB_NET_SR9700
--      depends on n
-       tristate "CoreChip-sz SR9700 based USB 1.1 10/100 ethernet devices"
-       depends on m
-       depends on USB_USBNET
-@@ -325,7 +314,6 @@
-         10/100 Ethernet adapters.
- config USB_NET_SR9800
--      depends on n
-       tristate "CoreChip-sz SR9800 based USB 2.0 10/100 ethernet devices"
-       depends on m
-       depends on USB_USBNET
-@@ -342,7 +330,6 @@
-         module will be called sr9800.
- config USB_NET_SMSC75XX
--      depends on n
-       tristate "SMSC LAN75XX based USB 2.0 gigabit ethernet devices"
-       depends on m
-       depends on USB_USBNET
-@@ -354,7 +341,6 @@
-         Gigabit Ethernet adapters.
- config USB_NET_SMSC95XX
--      depends on n
-       tristate "SMSC LAN95XX based USB 2.0 10/100 ethernet devices"
-       depends on m
-       depends on USB_USBNET
-@@ -366,7 +352,6 @@
-         10/100 Ethernet adapters.
- config USB_NET_GL620A
--      depends on n
-       tristate "GeneSys GL620USB-A based cables"
-       depends on m
-       depends on USB_USBNET
-@@ -377,7 +362,6 @@
-         Note that the half-duplex "GL620USB" is not supported.
- config USB_NET_NET1080
--      depends on n
-       tristate "NetChip 1080 based cables (Laplink, ...)"
-       depends on m
-       default y
-@@ -388,7 +372,6 @@
-         optionally with LEDs that indicate traffic
- config USB_NET_PLUSB
--      depends on n
-       tristate "Prolific PL-2301/2302/25A1 based cables"
-       depends on m
-       # if the handshake/init/reset problems, from original 'plusb',
-@@ -399,7 +382,6 @@
-         with one of these chips.
- config USB_NET_MCS7830
--      depends on n
-       tristate "MosChip MCS7830 based Ethernet adapters"
-       depends on m
-       depends on USB_USBNET
-@@ -425,7 +407,6 @@
-         (and for) Microsoft; it isn't an "Open" ecosystem or market.
- config USB_NET_CDC_SUBSET
--      depends on n
-       tristate "Simple USB Network Links (CDC Ethernet subset)"
-       depends on m
-       depends on USB_USBNET
-@@ -497,7 +478,6 @@
-         with one of these chips.
- config USB_NET_ZAURUS
--      depends on n
-       tristate "Sharp Zaurus (stock ROMs) and compatible"
-       depends on m
-       depends on USB_USBNET
-@@ -517,7 +497,6 @@
-         some cases CDC MDLM) protocol, not "g_ether".
- config USB_NET_CX82310_ETH
--      depends on n
-       tristate "Conexant CX82310 USB ethernet port"
-       depends on m
-       depends on USB_USBNET
-@@ -527,7 +506,6 @@
-         it will not work with ADSL modems (use cxacru driver instead).
- config USB_NET_KALMIA
--      depends on n
-       tristate "Samsung Kalmia based LTE USB modem"
-       depends on m
-       depends on USB_USBNET
-@@ -562,7 +540,6 @@
-         module will be called qmi_wwan.
- config USB_HSO
--      depends on n
-       tristate "Option USB High Speed Mobile Devices"
-       depends on m
-       depends on USB && RFKILL && TTY
-@@ -575,7 +552,6 @@
-         module will be called hso.
- config USB_NET_INT51X1
--      depends on n
-       tristate "Intellon PLC based usb adapter"
-       depends on m
-       depends on USB_USBNET
-@@ -585,7 +561,6 @@
-         INT51x1/INT5200 chip, like the "devolo dLan duo".
- config USB_CDC_PHONET
--      depends on n
-       tristate "CDC Phonet support"
-       depends on m
-       depends on PHONET
-@@ -595,7 +570,6 @@
-         "PC suite" USB profile.
- config USB_IPHETH
--      depends on n
-       tristate "Apple iPhone USB Ethernet driver"
-       depends on m
-       default n
-@@ -619,11 +593,10 @@
-         module will be called sierra_net.
- config USB_VL600
--      depends on n
-       tristate "LG VL600 modem dongle"
-       depends on m
-       depends on USB_NET_CDCETHER && TTY
--      select USB_ACM
-+#     depends on USB_ACM
-       help
-         Select this if you want to use an LG Electronics 4G/LTE usb modem
-         called VL600.  This driver only handles the ethernet
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/Kconfig.orig backports-4.2.6-1/drivers/net/usb/Kconfig.orig
---- backports-4.2.6-1.org/drivers/net/usb/Kconfig.orig 1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/Kconfig.orig     2016-06-28 14:35:17.991973886 +0200
-@@ -0,0 +1,638 @@
-+#
-+# USB Network devices configuration
-+#
-+comment "Host-side USB support is needed for USB Network Adapter support"
-+      depends on !USB && NET
-+
-+menuconfig USB_NET_DRIVERS
-+      tristate "USB Network Adapters"
-+      depends on m
-+      default USB if USB
-+      depends on USB && NET
-+
-+if USB_NET_DRIVERS
-+
-+config USB_CATC
-+      depends on n
-+      tristate "USB CATC NetMate-based Ethernet device support"
-+      depends on m
-+      depends on CRC32
-+      ---help---
-+        Say Y if you want to use one of the following 10Mbps USB Ethernet
-+        device based on the EL1210A chip. Supported devices are:
-+        Belkin F5U011
-+        Belkin F5U111
-+        CATC NetMate
-+        CATC NetMate II
-+        smartBridges smartNIC
-+
-+        This driver makes the adapter appear as a normal Ethernet interface,
-+        typically on eth0, if it is the only ethernet device, or perhaps on
-+        eth1, if you have a PCI or ISA ethernet card installed.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called catc.
-+
-+config USB_KAWETH
-+      depends on n
-+      tristate "USB KLSI KL5USB101-based ethernet device support"
-+      depends on m
-+      ---help---
-+        Say Y here if you want to use one of the following 10Mbps only
-+        USB Ethernet adapters based on the KLSI KL5KUSB101B chipset:
-+        3Com 3C19250
-+        ADS USB-10BT
-+        ATEN USB Ethernet
-+        ASANTE USB To Ethernet Adapter
-+        AOX Endpoints USB Ethernet
-+        Correga K.K.
-+        D-Link DSB-650C and DU-E10
-+        Entrega / Portgear E45
-+        I-O DATA USB-ET/T
-+        Jaton USB Ethernet Device Adapter
-+        Kingston Technology USB Ethernet Adapter
-+        Linksys USB10T
-+        Mobility USB-Ethernet Adapter
-+        NetGear EA-101
-+        Peracom Enet and Enet2
-+        Portsmith Express Ethernet Adapter
-+        Shark Pocket Adapter
-+        SMC 2202USB
-+        Sony Vaio port extender
-+
-+        This driver is likely to work with most 10Mbps only USB Ethernet
-+        adapters, including some "no brand" devices. It does NOT work on
-+        SmartBridges smartNIC or on Belkin F5U111 devices - you should use
-+        the CATC NetMate driver for those. If you are not sure which one
-+        you need, select both, and the correct one should be selected for
-+        you.
-+
-+        This driver makes the adapter appear as a normal Ethernet interface,
-+        typically on eth0, if it is the only ethernet device, or perhaps on
-+        eth1, if you have a PCI or ISA ethernet card installed.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called kaweth.
-+
-+config USB_PEGASUS
-+      depends on n
-+      tristate "USB Pegasus/Pegasus-II based ethernet device support"
-+      depends on m
-+      select BPAUTO_MII
-+      ---help---
-+        Say Y here if you know you have Pegasus or Pegasus-II based adapter.
-+        If in doubt then look at <file:drivers/net/usb/pegasus.h> for the
-+        complete list of supported devices.
-+
-+        If your particular adapter is not in the list and you are _sure_ it
-+        is Pegasus or Pegasus II based then send me
-+        <petkan@users.sourceforge.net> vendor and device IDs.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called pegasus.
-+
-+config USB_RTL8150
-+      depends on n
-+      tristate "USB RTL8150 based ethernet device support"
-+      depends on m
-+      select BPAUTO_MII
-+      help
-+        Say Y here if you have RTL8150 based usb-ethernet adapter.
-+        Send me <petkan@users.sourceforge.net> any comments you may have.
-+        You can also check for updates at <http://pegasus2.sourceforge.net/>.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called rtl8150.
-+
-+config USB_RTL8152
-+      depends on n
-+      tristate "Realtek RTL8152/RTL8153 Based USB Ethernet Adapters"
-+      depends on m
-+      select BPAUTO_MII
-+      help
-+        This option adds support for Realtek RTL8152 based USB 2.0
-+        10/100 Ethernet adapters and RTL8153 based USB 3.0 10/100/1000
-+        Ethernet adapters.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called r8152.
-+
-+config USB_USBNET
-+      tristate "Multi-purpose USB Networking Framework"
-+      depends on m
-+      select BPAUTO_MII
-+      ---help---
-+        This driver supports several kinds of network links over USB,
-+        with "minidrivers" built around a common network driver core
-+        that supports deep queues for efficient transfers.  (This gives
-+        better performance with small packets and at high speeds).
-+
-+        The USB host runs "usbnet", and the other end of the link might be:
-+
-+        - Another USB host, when using USB "network" or "data transfer"
-+          cables.  These are often used to network laptops to PCs, like
-+          "Laplink" parallel cables or some motherboards.  These rely
-+          on specialized chips from many suppliers.
-+
-+        - An intelligent USB gadget, perhaps embedding a Linux system.
-+          These include PDAs running Linux (iPaq, Yopy, Zaurus, and
-+          others), and devices that interoperate using the standard
-+          CDC-Ethernet specification (including many cable modems).
-+
-+        - Network adapter hardware (like those for 10/100 Ethernet) which
-+          uses this driver framework.
-+
-+        The link will appear with a name like "usb0", when the link is
-+        a two-node link, or "eth0" for most CDC-Ethernet devices.  Those
-+        two-node links are most easily managed with Ethernet Bridging
-+        (CONFIG_BRIDGE) instead of routing.
-+
-+        For more information see <http://www.linux-usb.org/usbnet/>.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called usbnet.
-+
-+config USB_NET_AX8817X
-+      depends on n
-+      tristate "ASIX AX88xxx Based USB 2.0 Ethernet Adapters"
-+      depends on m
-+      depends on USB_USBNET
-+      depends on CRC32
-+      depends on PHYLIB
-+      default y
-+      help
-+        This option adds support for ASIX AX88xxx based USB 2.0
-+        10/100 Ethernet adapters.
-+
-+        This driver should work with at least the following devices:
-+          * Aten UC210T
-+          * ASIX AX88172
-+          * Billionton Systems, USB2AR
-+          * Buffalo LUA-U2-KTX
-+          * Corega FEther USB2-TX
-+          * D-Link DUB-E100
-+          * Hawking UF200
-+          * Linksys USB200M
-+          * Netgear FA120
-+          * Sitecom LN-029
-+          * Sitecom LN-028
-+          * Intellinet USB 2.0 Ethernet
-+          * ST Lab USB 2.0 Ethernet
-+          * TrendNet TU2-ET100
-+
-+        This driver creates an interface named "ethX", where X depends on
-+        what other networking devices you have in use.
-+
-+config USB_NET_AX88179_178A
-+      depends on n
-+      tristate "ASIX AX88179/178A USB 3.0/2.0 to Gigabit Ethernet"
-+      depends on m
-+      depends on USB_USBNET
-+      depends on CRC32
-+      depends on PHYLIB
-+      default y
-+      help
-+        This option adds support for ASIX AX88179 based USB 3.0/2.0
-+        to Gigabit Ethernet adapters.
-+
-+        This driver should work with at least the following devices:
-+          * ASIX AX88179
-+          * ASIX AX88178A
-+          * Sitcomm LN-032
-+
-+        This driver creates an interface named "ethX", where X depends on
-+        what other networking devices you have in use.
-+
-+config USB_NET_CDCETHER
-+      tristate "CDC Ethernet support (smart devices such as cable modems)"
-+      depends on m
-+      depends on USB_USBNET
-+      default y
-+      help
-+        This option supports devices conforming to the Communication Device
-+        Class (CDC) Ethernet Control Model, a specification that's easy to
-+        implement in device firmware.  The CDC specifications are available
-+        from <http://www.usb.org/>.
-+
-+        CDC Ethernet is an implementation option for DOCSIS cable modems
-+        that support USB connectivity, used for non-Microsoft USB hosts.
-+        The Linux-USB CDC Ethernet Gadget driver is an open implementation.
-+        This driver should work with at least the following devices:
-+
-+          * Dell Wireless 5530 HSPA
-+          * Ericsson PipeRider (all variants)
-+          * Ericsson Mobile Broadband Module (all variants)
-+          * Motorola (DM100 and SB4100)
-+          * Broadcom Cable Modem (reference design)
-+          * Toshiba (PCX1100U and F3507g/F3607gw)
-+          * ...
-+
-+        This driver creates an interface named "ethX", where X depends on
-+        what other networking devices you have in use.  However, if the
-+        IEEE 802 "local assignment" bit is set in the address, a "usbX"
-+        name is used instead.
-+
-+config USB_NET_CDC_EEM
-+      depends on n
-+      tristate "CDC EEM support"
-+      depends on m
-+      depends on USB_USBNET
-+      help
-+        This option supports devices conforming to the Communication Device
-+        Class (CDC) Ethernet Emulation Model, a specification that's easy to
-+        implement in device firmware.  The CDC EEM specifications are available
-+        from <http://www.usb.org/>.
-+
-+        This driver creates an interface named "ethX", where X depends on
-+        what other networking devices you have in use.  However, if the
-+        IEEE 802 "local assignment" bit is set in the address, a "usbX"
-+        name is used instead.
-+
-+config USB_NET_CDC_NCM
-+      tristate "CDC NCM support"
-+      depends on m
-+      depends on USB_USBNET
-+      default y
-+      help
-+        This driver provides support for CDC NCM (Network Control Model
-+        Device USB Class Specification). The CDC NCM specification is
-+        available from <http://www.usb.org/>.
-+
-+        Say "y" to link the driver statically, or "m" to build a
-+        dynamically linked module.
-+
-+        This driver should work with at least the following devices:
-+          * ST-Ericsson M700 LTE FDD/TDD Mobile Broadband Modem (ref. design)
-+          * ST-Ericsson M5730 HSPA+ Mobile Broadband Modem (reference design)
-+          * ST-Ericsson M570 HSPA+ Mobile Broadband Modem (reference design)
-+          * ST-Ericsson M343 HSPA Mobile Broadband Modem (reference design)
-+          * Ericsson F5521gw Mobile Broadband Module
-+
-+config USB_NET_HUAWEI_CDC_NCM
-+      depends on n
-+      tristate "Huawei NCM embedded AT channel support"
-+      depends on m
-+      depends on USB_USBNET
-+      select USB_WDM
-+      select USB_NET_CDC_NCM
-+      help
-+              This driver supports huawei-style NCM devices, that use NCM as a
-+              transport for other protocols, usually an embedded AT channel.
-+              Good examples are:
-+              * Huawei E3131
-+              * Huawei E3251
-+
-+              To compile this driver as a module, choose M here: the module will be
-+              called huawei_cdc_ncm.ko.
-+
-+config USB_NET_CDC_MBIM
-+      tristate "CDC MBIM support"
-+      depends on m
-+      depends on USB_USBNET
-+      select USB_WDM
-+      select USB_NET_CDC_NCM
-+      help
-+        This driver provides support for CDC MBIM (Mobile Broadband
-+        Interface Model) devices. The CDC MBIM specification is
-+        available from <http://www.usb.org/>.
-+
-+        MBIM devices require configuration using the management
-+        protocol defined by the MBIM specification.  This driver
-+        provides unfiltered access to the MBIM control channel
-+        through the associated /dev/cdc-wdmx character device.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called cdc_mbim.
-+
-+config USB_NET_DM9601
-+      depends on n
-+      tristate "Davicom DM96xx based USB 10/100 ethernet devices"
-+      depends on m
-+      depends on USB_USBNET
-+      depends on CRC32
-+      help
-+        This option adds support for Davicom DM9601/DM9620/DM9621A
-+        based USB 10/100 Ethernet adapters.
-+
-+config USB_NET_SR9700
-+      depends on n
-+      tristate "CoreChip-sz SR9700 based USB 1.1 10/100 ethernet devices"
-+      depends on m
-+      depends on USB_USBNET
-+      depends on CRC32
-+      help
-+        This option adds support for CoreChip-sz SR9700 based USB 1.1
-+        10/100 Ethernet adapters.
-+
-+config USB_NET_SR9800
-+      depends on n
-+      tristate "CoreChip-sz SR9800 based USB 2.0 10/100 ethernet devices"
-+      depends on m
-+      depends on USB_USBNET
-+      depends on CRC32
-+      ---help---
-+        Say Y if you want to use one of the following 100Mbps USB Ethernet
-+        device based on the CoreChip-sz SR9800 chip.
-+
-+        This driver makes the adapter appear as a normal Ethernet interface,
-+        typically on eth0, if it is the only ethernet device, or perhaps on
-+        eth1, if you have a PCI or ISA ethernet card installed.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called sr9800.
-+
-+config USB_NET_SMSC75XX
-+      depends on n
-+      tristate "SMSC LAN75XX based USB 2.0 gigabit ethernet devices"
-+      depends on m
-+      depends on USB_USBNET
-+      depends on BITREVERSE
-+      depends on CRC16
-+      depends on CRC32
-+      help
-+        This option adds support for SMSC LAN75XX based USB 2.0
-+        Gigabit Ethernet adapters.
-+
-+config USB_NET_SMSC95XX
-+      depends on n
-+      tristate "SMSC LAN95XX based USB 2.0 10/100 ethernet devices"
-+      depends on m
-+      depends on USB_USBNET
-+      depends on BITREVERSE
-+      depends on CRC16
-+      depends on CRC32
-+      help
-+        This option adds support for SMSC LAN95XX based USB 2.0
-+        10/100 Ethernet adapters.
-+
-+config USB_NET_GL620A
-+      depends on n
-+      tristate "GeneSys GL620USB-A based cables"
-+      depends on m
-+      depends on USB_USBNET
-+      help
-+        Choose this option if you're using a host-to-host cable,
-+        or PC2PC motherboard, with this chip.
-+
-+        Note that the half-duplex "GL620USB" is not supported.
-+
-+config USB_NET_NET1080
-+      depends on n
-+      tristate "NetChip 1080 based cables (Laplink, ...)"
-+      depends on m
-+      default y
-+      depends on USB_USBNET
-+      help
-+        Choose this option if you're using a host-to-host cable based
-+        on this design:  one NetChip 1080 chip and supporting logic,
-+        optionally with LEDs that indicate traffic
-+
-+config USB_NET_PLUSB
-+      depends on n
-+      tristate "Prolific PL-2301/2302/25A1 based cables"
-+      depends on m
-+      # if the handshake/init/reset problems, from original 'plusb',
-+      # are ever resolved ... then remove "experimental"
-+      depends on USB_USBNET
-+      help
-+        Choose this option if you're using a host-to-host cable
-+        with one of these chips.
-+
-+config USB_NET_MCS7830
-+      depends on n
-+      tristate "MosChip MCS7830 based Ethernet adapters"
-+      depends on m
-+      depends on USB_USBNET
-+      help
-+        Choose this option if you're using a 10/100 Ethernet USB2
-+        adapter based on the MosChip 7830 controller. This includes
-+        adapters marketed under the DeLOCK brand.
-+
-+config USB_NET_RNDIS_HOST
-+      tristate "Host for RNDIS and ActiveSync devices"
-+      depends on m
-+      depends on USB_USBNET
-+      select USB_NET_CDCETHER
-+      help
-+        This option enables hosting "Remote NDIS" USB networking links,
-+        as encouraged by Microsoft (instead of CDC Ethernet!) for use in
-+        various devices that may only support this protocol.  A variant
-+        of this protocol (with even less public documentation) seems to
-+        be at the root of Microsoft's "ActiveSync" too.
-+
-+        Avoid using this protocol unless you have no better options.
-+        The protocol specification is incomplete, and is controlled by
-+        (and for) Microsoft; it isn't an "Open" ecosystem or market.
-+
-+config USB_NET_CDC_SUBSET
-+      depends on n
-+      tristate "Simple USB Network Links (CDC Ethernet subset)"
-+      depends on m
-+      depends on USB_USBNET
-+      default y
-+      help
-+        This driver module supports USB network devices that can work
-+        without any device-specific information.  Select it if you have
-+        one of these drivers.
-+
-+        Note that while many USB host-to-host cables can work in this mode,
-+        that may mean not being able to talk to Win32 systems or more
-+        commonly not being able to handle certain events (like replugging
-+        the host on the other end) very well.  Also, these devices will
-+        not generally have permanently assigned Ethernet addresses.
-+
-+config USB_ALI_M5632
-+      bool "ALi M5632 based 'USB 2.0 Data Link' cables"
-+      depends on USB_NET_CDC_SUBSET
-+      help
-+        Choose this option if you're using a host-to-host cable
-+        based on this design, which supports USB 2.0 high speed.
-+
-+config USB_AN2720
-+      bool "AnchorChips 2720 based cables (Xircom PGUNET, ...)"
-+      depends on USB_NET_CDC_SUBSET
-+      help
-+        Choose this option if you're using a host-to-host cable
-+        based on this design.  Note that AnchorChips is now a
-+        Cypress brand.
-+
-+config USB_BELKIN
-+      bool "eTEK based host-to-host cables (Advance, Belkin, ...)"
-+      depends on USB_NET_CDC_SUBSET
-+      default y
-+      help
-+        Choose this option if you're using a host-to-host cable
-+        based on this design:  two NetChip 2890 chips and an Atmel
-+        microcontroller, with LEDs that indicate traffic.
-+
-+config USB_ARMLINUX
-+      bool "Embedded ARM Linux links (iPaq, ...)"
-+      depends on USB_NET_CDC_SUBSET
-+      default y
-+      help
-+        Choose this option to support the "usb-eth" networking driver
-+        used by most of the ARM Linux community with device controllers
-+        such as the SA-11x0 and PXA-25x UDCs, or the tftp capabilities
-+        in some PXA versions of the "blob" boot loader.
-+
-+        Linux-based "Gumstix" PXA-25x based systems use this protocol
-+        to talk with other Linux systems.
-+
-+        Although the ROMs shipped with Sharp Zaurus products use a
-+        different link level framing protocol, you can have them use
-+        this simpler protocol by installing a different kernel.
-+
-+config USB_EPSON2888
-+      bool "Epson 2888 based firmware (DEVELOPMENT)"
-+      depends on USB_NET_CDC_SUBSET
-+      help
-+        Choose this option to support the usb networking links used
-+        by some sample firmware from Epson.
-+
-+config USB_KC2190
-+      bool "KT Technology KC2190 based cables (InstaNet)"
-+      depends on USB_NET_CDC_SUBSET
-+      help
-+        Choose this option if you're using a host-to-host cable
-+        with one of these chips.
-+
-+config USB_NET_ZAURUS
-+      depends on n
-+      tristate "Sharp Zaurus (stock ROMs) and compatible"
-+      depends on m
-+      depends on USB_USBNET
-+      select USB_NET_CDCETHER
-+      depends on CRC32
-+      default y
-+      help
-+        Choose this option to support the usb networking links used by
-+        Zaurus models like the SL-5000D, SL-5500, SL-5600, A-300, B-500.
-+        This also supports some related device firmware, as used in some
-+        PDAs from Olympus and some cell phones from Motorola.
-+
-+        If you install an alternate image, such as the Linux 2.6 based
-+        versions of OpenZaurus, you should no longer need to support this
-+        protocol.  Only the "eth-fd" or "net_fd" drivers in these devices
-+        really need this non-conformant variant of CDC Ethernet (or in
-+        some cases CDC MDLM) protocol, not "g_ether".
-+
-+config USB_NET_CX82310_ETH
-+      depends on n
-+      tristate "Conexant CX82310 USB ethernet port"
-+      depends on m
-+      depends on USB_USBNET
-+      help
-+        Choose this option if you're using a Conexant CX82310-based ADSL
-+        router with USB ethernet port. This driver is for routers only,
-+        it will not work with ADSL modems (use cxacru driver instead).
-+
-+config USB_NET_KALMIA
-+      depends on n
-+      tristate "Samsung Kalmia based LTE USB modem"
-+      depends on m
-+      depends on USB_USBNET
-+      help
-+        Choose this option if you have a Samsung Kalmia based USB modem
-+        as Samsung GT-B3730.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called kalmia.
-+
-+config USB_NET_QMI_WWAN
-+      tristate "QMI WWAN driver for Qualcomm MSM based 3G and LTE modems"
-+      depends on m
-+      depends on USB_USBNET
-+      select USB_WDM
-+      help
-+        Support WWAN LTE/3G devices based on Qualcomm Mobile Data Modem
-+        (MDM) chipsets.  Examples of such devices are
-+          * Huawei E392/E398
-+
-+        This driver will only drive the ethernet part of the chips.
-+        The devices require additional configuration to be usable.
-+        Multiple management interfaces with linux drivers are
-+        available:
-+
-+          * option: AT commands on /dev/ttyUSBx
-+          * cdc-wdm: Qualcomm MSM Interface (QMI) protocol on /dev/cdc-wdmx
-+
-+        A modem manager with support for QMI is recommended.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called qmi_wwan.
-+
-+config USB_HSO
-+      depends on n
-+      tristate "Option USB High Speed Mobile Devices"
-+      depends on m
-+      depends on USB && RFKILL && TTY
-+      default n
-+      help
-+        Choose this option if you have an Option HSDPA/HSUPA card.
-+        These cards support downlink speeds of 7.2Mbps or greater.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called hso.
-+
-+config USB_NET_INT51X1
-+      depends on n
-+      tristate "Intellon PLC based usb adapter"
-+      depends on m
-+      depends on USB_USBNET
-+      help
-+        Choose this option if you're using a 14Mb USB-based PLC
-+        (Powerline Communications) solution with an Intellon
-+        INT51x1/INT5200 chip, like the "devolo dLan duo".
-+
-+config USB_CDC_PHONET
-+      depends on n
-+      tristate "CDC Phonet support"
-+      depends on m
-+      depends on PHONET
-+      help
-+        Choose this option to support the Phonet interface to a Nokia
-+        cellular modem, as found on most Nokia handsets with the
-+        "PC suite" USB profile.
-+
-+config USB_IPHETH
-+      depends on n
-+      tristate "Apple iPhone USB Ethernet driver"
-+      depends on m
-+      default n
-+      ---help---
-+        Module used to share Internet connection (tethering) from your
-+        iPhone (Original, 3G and 3GS) to your system.
-+        Note that you need userspace libraries and programs that are needed
-+        to pair your device with your system and that understand the iPhone
-+        protocol.
-+
-+        For more information: http://giagio.com/wiki/moin.cgi/iPhoneEthernetDriver
-+
-+config USB_SIERRA_NET
-+      tristate "USB-to-WWAN Driver for Sierra Wireless modems"
-+      depends on m
-+      depends on USB_USBNET
-+      help
-+        Choose this option if you have a Sierra Wireless USB-to-WWAN device.
-+
-+        To compile this driver as a module, choose M here: the
-+        module will be called sierra_net.
-+
-+config USB_VL600
-+      depends on n
-+      tristate "LG VL600 modem dongle"
-+      depends on m
-+      depends on USB_NET_CDCETHER && TTY
-+      select USB_ACM
-+      help
-+        Select this if you want to use an LG Electronics 4G/LTE usb modem
-+        called VL600.  This driver only handles the ethernet
-+        interface exposed by the modem firmware.  To establish a connection
-+        you will first need a userspace program that sends the right
-+        command to the modem through its CDC ACM port, and most
-+        likely also a DHCP client.  See this thread about using the
-+        4G modem from Verizon:
-+
-+        http://ubuntuforums.org/showpost.php?p=10589647&postcount=17
-+
-+endif # USB_NET_DRIVERS
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/lg-vl600.c backports-4.2.6-1/drivers/net/usb/lg-vl600.c
---- backports-4.2.6-1.org/drivers/net/usb/lg-vl600.c   1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/lg-vl600.c       2016-06-28 14:35:17.991973886 +0200
-@@ -0,0 +1,353 @@
-+/*
-+ * Ethernet interface part of the LG VL600 LTE modem (4G dongle)
-+ *
-+ * Copyright (C) 2011 Intel Corporation
-+ * Author: Andrzej Zaborowski <balrogg@gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/usb/cdc.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/if_ether.h>
-+#include <linux/if_arp.h>
-+#include <linux/inetdevice.h>
-+#include <linux/module.h>
-+
-+/*
-+ * The device has a CDC ACM port for modem control (it claims to be
-+ * CDC ACM anyway) and a CDC Ethernet port for actual network data.
-+ * It will however ignore data on both ports that is not encapsulated
-+ * in a specific way, any data returned is also encapsulated the same
-+ * way.  The headers don't seem to follow any popular standard.
-+ *
-+ * This driver adds and strips these headers from the ethernet frames
-+ * sent/received from the CDC Ethernet port.  The proprietary header
-+ * replaces the standard ethernet header in a packet so only actual
-+ * ethernet frames are allowed.  The headers allow some form of
-+ * multiplexing by using non standard values of the .h_proto field.
-+ * Windows/Mac drivers do send a couple of such frames to the device
-+ * during initialisation, with protocol set to 0x0906 or 0x0b06 and (what
-+ * seems to be) a flag in the .dummy_flags.  This doesn't seem necessary
-+ * for modem operation but can possibly be used for GPS or other funcitons.
-+ */
-+
-+struct vl600_frame_hdr {
-+      __le32 len;
-+      __le32 serial;
-+      __le32 pkt_cnt;
-+      __le32 dummy_flags;
-+      __le32 dummy;
-+      __le32 magic;
-+} __attribute__((packed));
-+
-+struct vl600_pkt_hdr {
-+      __le32 dummy[2];
-+      __le32 len;
-+      __be16 h_proto;
-+} __attribute__((packed));
-+
-+struct vl600_state {
-+      struct sk_buff *current_rx_buf;
-+};
-+
-+static int vl600_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      int ret;
-+      struct vl600_state *s = kzalloc(sizeof(struct vl600_state), GFP_KERNEL);
-+
-+      if (!s)
-+              return -ENOMEM;
-+
-+      ret = usbnet_cdc_bind(dev, intf);
-+      if (ret) {
-+              kfree(s);
-+              return ret;
-+      }
-+
-+      dev->driver_priv = s;
-+
-+      /* ARP packets don't go through, but they're also of no use.  The
-+       * subnet has only two hosts anyway: us and the gateway / DHCP
-+       * server (probably simulated by modem firmware or network operator)
-+       * whose address changes everytime we connect to the intarwebz and
-+       * who doesn't bother answering ARP requests either.  So hardware
-+       * addresses have no meaning, the destination and the source of every
-+       * packet depend only on whether it is on the IN or OUT endpoint.  */
-+      dev->net->flags |= IFF_NOARP;
-+      /* IPv6 NDP relies on multicast.  Enable it by default. */
-+      dev->net->flags |= IFF_MULTICAST;
-+
-+      return ret;
-+}
-+
-+static void vl600_unbind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      struct vl600_state *s = dev->driver_priv;
-+
-+      if (s->current_rx_buf)
-+              dev_kfree_skb(s->current_rx_buf);
-+
-+      kfree(s);
-+
-+      return usbnet_cdc_unbind(dev, intf);
-+}
-+
-+static int vl600_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      struct vl600_frame_hdr *frame;
-+      struct vl600_pkt_hdr *packet;
-+      struct ethhdr *ethhdr;
-+      int packet_len, count;
-+      struct sk_buff *buf = skb;
-+      struct sk_buff *clone;
-+      struct vl600_state *s = dev->driver_priv;
-+
-+      /* Frame lengths are generally 4B multiplies but every couple of
-+       * hours there's an odd number of bytes sized yet correct frame,
-+       * so don't require this.  */
-+
-+      /* Allow a packet (or multiple packets batched together) to be
-+       * split across many frames.  We don't allow a new batch to
-+       * begin in the same frame another one is ending however, and no
-+       * leading or trailing pad bytes.  */
-+      if (s->current_rx_buf) {
-+              frame = (struct vl600_frame_hdr *) s->current_rx_buf->data;
-+              if (skb->len + s->current_rx_buf->len >
-+                              le32_to_cpup(&frame->len)) {
-+                      netif_err(dev, ifup, dev->net, "Fragment too long\n");
-+                      dev->net->stats.rx_length_errors++;
-+                      goto error;
-+              }
-+
-+              buf = s->current_rx_buf;
-+              memcpy(skb_put(buf, skb->len), skb->data, skb->len);
-+      } else if (skb->len < 4) {
-+              netif_err(dev, ifup, dev->net, "Frame too short\n");
-+              dev->net->stats.rx_length_errors++;
-+              goto error;
-+      }
-+
-+      frame = (struct vl600_frame_hdr *) buf->data;
-+      /* Yes, check that frame->magic == 0x53544448 (or 0x44544d48),
-+       * otherwise we may run out of memory w/a bad packet */
-+      if (ntohl(frame->magic) != 0x53544448 &&
-+                      ntohl(frame->magic) != 0x44544d48)
-+              goto error;
-+
-+      if (buf->len < sizeof(*frame) ||
-+                      buf->len != le32_to_cpup(&frame->len)) {
-+              /* Save this fragment for later assembly */
-+              if (s->current_rx_buf)
-+                      return 0;
-+
-+              s->current_rx_buf = skb_copy_expand(skb, 0,
-+                              le32_to_cpup(&frame->len), GFP_ATOMIC);
-+              if (!s->current_rx_buf) {
-+                      netif_err(dev, ifup, dev->net, "Reserving %i bytes "
-+                                      "for packet assembly failed.\n",
-+                                      le32_to_cpup(&frame->len));
-+                      dev->net->stats.rx_errors++;
-+              }
-+
-+              return 0;
-+      }
-+
-+      count = le32_to_cpup(&frame->pkt_cnt);
-+
-+      skb_pull(buf, sizeof(*frame));
-+
-+      while (count--) {
-+              if (buf->len < sizeof(*packet)) {
-+                      netif_err(dev, ifup, dev->net, "Packet too short\n");
-+                      goto error;
-+              }
-+
-+              packet = (struct vl600_pkt_hdr *) buf->data;
-+              packet_len = sizeof(*packet) + le32_to_cpup(&packet->len);
-+              if (packet_len > buf->len) {
-+                      netif_err(dev, ifup, dev->net,
-+                                      "Bad packet length stored in header\n");
-+                      goto error;
-+              }
-+
-+              /* Packet header is same size as the ethernet header
-+               * (sizeof(*packet) == sizeof(*ethhdr)), additionally
-+               * the h_proto field is in the same place so we just leave it
-+               * alone and fill in the remaining fields.
-+               */
-+              ethhdr = (struct ethhdr *) skb->data;
-+              if (be16_to_cpup(&ethhdr->h_proto) == ETH_P_ARP &&
-+                              buf->len > 0x26) {
-+                      /* Copy the addresses from packet contents */
-+                      memcpy(ethhdr->h_source,
-+                                      &buf->data[sizeof(*ethhdr) + 0x8],
-+                                      ETH_ALEN);
-+                      memcpy(ethhdr->h_dest,
-+                                      &buf->data[sizeof(*ethhdr) + 0x12],
-+                                      ETH_ALEN);
-+              } else {
-+                      eth_zero_addr(ethhdr->h_source);
-+                      memcpy(ethhdr->h_dest, dev->net->dev_addr, ETH_ALEN);
-+
-+                      /* Inbound IPv6 packets have an IPv4 ethertype (0x800)
-+                       * for some reason.  Peek at the L3 header to check
-+                       * for IPv6 packets, and set the ethertype to IPv6
-+                       * (0x86dd) so Linux can understand it.
-+                       */
-+                      if ((buf->data[sizeof(*ethhdr)] & 0xf0) == 0x60)
-+                              ethhdr->h_proto = htons(ETH_P_IPV6);
-+              }
-+
-+              if (count) {
-+                      /* Not the last packet in this batch */
-+                      clone = skb_clone(buf, GFP_ATOMIC);
-+                      if (!clone)
-+                              goto error;
-+
-+                      skb_trim(clone, packet_len);
-+                      usbnet_skb_return(dev, clone);
-+
-+                      skb_pull(buf, (packet_len + 3) & ~3);
-+              } else {
-+                      skb_trim(buf, packet_len);
-+
-+                      if (s->current_rx_buf) {
-+                              usbnet_skb_return(dev, buf);
-+                              s->current_rx_buf = NULL;
-+                              return 0;
-+                      }
-+
-+                      return 1;
-+              }
-+      }
-+
-+error:
-+      if (s->current_rx_buf) {
-+              dev_kfree_skb_any(s->current_rx_buf);
-+              s->current_rx_buf = NULL;
-+      }
-+      dev->net->stats.rx_errors++;
-+      return 0;
-+}
-+
-+static struct sk_buff *vl600_tx_fixup(struct usbnet *dev,
-+              struct sk_buff *skb, gfp_t flags)
-+{
-+      struct sk_buff *ret;
-+      struct vl600_frame_hdr *frame;
-+      struct vl600_pkt_hdr *packet;
-+      static uint32_t serial = 1;
-+      int orig_len = skb->len - sizeof(struct ethhdr);
-+      int full_len = (skb->len + sizeof(struct vl600_frame_hdr) + 3) & ~3;
-+
-+      frame = (struct vl600_frame_hdr *) skb->data;
-+      if (skb->len > sizeof(*frame) && skb->len == le32_to_cpup(&frame->len))
-+              return skb; /* Already encapsulated? */
-+
-+      if (skb->len < sizeof(struct ethhdr))
-+              /* Drop, device can only deal with ethernet packets */
-+              return NULL;
-+
-+      if (!skb_cloned(skb)) {
-+              int headroom = skb_headroom(skb);
-+              int tailroom = skb_tailroom(skb);
-+
-+              if (tailroom >= full_len - skb->len - sizeof(*frame) &&
-+                              headroom >= sizeof(*frame))
-+                      /* There's enough head and tail room */
-+                      goto encapsulate;
-+
-+              if (headroom + tailroom + skb->len >= full_len) {
-+                      /* There's enough total room, just readjust */
-+                      skb->data = memmove(skb->head + sizeof(*frame),
-+                                      skb->data, skb->len);
-+                      skb_set_tail_pointer(skb, skb->len);
-+                      goto encapsulate;
-+              }
-+      }
-+
-+      /* Alloc a new skb with the required size */
-+      ret = skb_copy_expand(skb, sizeof(struct vl600_frame_hdr), full_len -
-+                      skb->len - sizeof(struct vl600_frame_hdr), flags);
-+      dev_kfree_skb_any(skb);
-+      if (!ret)
-+              return ret;
-+      skb = ret;
-+
-+encapsulate:
-+      /* Packet header is same size as ethernet packet header
-+       * (sizeof(*packet) == sizeof(struct ethhdr)), additionally the
-+       * h_proto field is in the same place so we just leave it alone and
-+       * overwrite the remaining fields.
-+       */
-+      packet = (struct vl600_pkt_hdr *) skb->data;
-+      /* The VL600 wants IPv6 packets to have an IPv4 ethertype
-+       * Since this modem only supports IPv4 and IPv6, just set all
-+       * frames to 0x0800 (ETH_P_IP)
-+       */
-+      packet->h_proto = htons(ETH_P_IP);
-+      memset(&packet->dummy, 0, sizeof(packet->dummy));
-+      packet->len = cpu_to_le32(orig_len);
-+
-+      frame = (struct vl600_frame_hdr *) skb_push(skb, sizeof(*frame));
-+      memset(frame, 0, sizeof(*frame));
-+      frame->len = cpu_to_le32(full_len);
-+      frame->serial = cpu_to_le32(serial++);
-+      frame->pkt_cnt = cpu_to_le32(1);
-+
-+      if (skb->len < full_len) /* Pad */
-+              skb_put(skb, full_len - skb->len);
-+
-+      return skb;
-+}
-+
-+static const struct driver_info       vl600_info = {
-+      .description    = "LG VL600 modem",
-+      .flags          = FLAG_RX_ASSEMBLE | FLAG_WWAN,
-+      .bind           = vl600_bind,
-+      .unbind         = vl600_unbind,
-+      .status         = usbnet_cdc_status,
-+      .rx_fixup       = vl600_rx_fixup,
-+      .tx_fixup       = vl600_tx_fixup,
-+};
-+
-+static const struct usb_device_id products[] = {
-+      {
-+              USB_DEVICE_AND_INTERFACE_INFO(0x1004, 0x61aa, USB_CLASS_COMM,
-+                              USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
-+              .driver_info    = (unsigned long) &vl600_info,
-+      },
-+      {},     /* End */
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver lg_vl600_driver = {
-+      .name           = "lg-vl600",
-+      .id_table       = products,
-+      .probe          = usbnet_probe,
-+      .disconnect     = usbnet_disconnect,
-+      .suspend        = usbnet_suspend,
-+      .resume         = usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(lg_vl600_driver);
-+
-+MODULE_AUTHOR("Anrzej Zaborowski");
-+MODULE_DESCRIPTION("LG-VL600 modem's ethernet link");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/Makefile backports-4.2.6-1/drivers/net/usb/Makefile
---- backports-4.2.6-1.org/drivers/net/usb/Makefile     2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/Makefile 2016-06-28 14:35:17.991973886 +0200
-@@ -1,39 +1,40 @@
- #
- # Makefile for USB Network drivers
- #
--#
--#obj-$(CPTCFG_USB_CATC)               += catc.o
--#obj-$(CPTCFG_USB_KAWETH)     += kaweth.o
--#obj-$(CPTCFG_USB_PEGASUS)    += pegasus.o
--#obj-$(CPTCFG_USB_RTL8150)    += rtl8150.o
--#obj-$(CPTCFG_USB_RTL8152)    += r8152.o
--#obj-$(CPTCFG_USB_HSO)                += hso.o
--#obj-$(CPTCFG_USB_NET_AX8817X)        += asix.o
--#obj-$(CPTCFG_USB_NET_AX88179_178A)      += ax88179_178a.o
-+
-+obj-$(CPTCFG_USB_CATC)                += catc.o
-+obj-$(CPTCFG_USB_KAWETH)      += kaweth.o
-+obj-$(CPTCFG_USB_PEGASUS)     += pegasus.o
-+obj-$(CPTCFG_USB_RTL8150)     += rtl8150.o
-+obj-$(CPTCFG_USB_RTL8152)     += r8152.o
-+obj-$(CPTCFG_USB_HSO)         += hso.o
-+obj-$(CPTCFG_USB_NET_AX8817X) += asix.o
-+asix-y := asix_devices.o asix_common.o ax88172a.o
-+obj-$(CPTCFG_USB_NET_AX88179_178A)      += ax88179_178a.o
- obj-$(CPTCFG_USB_NET_CDCETHER)        += cdc_ether.o
--#obj-$(CPTCFG_USB_NET_CDC_EEM)        += cdc_eem.o
--#obj-$(CPTCFG_USB_NET_DM9601) += dm9601.o
--#obj-$(CPTCFG_USB_NET_SR9700) += sr9700.o
--#obj-$(CPTCFG_USB_NET_SR9800) += sr9800.o
--#obj-$(CPTCFG_USB_NET_SMSC75XX)       += smsc75xx.o
--#obj-$(CPTCFG_USB_NET_SMSC95XX)       += smsc95xx.o
--#obj-$(CPTCFG_USB_NET_GL620A) += gl620a.o
--#obj-$(CPTCFG_USB_NET_NET1080)        += net1080.o
--#obj-$(CPTCFG_USB_NET_PLUSB)  += plusb.o
-+obj-$(CPTCFG_USB_NET_CDC_EEM) += cdc_eem.o
-+obj-$(CPTCFG_USB_NET_DM9601)  += dm9601.o
-+obj-$(CPTCFG_USB_NET_SR9700)  += sr9700.o
-+obj-$(CPTCFG_USB_NET_SR9800)  += sr9800.o
-+obj-$(CPTCFG_USB_NET_SMSC75XX)        += smsc75xx.o
-+obj-$(CPTCFG_USB_NET_SMSC95XX)        += smsc95xx.o
-+obj-$(CPTCFG_USB_NET_GL620A)  += gl620a.o
-+obj-$(CPTCFG_USB_NET_NET1080) += net1080.o
-+obj-$(CPTCFG_USB_NET_PLUSB)   += plusb.o
- obj-$(CPTCFG_USB_NET_RNDIS_HOST)      += rndis_host.o
--#obj-$(CPTCFG_USB_NET_CDC_SUBSET)     += cdc_subset.o
--#obj-$(CPTCFG_USB_NET_ZAURUS) += zaurus.o
--#obj-$(CPTCFG_USB_NET_MCS7830)        += mcs7830.o
-+obj-$(CPTCFG_USB_NET_CDC_SUBSET)      += cdc_subset.o
-+obj-$(CPTCFG_USB_NET_ZAURUS)  += zaurus.o
-+obj-$(CPTCFG_USB_NET_MCS7830) += mcs7830.o
- obj-$(CPTCFG_USB_USBNET)      += usbnet.o
--#obj-$(CPTCFG_USB_NET_INT51X1)        += int51x1.o
--#obj-$(CPTCFG_USB_CDC_PHONET) += cdc-phonet.o
--#obj-$(CPTCFG_USB_NET_KALMIA) += kalmia.o
--#obj-$(CPTCFG_USB_IPHETH)     += ipheth.o
-+obj-$(CPTCFG_USB_NET_INT51X1) += int51x1.o
-+obj-$(CPTCFG_USB_CDC_PHONET)  += cdc-phonet.o
-+obj-$(CPTCFG_USB_NET_KALMIA)  += kalmia.o
-+obj-$(CPTCFG_USB_IPHETH)      += ipheth.o
- obj-$(CPTCFG_USB_SIERRA_NET)  += sierra_net.o
--#obj-$(CPTCFG_USB_NET_CX82310_ETH)    += cx82310_eth.o
-+obj-$(CPTCFG_USB_NET_CX82310_ETH)     += cx82310_eth.o
- obj-$(CPTCFG_USB_NET_CDC_NCM) += cdc_ncm.o
--#obj-$(CPTCFG_USB_NET_HUAWEI_CDC_NCM) += huawei_cdc_ncm.o
--#obj-$(CPTCFG_USB_VL600)              += lg-vl600.o
-+obj-$(CPTCFG_USB_NET_HUAWEI_CDC_NCM)  += huawei_cdc_ncm.o
-+obj-$(CPTCFG_USB_VL600)               += lg-vl600.o
- obj-$(CPTCFG_USB_NET_QMI_WWAN)        += qmi_wwan.o
- obj-$(CPTCFG_USB_NET_CDC_MBIM)        += cdc_mbim.o
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/mcs7830.c backports-4.2.6-1/drivers/net/usb/mcs7830.c
---- backports-4.2.6-1.org/drivers/net/usb/mcs7830.c    1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/mcs7830.c        2016-06-28 14:35:17.995307218 +0200
-@@ -0,0 +1,643 @@
-+/*
-+ * MOSCHIP MCS7830 based (7730/7830/7832) USB 2.0 Ethernet Devices
-+ *
-+ * based on usbnet.c, asix.c and the vendor provided mcs7830 driver
-+ *
-+ * Copyright (C) 2010 Andreas Mohr <andi@lisas.de>
-+ * Copyright (C) 2006 Arnd Bergmann <arnd@arndb.de>
-+ * Copyright (C) 2003-2005 David Hollis <dhollis@davehollis.com>
-+ * Copyright (C) 2005 Phil Chang <pchang23@sbcglobal.net>
-+ * Copyright (c) 2002-2003 TiVo Inc.
-+ *
-+ * Definitions gathered from MOSCHIP, Data Sheet_7830DA.pdf (thanks!).
-+ *
-+ * 2010-12-19: add 7832 USB PID ("functionality same as MCS7830"),
-+ *             per active notification by manufacturer
-+ *
-+ * TODO:
-+ * - support HIF_REG_CONFIG_SLEEPMODE/HIF_REG_CONFIG_TXENABLE (via autopm?)
-+ * - implement ethtool_ops get_pauseparam/set_pauseparam
-+ *   via HIF_REG_PAUSE_THRESHOLD (>= revision C only!)
-+ * - implement get_eeprom/[set_eeprom]
-+ * - switch PHY on/off on ifup/ifdown (perhaps in usbnet.c, via MII)
-+ * - mcs7830_get_regs() handling is weird: for rev 2 we return 32 regs,
-+ *   can access only ~ 24, remaining user buffer is uninitialized garbage
-+ * - anything else?
-+ *
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <linux/crc32.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/mii.h>
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/slab.h>
-+#include <linux/usb.h>
-+#include <linux/usb/usbnet.h>
-+
-+/* requests */
-+#define MCS7830_RD_BMREQ      (USB_DIR_IN  | USB_TYPE_VENDOR | \
-+                               USB_RECIP_DEVICE)
-+#define MCS7830_WR_BMREQ      (USB_DIR_OUT | USB_TYPE_VENDOR | \
-+                               USB_RECIP_DEVICE)
-+#define MCS7830_RD_BREQ               0x0E
-+#define MCS7830_WR_BREQ               0x0D
-+
-+#define MCS7830_CTRL_TIMEOUT  1000
-+#define MCS7830_MAX_MCAST     64
-+
-+#define MCS7830_VENDOR_ID     0x9710
-+#define MCS7832_PRODUCT_ID    0x7832
-+#define MCS7830_PRODUCT_ID    0x7830
-+#define MCS7730_PRODUCT_ID    0x7730
-+
-+#define SITECOM_VENDOR_ID     0x0DF6
-+#define LN_030_PRODUCT_ID     0x0021
-+
-+#define MCS7830_MII_ADVERTISE (ADVERTISE_PAUSE_CAP | ADVERTISE_100FULL | \
-+                               ADVERTISE_100HALF | ADVERTISE_10FULL | \
-+                               ADVERTISE_10HALF | ADVERTISE_CSMA)
-+
-+/* HIF_REG_XX corresponding index value */
-+enum {
-+      HIF_REG_MULTICAST_HASH                  = 0x00,
-+      HIF_REG_PACKET_GAP1                     = 0x08,
-+      HIF_REG_PACKET_GAP2                     = 0x09,
-+      HIF_REG_PHY_DATA                        = 0x0a,
-+      HIF_REG_PHY_CMD1                        = 0x0c,
-+         HIF_REG_PHY_CMD1_READ                = 0x40,
-+         HIF_REG_PHY_CMD1_WRITE               = 0x20,
-+         HIF_REG_PHY_CMD1_PHYADDR             = 0x01,
-+      HIF_REG_PHY_CMD2                        = 0x0d,
-+         HIF_REG_PHY_CMD2_PEND_FLAG_BIT       = 0x80,
-+         HIF_REG_PHY_CMD2_READY_FLAG_BIT      = 0x40,
-+      HIF_REG_CONFIG                          = 0x0e,
-+      /* hmm, spec sez: "R/W", "Except bit 3" (likely TXENABLE). */
-+         HIF_REG_CONFIG_CFG                   = 0x80,
-+         HIF_REG_CONFIG_SPEED100              = 0x40,
-+         HIF_REG_CONFIG_FULLDUPLEX_ENABLE     = 0x20,
-+         HIF_REG_CONFIG_RXENABLE              = 0x10,
-+         HIF_REG_CONFIG_TXENABLE              = 0x08,
-+         HIF_REG_CONFIG_SLEEPMODE             = 0x04,
-+         HIF_REG_CONFIG_ALLMULTICAST          = 0x02,
-+         HIF_REG_CONFIG_PROMISCUOUS           = 0x01,
-+      HIF_REG_ETHERNET_ADDR                   = 0x0f,
-+      HIF_REG_FRAME_DROP_COUNTER              = 0x15, /* 0..ff; reset: 0 */
-+      HIF_REG_PAUSE_THRESHOLD                 = 0x16,
-+         HIF_REG_PAUSE_THRESHOLD_DEFAULT      = 0,
-+};
-+
-+/* Trailing status byte in Ethernet Rx frame */
-+enum {
-+      MCS7830_RX_SHORT_FRAME          = 0x01, /* < 64 bytes */
-+      MCS7830_RX_LENGTH_ERROR         = 0x02, /* framelen != Ethernet length field */
-+      MCS7830_RX_ALIGNMENT_ERROR      = 0x04, /* non-even number of nibbles */
-+      MCS7830_RX_CRC_ERROR            = 0x08,
-+      MCS7830_RX_LARGE_FRAME          = 0x10, /* > 1518 bytes */
-+      MCS7830_RX_FRAME_CORRECT        = 0x20, /* frame is correct */
-+      /* [7:6] reserved */
-+};
-+
-+struct mcs7830_data {
-+      u8 multi_filter[8];
-+      u8 config;
-+};
-+
-+static const char driver_name[] = "MOSCHIP usb-ethernet driver";
-+
-+static int mcs7830_get_reg(struct usbnet *dev, u16 index, u16 size, void *data)
-+{
-+      return usbnet_read_cmd(dev, MCS7830_RD_BREQ, MCS7830_RD_BMREQ,
-+                              0x0000, index, data, size);
-+}
-+
-+static int mcs7830_set_reg(struct usbnet *dev, u16 index, u16 size, const void *data)
-+{
-+      return usbnet_write_cmd(dev, MCS7830_WR_BREQ, MCS7830_WR_BMREQ,
-+                              0x0000, index, data, size);
-+}
-+
-+static void mcs7830_set_reg_async(struct usbnet *dev, u16 index, u16 size, void *data)
-+{
-+      usbnet_write_cmd_async(dev, MCS7830_WR_BREQ, MCS7830_WR_BMREQ,
-+                              0x0000, index, data, size);
-+}
-+
-+static int mcs7830_hif_get_mac_address(struct usbnet *dev, unsigned char *addr)
-+{
-+      int ret = mcs7830_get_reg(dev, HIF_REG_ETHERNET_ADDR, ETH_ALEN, addr);
-+      if (ret < 0)
-+              return ret;
-+      return 0;
-+}
-+
-+static int mcs7830_hif_set_mac_address(struct usbnet *dev, unsigned char *addr)
-+{
-+      int ret = mcs7830_set_reg(dev, HIF_REG_ETHERNET_ADDR, ETH_ALEN, addr);
-+
-+      if (ret < 0)
-+              return ret;
-+      return 0;
-+}
-+
-+static int mcs7830_set_mac_address(struct net_device *netdev, void *p)
-+{
-+      int ret;
-+      struct usbnet *dev = netdev_priv(netdev);
-+      struct sockaddr *addr = p;
-+
-+      if (netif_running(netdev))
-+              return -EBUSY;
-+
-+      if (!is_valid_ether_addr(addr->sa_data))
-+              return -EADDRNOTAVAIL;
-+
-+      ret = mcs7830_hif_set_mac_address(dev, addr->sa_data);
-+
-+      if (ret < 0)
-+              return ret;
-+
-+      /* it worked --> adopt it on netdev side */
-+      memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
-+
-+      return 0;
-+}
-+
-+static int mcs7830_read_phy(struct usbnet *dev, u8 index)
-+{
-+      int ret;
-+      int i;
-+      __le16 val;
-+
-+      u8 cmd[2] = {
-+              HIF_REG_PHY_CMD1_READ | HIF_REG_PHY_CMD1_PHYADDR,
-+              HIF_REG_PHY_CMD2_PEND_FLAG_BIT | index,
-+      };
-+
-+      mutex_lock(&dev->phy_mutex);
-+      /* write the MII command */
-+      ret = mcs7830_set_reg(dev, HIF_REG_PHY_CMD1, 2, cmd);
-+      if (ret < 0)
-+              goto out;
-+
-+      /* wait for the data to become valid, should be within < 1ms */
-+      for (i = 0; i < 10; i++) {
-+              ret = mcs7830_get_reg(dev, HIF_REG_PHY_CMD1, 2, cmd);
-+              if ((ret < 0) || (cmd[1] & HIF_REG_PHY_CMD2_READY_FLAG_BIT))
-+                      break;
-+              ret = -EIO;
-+              msleep(1);
-+      }
-+      if (ret < 0)
-+              goto out;
-+
-+      /* read actual register contents */
-+      ret = mcs7830_get_reg(dev, HIF_REG_PHY_DATA, 2, &val);
-+      if (ret < 0)
-+              goto out;
-+      ret = le16_to_cpu(val);
-+      dev_dbg(&dev->udev->dev, "read PHY reg %02x: %04x (%d tries)\n",
-+              index, val, i);
-+out:
-+      mutex_unlock(&dev->phy_mutex);
-+      return ret;
-+}
-+
-+static int mcs7830_write_phy(struct usbnet *dev, u8 index, u16 val)
-+{
-+      int ret;
-+      int i;
-+      __le16 le_val;
-+
-+      u8 cmd[2] = {
-+              HIF_REG_PHY_CMD1_WRITE | HIF_REG_PHY_CMD1_PHYADDR,
-+              HIF_REG_PHY_CMD2_PEND_FLAG_BIT | (index & 0x1F),
-+      };
-+
-+      mutex_lock(&dev->phy_mutex);
-+
-+      /* write the new register contents */
-+      le_val = cpu_to_le16(val);
-+      ret = mcs7830_set_reg(dev, HIF_REG_PHY_DATA, 2, &le_val);
-+      if (ret < 0)
-+              goto out;
-+
-+      /* write the MII command */
-+      ret = mcs7830_set_reg(dev, HIF_REG_PHY_CMD1, 2, cmd);
-+      if (ret < 0)
-+              goto out;
-+
-+      /* wait for the command to be accepted by the PHY */
-+      for (i = 0; i < 10; i++) {
-+              ret = mcs7830_get_reg(dev, HIF_REG_PHY_CMD1, 2, cmd);
-+              if ((ret < 0) || (cmd[1] & HIF_REG_PHY_CMD2_READY_FLAG_BIT))
-+                      break;
-+              ret = -EIO;
-+              msleep(1);
-+      }
-+      if (ret < 0)
-+              goto out;
-+
-+      ret = 0;
-+      dev_dbg(&dev->udev->dev, "write PHY reg %02x: %04x (%d tries)\n",
-+              index, val, i);
-+out:
-+      mutex_unlock(&dev->phy_mutex);
-+      return ret;
-+}
-+
-+/*
-+ * This algorithm comes from the original mcs7830 version 1.4 driver,
-+ * not sure if it is needed.
-+ */
-+static int mcs7830_set_autoneg(struct usbnet *dev, int ptrUserPhyMode)
-+{
-+      int ret;
-+      /* Enable all media types */
-+      ret = mcs7830_write_phy(dev, MII_ADVERTISE, MCS7830_MII_ADVERTISE);
-+
-+      /* First reset BMCR */
-+      if (!ret)
-+              ret = mcs7830_write_phy(dev, MII_BMCR, 0x0000);
-+      /* Enable Auto Neg */
-+      if (!ret)
-+              ret = mcs7830_write_phy(dev, MII_BMCR, BMCR_ANENABLE);
-+      /* Restart Auto Neg (Keep the Enable Auto Neg Bit Set) */
-+      if (!ret)
-+              ret = mcs7830_write_phy(dev, MII_BMCR,
-+                              BMCR_ANENABLE | BMCR_ANRESTART  );
-+      return ret;
-+}
-+
-+
-+/*
-+ * if we can read register 22, the chip revision is C or higher
-+ */
-+static int mcs7830_get_rev(struct usbnet *dev)
-+{
-+      u8 dummy[2];
-+      int ret;
-+      ret = mcs7830_get_reg(dev, HIF_REG_FRAME_DROP_COUNTER, 2, dummy);
-+      if (ret > 0)
-+              return 2; /* Rev C or later */
-+      return 1; /* earlier revision */
-+}
-+
-+/*
-+ * On rev. C we need to set the pause threshold
-+ */
-+static void mcs7830_rev_C_fixup(struct usbnet *dev)
-+{
-+      u8 pause_threshold = HIF_REG_PAUSE_THRESHOLD_DEFAULT;
-+      int retry;
-+
-+      for (retry = 0; retry < 2; retry++) {
-+              if (mcs7830_get_rev(dev) == 2) {
-+                      dev_info(&dev->udev->dev, "applying rev.C fixup\n");
-+                      mcs7830_set_reg(dev, HIF_REG_PAUSE_THRESHOLD,
-+                                      1, &pause_threshold);
-+              }
-+              msleep(1);
-+      }
-+}
-+
-+static int mcs7830_mdio_read(struct net_device *netdev, int phy_id,
-+                           int location)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      return mcs7830_read_phy(dev, location);
-+}
-+
-+static void mcs7830_mdio_write(struct net_device *netdev, int phy_id,
-+                              int location, int val)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      mcs7830_write_phy(dev, location, val);
-+}
-+
-+static int mcs7830_ioctl(struct net_device *net, struct ifreq *rq, int cmd)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
-+}
-+
-+static inline struct mcs7830_data *mcs7830_get_data(struct usbnet *dev)
-+{
-+      return (struct mcs7830_data *)&dev->data;
-+}
-+
-+static void mcs7830_hif_update_multicast_hash(struct usbnet *dev)
-+{
-+      struct mcs7830_data *data = mcs7830_get_data(dev);
-+      mcs7830_set_reg_async(dev, HIF_REG_MULTICAST_HASH,
-+                              sizeof data->multi_filter,
-+                              data->multi_filter);
-+}
-+
-+static void mcs7830_hif_update_config(struct usbnet *dev)
-+{
-+      /* implementation specific to data->config
-+           (argument needs to be heap-based anyway - USB DMA!) */
-+      struct mcs7830_data *data = mcs7830_get_data(dev);
-+      mcs7830_set_reg_async(dev, HIF_REG_CONFIG, 1, &data->config);
-+}
-+
-+static void mcs7830_data_set_multicast(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct mcs7830_data *data = mcs7830_get_data(dev);
-+
-+      memset(data->multi_filter, 0, sizeof data->multi_filter);
-+
-+      data->config = HIF_REG_CONFIG_TXENABLE;
-+
-+      /* this should not be needed, but it doesn't work otherwise */
-+      data->config |= HIF_REG_CONFIG_ALLMULTICAST;
-+
-+      if (net->flags & IFF_PROMISC) {
-+              data->config |= HIF_REG_CONFIG_PROMISCUOUS;
-+      } else if (net->flags & IFF_ALLMULTI ||
-+                 netdev_mc_count(net) > MCS7830_MAX_MCAST) {
-+              data->config |= HIF_REG_CONFIG_ALLMULTICAST;
-+      } else if (netdev_mc_empty(net)) {
-+              /* just broadcast and directed */
-+      } else {
-+              /* We use the 20 byte dev->data
-+               * for our 8 byte filter buffer
-+               * to avoid allocating memory that
-+               * is tricky to free later */
-+              struct netdev_hw_addr *ha;
-+              u32 crc_bits;
-+
-+              /* Build the multicast hash filter. */
-+              netdev_for_each_mc_addr(ha, net) {
-+                      crc_bits = ether_crc(ETH_ALEN, ha->addr) >> 26;
-+                      data->multi_filter[crc_bits >> 3] |= 1 << (crc_bits & 7);
-+              }
-+      }
-+}
-+
-+static int mcs7830_apply_base_config(struct usbnet *dev)
-+{
-+      int ret;
-+
-+      /* re-configure known MAC (suspend case etc.) */
-+      ret = mcs7830_hif_set_mac_address(dev, dev->net->dev_addr);
-+      if (ret) {
-+              dev_info(&dev->udev->dev, "Cannot set MAC address\n");
-+              goto out;
-+      }
-+
-+      /* Set up PHY */
-+      ret = mcs7830_set_autoneg(dev, 0);
-+      if (ret) {
-+              dev_info(&dev->udev->dev, "Cannot set autoneg\n");
-+              goto out;
-+      }
-+
-+      mcs7830_hif_update_multicast_hash(dev);
-+      mcs7830_hif_update_config(dev);
-+
-+      mcs7830_rev_C_fixup(dev);
-+      ret = 0;
-+out:
-+      return ret;
-+}
-+
-+/* credits go to asix_set_multicast */
-+static void mcs7830_set_multicast(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      mcs7830_data_set_multicast(net);
-+
-+      mcs7830_hif_update_multicast_hash(dev);
-+      mcs7830_hif_update_config(dev);
-+}
-+
-+static int mcs7830_get_regs_len(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      switch (mcs7830_get_rev(dev)) {
-+      case 1:
-+              return 21;
-+      case 2:
-+              return 32;
-+      }
-+      return 0;
-+}
-+
-+static void mcs7830_get_drvinfo(struct net_device *net, struct ethtool_drvinfo *drvinfo)
-+{
-+      usbnet_get_drvinfo(net, drvinfo);
-+      drvinfo->regdump_len = mcs7830_get_regs_len(net);
-+}
-+
-+static void mcs7830_get_regs(struct net_device *net, struct ethtool_regs *regs, void *data)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      regs->version = mcs7830_get_rev(dev);
-+      mcs7830_get_reg(dev, 0, regs->len, data);
-+}
-+
-+static const struct ethtool_ops mcs7830_ethtool_ops = {
-+      .get_drvinfo            = mcs7830_get_drvinfo,
-+      .get_regs_len           = mcs7830_get_regs_len,
-+      .get_regs               = mcs7830_get_regs,
-+
-+      /* common usbnet calls */
-+      .get_link               = usbnet_get_link,
-+      .get_msglevel           = usbnet_get_msglevel,
-+      .set_msglevel           = usbnet_set_msglevel,
-+      .get_settings           = usbnet_get_settings,
-+      .set_settings           = usbnet_set_settings,
-+      .nway_reset             = usbnet_nway_reset,
-+};
-+
-+static const struct net_device_ops mcs7830_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = usbnet_change_mtu,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = mcs7830_ioctl,
-+      .ndo_set_rx_mode        = mcs7830_set_multicast,
-+      .ndo_set_mac_address    = mcs7830_set_mac_address,
-+};
-+
-+static int mcs7830_bind(struct usbnet *dev, struct usb_interface *udev)
-+{
-+      struct net_device *net = dev->net;
-+      int ret;
-+      int retry;
-+
-+      /* Initial startup: Gather MAC address setting from EEPROM */
-+      ret = -EINVAL;
-+      for (retry = 0; retry < 5 && ret; retry++)
-+              ret = mcs7830_hif_get_mac_address(dev, net->dev_addr);
-+      if (ret) {
-+              dev_warn(&dev->udev->dev, "Cannot read MAC address\n");
-+              goto out;
-+      }
-+
-+      mcs7830_data_set_multicast(net);
-+
-+      ret = mcs7830_apply_base_config(dev);
-+      if (ret)
-+              goto out;
-+
-+      net->ethtool_ops = &mcs7830_ethtool_ops;
-+      net->netdev_ops = &mcs7830_netdev_ops;
-+
-+      /* reserve space for the status byte on rx */
-+      dev->rx_urb_size = ETH_FRAME_LEN + 1;
-+
-+      dev->mii.mdio_read = mcs7830_mdio_read;
-+      dev->mii.mdio_write = mcs7830_mdio_write;
-+      dev->mii.dev = net;
-+      dev->mii.phy_id_mask = 0x3f;
-+      dev->mii.reg_num_mask = 0x1f;
-+      dev->mii.phy_id = *((u8 *) net->dev_addr + 1);
-+
-+      ret = usbnet_get_endpoints(dev, udev);
-+out:
-+      return ret;
-+}
-+
-+/* The chip always appends a status byte that we need to strip */
-+static int mcs7830_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      u8 status;
-+
-+      /* This check is no longer done by usbnet */
-+      if (skb->len < dev->net->hard_header_len) {
-+              dev_err(&dev->udev->dev, "unexpected tiny rx frame\n");
-+              return 0;
-+      }
-+
-+      skb_trim(skb, skb->len - 1);
-+      status = skb->data[skb->len];
-+
-+      if (status != MCS7830_RX_FRAME_CORRECT) {
-+              dev_dbg(&dev->udev->dev, "rx fixup status %x\n", status);
-+
-+              /* hmm, perhaps usbnet.c already sees a globally visible
-+                 frame error and increments rx_errors on its own already? */
-+              dev->net->stats.rx_errors++;
-+
-+              if (status &    (MCS7830_RX_SHORT_FRAME
-+                              |MCS7830_RX_LENGTH_ERROR
-+                              |MCS7830_RX_LARGE_FRAME))
-+                      dev->net->stats.rx_length_errors++;
-+              if (status & MCS7830_RX_ALIGNMENT_ERROR)
-+                      dev->net->stats.rx_frame_errors++;
-+              if (status & MCS7830_RX_CRC_ERROR)
-+                      dev->net->stats.rx_crc_errors++;
-+      }
-+
-+      return skb->len > 0;
-+}
-+
-+static void mcs7830_status(struct usbnet *dev, struct urb *urb)
-+{
-+      u8 *buf = urb->transfer_buffer;
-+      bool link, link_changed;
-+
-+      if (urb->actual_length < 16)
-+              return;
-+
-+      link = !(buf[1] == 0x20);
-+      link_changed = netif_carrier_ok(dev->net) != link;
-+      if (link_changed) {
-+              usbnet_link_change(dev, link, 0);
-+              netdev_dbg(dev->net, "Link Status is: %d\n", link);
-+      }
-+}
-+
-+static const struct driver_info moschip_info = {
-+      .description    = "MOSCHIP 7830/7832/7730 usb-NET adapter",
-+      .bind           = mcs7830_bind,
-+      .rx_fixup       = mcs7830_rx_fixup,
-+      .flags          = FLAG_ETHER | FLAG_LINK_INTR,
-+      .status         = mcs7830_status,
-+      .in             = 1,
-+      .out            = 2,
-+};
-+
-+static const struct driver_info sitecom_info = {
-+      .description    = "Sitecom LN-30 usb-NET adapter",
-+      .bind           = mcs7830_bind,
-+      .rx_fixup       = mcs7830_rx_fixup,
-+      .flags          = FLAG_ETHER | FLAG_LINK_INTR,
-+      .status         = mcs7830_status,
-+      .in             = 1,
-+      .out            = 2,
-+};
-+
-+static const struct usb_device_id products[] = {
-+      {
-+              USB_DEVICE(MCS7830_VENDOR_ID, MCS7832_PRODUCT_ID),
-+              .driver_info = (unsigned long) &moschip_info,
-+      },
-+      {
-+              USB_DEVICE(MCS7830_VENDOR_ID, MCS7830_PRODUCT_ID),
-+              .driver_info = (unsigned long) &moschip_info,
-+      },
-+      {
-+              USB_DEVICE(MCS7830_VENDOR_ID, MCS7730_PRODUCT_ID),
-+              .driver_info = (unsigned long) &moschip_info,
-+      },
-+      {
-+              USB_DEVICE(SITECOM_VENDOR_ID, LN_030_PRODUCT_ID),
-+              .driver_info = (unsigned long) &sitecom_info,
-+      },
-+      {},
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static int mcs7830_reset_resume (struct usb_interface *intf)
-+{
-+      /* YES, this function is successful enough that ethtool -d
-+           does show same output pre-/post-suspend */
-+
-+      struct usbnet           *dev = usb_get_intfdata(intf);
-+
-+      mcs7830_apply_base_config(dev);
-+
-+      usbnet_resume(intf);
-+
-+      return 0;
-+}
-+
-+static struct usb_driver mcs7830_driver = {
-+      .name = driver_name,
-+      .id_table = products,
-+      .probe = usbnet_probe,
-+      .disconnect = usbnet_disconnect,
-+      .suspend = usbnet_suspend,
-+      .resume = usbnet_resume,
-+      .reset_resume = mcs7830_reset_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(mcs7830_driver);
-+
-+MODULE_DESCRIPTION("USB to network adapter MCS7830)");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/net1080.c backports-4.2.6-1/drivers/net/usb/net1080.c
---- backports-4.2.6-1.org/drivers/net/usb/net1080.c    1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/net1080.c        2016-06-28 14:35:17.995307218 +0200
-@@ -0,0 +1,544 @@
-+/*
-+ * Net1080 based USB host-to-host cables
-+ * Copyright (C) 2000-2005 by David Brownell
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+// #define    DEBUG                   // error path messages, extra info
-+// #define    VERBOSE                 // more; success messages
-+
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/slab.h>
-+
-+#include <asm/unaligned.h>
-+
-+
-+/*
-+ * Netchip 1080 driver ... http://www.netchip.com
-+ * (Sept 2004:  End-of-life announcement has been sent.)
-+ * Used in (some) LapLink cables
-+ */
-+
-+#define frame_errors  data[1]
-+
-+/*
-+ * NetChip framing of ethernet packets, supporting additional error
-+ * checks for links that may drop bulk packets from inside messages.
-+ * Odd USB length == always short read for last usb packet.
-+ *    - nc_header
-+ *    - Ethernet header (14 bytes)
-+ *    - payload
-+ *    - (optional padding byte, if needed so length becomes odd)
-+ *    - nc_trailer
-+ *
-+ * This framing is to be avoided for non-NetChip devices.
-+ */
-+
-+struct nc_header {            // packed:
-+      __le16  hdr_len;                // sizeof nc_header (LE, all)
-+      __le16  packet_len;             // payload size (including ethhdr)
-+      __le16  packet_id;              // detects dropped packets
-+#define MIN_HEADER    6
-+
-+      // all else is optional, and must start with:
-+      // __le16       vendorId;       // from usb-if
-+      // __le16       productId;
-+} __packed;
-+
-+#define       PAD_BYTE        ((unsigned char)0xAC)
-+
-+struct nc_trailer {
-+      __le16  packet_id;
-+} __packed;
-+
-+// packets may use FLAG_FRAMING_NC and optional pad
-+#define FRAMED_SIZE(mtu) (sizeof (struct nc_header) \
-+                              + sizeof (struct ethhdr) \
-+                              + (mtu) \
-+                              + 1 \
-+                              + sizeof (struct nc_trailer))
-+
-+#define MIN_FRAMED    FRAMED_SIZE(0)
-+
-+/* packets _could_ be up to 64KB... */
-+#define NC_MAX_PACKET 32767
-+
-+
-+/*
-+ * Zero means no timeout; else, how long a 64 byte bulk packet may be queued
-+ * before the hardware drops it.  If that's done, the driver will need to
-+ * frame network packets to guard against the dropped USB packets.  The win32
-+ * driver sets this for both sides of the link.
-+ */
-+#define       NC_READ_TTL_MS  ((u8)255)       // ms
-+
-+/*
-+ * We ignore most registers and EEPROM contents.
-+ */
-+#define       REG_USBCTL      ((u8)0x04)
-+#define REG_TTL               ((u8)0x10)
-+#define REG_STATUS    ((u8)0x11)
-+
-+/*
-+ * Vendor specific requests to read/write data
-+ */
-+#define       REQUEST_REGISTER        ((u8)0x10)
-+#define       REQUEST_EEPROM          ((u8)0x11)
-+
-+static int
-+nc_vendor_read(struct usbnet *dev, u8 req, u8 regnum, u16 *retval_ptr)
-+{
-+      int status = usbnet_read_cmd(dev, req,
-+                                   USB_DIR_IN | USB_TYPE_VENDOR |
-+                                   USB_RECIP_DEVICE,
-+                                   0, regnum, retval_ptr,
-+                                   sizeof *retval_ptr);
-+      if (status > 0)
-+              status = 0;
-+      if (!status)
-+              le16_to_cpus(retval_ptr);
-+      return status;
-+}
-+
-+static inline int
-+nc_register_read(struct usbnet *dev, u8 regnum, u16 *retval_ptr)
-+{
-+      return nc_vendor_read(dev, REQUEST_REGISTER, regnum, retval_ptr);
-+}
-+
-+// no retval ... can become async, usable in_interrupt()
-+static void
-+nc_vendor_write(struct usbnet *dev, u8 req, u8 regnum, u16 value)
-+{
-+      usbnet_write_cmd(dev, req,
-+                       USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+                       value, regnum, NULL, 0);
-+}
-+
-+static inline void
-+nc_register_write(struct usbnet *dev, u8 regnum, u16 value)
-+{
-+      nc_vendor_write(dev, REQUEST_REGISTER, regnum, value);
-+}
-+
-+
-+#if 0
-+static void nc_dump_registers(struct usbnet *dev)
-+{
-+      u8      reg;
-+      u16     *vp = kmalloc(sizeof (u16));
-+
-+      if (!vp)
-+              return;
-+
-+      netdev_dbg(dev->net, "registers:\n");
-+      for (reg = 0; reg < 0x20; reg++) {
-+              int retval;
-+
-+              // reading some registers is trouble
-+              if (reg >= 0x08 && reg <= 0xf)
-+                      continue;
-+              if (reg >= 0x12 && reg <= 0x1e)
-+                      continue;
-+
-+              retval = nc_register_read(dev, reg, vp);
-+              if (retval < 0)
-+                      netdev_dbg(dev->net, "reg [0x%x] ==> error %d\n",
-+                                 reg, retval);
-+              else
-+                      netdev_dbg(dev->net, "reg [0x%x] = 0x%x\n", reg, *vp);
-+      }
-+      kfree(vp);
-+}
-+#endif
-+
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * Control register
-+ */
-+
-+#define       USBCTL_WRITABLE_MASK    0x1f0f
-+// bits 15-13 reserved, r/o
-+#define       USBCTL_ENABLE_LANG      (1 << 12)
-+#define       USBCTL_ENABLE_MFGR      (1 << 11)
-+#define       USBCTL_ENABLE_PROD      (1 << 10)
-+#define       USBCTL_ENABLE_SERIAL    (1 << 9)
-+#define       USBCTL_ENABLE_DEFAULTS  (1 << 8)
-+// bits 7-4 reserved, r/o
-+#define       USBCTL_FLUSH_OTHER      (1 << 3)
-+#define       USBCTL_FLUSH_THIS       (1 << 2)
-+#define       USBCTL_DISCONN_OTHER    (1 << 1)
-+#define       USBCTL_DISCONN_THIS     (1 << 0)
-+
-+static inline void nc_dump_usbctl(struct usbnet *dev, u16 usbctl)
-+{
-+      netif_dbg(dev, link, dev->net,
-+                "net1080 %s-%s usbctl 0x%x:%s%s%s%s%s; this%s%s; other%s%s; r/o 0x%x\n",
-+                dev->udev->bus->bus_name, dev->udev->devpath,
-+                usbctl,
-+                (usbctl & USBCTL_ENABLE_LANG) ? " lang" : "",
-+                (usbctl & USBCTL_ENABLE_MFGR) ? " mfgr" : "",
-+                (usbctl & USBCTL_ENABLE_PROD) ? " prod" : "",
-+                (usbctl & USBCTL_ENABLE_SERIAL) ? " serial" : "",
-+                (usbctl & USBCTL_ENABLE_DEFAULTS) ? " defaults" : "",
-+
-+                (usbctl & USBCTL_FLUSH_THIS) ? " FLUSH" : "",
-+                (usbctl & USBCTL_DISCONN_THIS) ? " DIS" : "",
-+
-+                (usbctl & USBCTL_FLUSH_OTHER) ? " FLUSH" : "",
-+                (usbctl & USBCTL_DISCONN_OTHER) ? " DIS" : "",
-+
-+                usbctl & ~USBCTL_WRITABLE_MASK);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * Status register
-+ */
-+
-+#define       STATUS_PORT_A           (1 << 15)
-+
-+#define       STATUS_CONN_OTHER       (1 << 14)
-+#define       STATUS_SUSPEND_OTHER    (1 << 13)
-+#define       STATUS_MAILBOX_OTHER    (1 << 12)
-+#define       STATUS_PACKETS_OTHER(n) (((n) >> 8) & 0x03)
-+
-+#define       STATUS_CONN_THIS        (1 << 6)
-+#define       STATUS_SUSPEND_THIS     (1 << 5)
-+#define       STATUS_MAILBOX_THIS     (1 << 4)
-+#define       STATUS_PACKETS_THIS(n)  (((n) >> 0) & 0x03)
-+
-+#define       STATUS_UNSPEC_MASK      0x0c8c
-+#define       STATUS_NOISE_MASK       ((u16)~(0x0303|STATUS_UNSPEC_MASK))
-+
-+
-+static inline void nc_dump_status(struct usbnet *dev, u16 status)
-+{
-+      netif_dbg(dev, link, dev->net,
-+                "net1080 %s-%s status 0x%x: this (%c) PKT=%d%s%s%s; other PKT=%d%s%s%s; unspec 0x%x\n",
-+                dev->udev->bus->bus_name, dev->udev->devpath,
-+                status,
-+
-+                // XXX the packet counts don't seem right
-+                // (1 at reset, not 0); maybe UNSPEC too
-+
-+                (status & STATUS_PORT_A) ? 'A' : 'B',
-+                STATUS_PACKETS_THIS(status),
-+                (status & STATUS_CONN_THIS) ? " CON" : "",
-+                (status & STATUS_SUSPEND_THIS) ? " SUS" : "",
-+                (status & STATUS_MAILBOX_THIS) ? " MBOX" : "",
-+
-+                STATUS_PACKETS_OTHER(status),
-+                (status & STATUS_CONN_OTHER) ? " CON" : "",
-+                (status & STATUS_SUSPEND_OTHER) ? " SUS" : "",
-+                (status & STATUS_MAILBOX_OTHER) ? " MBOX" : "",
-+
-+                status & STATUS_UNSPEC_MASK);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * TTL register
-+ */
-+
-+#define       TTL_THIS(ttl)   (0x00ff & ttl)
-+#define       TTL_OTHER(ttl)  (0x00ff & (ttl >> 8))
-+#define MK_TTL(this,other)    ((u16)(((other)<<8)|(0x00ff&(this))))
-+
-+static inline void nc_dump_ttl(struct usbnet *dev, u16 ttl)
-+{
-+      netif_dbg(dev, link, dev->net, "net1080 %s-%s ttl 0x%x this = %d, other = %d\n",
-+                dev->udev->bus->bus_name, dev->udev->devpath,
-+                ttl, TTL_THIS(ttl), TTL_OTHER(ttl));
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static int net1080_reset(struct usbnet *dev)
-+{
-+      u16             usbctl, status, ttl;
-+      u16             vp;
-+      int             retval;
-+
-+      // nc_dump_registers(dev);
-+
-+      if ((retval = nc_register_read(dev, REG_STATUS, &vp)) < 0) {
-+              netdev_dbg(dev->net, "can't read %s-%s status: %d\n",
-+                         dev->udev->bus->bus_name, dev->udev->devpath, retval);
-+              goto done;
-+      }
-+      status = vp;
-+      nc_dump_status(dev, status);
-+
-+      if ((retval = nc_register_read(dev, REG_USBCTL, &vp)) < 0) {
-+              netdev_dbg(dev->net, "can't read USBCTL, %d\n", retval);
-+              goto done;
-+      }
-+      usbctl = vp;
-+      nc_dump_usbctl(dev, usbctl);
-+
-+      nc_register_write(dev, REG_USBCTL,
-+                      USBCTL_FLUSH_THIS | USBCTL_FLUSH_OTHER);
-+
-+      if ((retval = nc_register_read(dev, REG_TTL, &vp)) < 0) {
-+              netdev_dbg(dev->net, "can't read TTL, %d\n", retval);
-+              goto done;
-+      }
-+      ttl = vp;
-+      // nc_dump_ttl(dev, ttl);
-+
-+      nc_register_write(dev, REG_TTL,
-+                      MK_TTL(NC_READ_TTL_MS, TTL_OTHER(ttl)) );
-+      netdev_dbg(dev->net, "assigned TTL, %d ms\n", NC_READ_TTL_MS);
-+
-+      netif_info(dev, link, dev->net, "port %c, peer %sconnected\n",
-+                 (status & STATUS_PORT_A) ? 'A' : 'B',
-+                 (status & STATUS_CONN_OTHER) ? "" : "dis");
-+      retval = 0;
-+
-+done:
-+      return retval;
-+}
-+
-+static int net1080_check_connect(struct usbnet *dev)
-+{
-+      int                     retval;
-+      u16                     status;
-+      u16                     vp;
-+
-+      retval = nc_register_read(dev, REG_STATUS, &vp);
-+      status = vp;
-+      if (retval != 0) {
-+              netdev_dbg(dev->net, "net1080_check_conn read - %d\n", retval);
-+              return retval;
-+      }
-+      if ((status & STATUS_CONN_OTHER) != STATUS_CONN_OTHER)
-+              return -ENOLINK;
-+      return 0;
-+}
-+
-+static void nc_ensure_sync(struct usbnet *dev)
-+{
-+      if (++dev->frame_errors <= 5)
-+              return;
-+
-+      if (usbnet_write_cmd_async(dev, REQUEST_REGISTER,
-+                                      USB_DIR_OUT | USB_TYPE_VENDOR |
-+                                      USB_RECIP_DEVICE,
-+                                      USBCTL_FLUSH_THIS |
-+                                      USBCTL_FLUSH_OTHER,
-+                                      REG_USBCTL, NULL, 0))
-+              return;
-+
-+      netif_dbg(dev, rx_err, dev->net,
-+                "flush net1080; too many framing errors\n");
-+      dev->frame_errors = 0;
-+}
-+
-+static int net1080_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      struct nc_header        *header;
-+      struct nc_trailer       *trailer;
-+      u16                     hdr_len, packet_len;
-+
-+      /* This check is no longer done by usbnet */
-+      if (skb->len < dev->net->hard_header_len)
-+              return 0;
-+
-+      if (!(skb->len & 0x01)) {
-+              netdev_dbg(dev->net, "rx framesize %d range %d..%d mtu %d\n",
-+                         skb->len, dev->net->hard_header_len, dev->hard_mtu,
-+                         dev->net->mtu);
-+              dev->net->stats.rx_frame_errors++;
-+              nc_ensure_sync(dev);
-+              return 0;
-+      }
-+
-+      header = (struct nc_header *) skb->data;
-+      hdr_len = le16_to_cpup(&header->hdr_len);
-+      packet_len = le16_to_cpup(&header->packet_len);
-+      if (FRAMED_SIZE(packet_len) > NC_MAX_PACKET) {
-+              dev->net->stats.rx_frame_errors++;
-+              netdev_dbg(dev->net, "packet too big, %d\n", packet_len);
-+              nc_ensure_sync(dev);
-+              return 0;
-+      } else if (hdr_len < MIN_HEADER) {
-+              dev->net->stats.rx_frame_errors++;
-+              netdev_dbg(dev->net, "header too short, %d\n", hdr_len);
-+              nc_ensure_sync(dev);
-+              return 0;
-+      } else if (hdr_len > MIN_HEADER) {
-+              // out of band data for us?
-+              netdev_dbg(dev->net, "header OOB, %d bytes\n", hdr_len - MIN_HEADER);
-+              nc_ensure_sync(dev);
-+              // switch (vendor/product ids) { ... }
-+      }
-+      skb_pull(skb, hdr_len);
-+
-+      trailer = (struct nc_trailer *)
-+              (skb->data + skb->len - sizeof *trailer);
-+      skb_trim(skb, skb->len - sizeof *trailer);
-+
-+      if ((packet_len & 0x01) == 0) {
-+              if (skb->data [packet_len] != PAD_BYTE) {
-+                      dev->net->stats.rx_frame_errors++;
-+                      netdev_dbg(dev->net, "bad pad\n");
-+                      return 0;
-+              }
-+              skb_trim(skb, skb->len - 1);
-+      }
-+      if (skb->len != packet_len) {
-+              dev->net->stats.rx_frame_errors++;
-+              netdev_dbg(dev->net, "bad packet len %d (expected %d)\n",
-+                         skb->len, packet_len);
-+              nc_ensure_sync(dev);
-+              return 0;
-+      }
-+      if (header->packet_id != get_unaligned(&trailer->packet_id)) {
-+              dev->net->stats.rx_fifo_errors++;
-+              netdev_dbg(dev->net, "(2+ dropped) rx packet_id mismatch 0x%x 0x%x\n",
-+                         le16_to_cpu(header->packet_id),
-+                         le16_to_cpu(trailer->packet_id));
-+              return 0;
-+      }
-+#if 0
-+      netdev_dbg(dev->net, "frame <rx h %d p %d id %d\n", header->hdr_len,
-+                 header->packet_len, header->packet_id);
-+#endif
-+      dev->frame_errors = 0;
-+      return 1;
-+}
-+
-+static struct sk_buff *
-+net1080_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
-+{
-+      struct sk_buff          *skb2;
-+      struct nc_header        *header = NULL;
-+      struct nc_trailer       *trailer = NULL;
-+      int                     padlen = sizeof (struct nc_trailer);
-+      int                     len = skb->len;
-+
-+      if (!((len + padlen + sizeof (struct nc_header)) & 0x01))
-+              padlen++;
-+      if (!skb_cloned(skb)) {
-+              int     headroom = skb_headroom(skb);
-+              int     tailroom = skb_tailroom(skb);
-+
-+              if (padlen <= tailroom &&
-+                  sizeof(struct nc_header) <= headroom)
-+                      /* There's enough head and tail room */
-+                      goto encapsulate;
-+
-+              if ((sizeof (struct nc_header) + padlen) <
-+                              (headroom + tailroom)) {
-+                      /* There's enough total room, so just readjust */
-+                      skb->data = memmove(skb->head
-+                                              + sizeof (struct nc_header),
-+                                          skb->data, skb->len);
-+                      skb_set_tail_pointer(skb, len);
-+                      goto encapsulate;
-+              }
-+      }
-+
-+      /* Create a new skb to use with the correct size */
-+      skb2 = skb_copy_expand(skb,
-+                              sizeof (struct nc_header),
-+                              padlen,
-+                              flags);
-+      dev_kfree_skb_any(skb);
-+      if (!skb2)
-+              return skb2;
-+      skb = skb2;
-+
-+encapsulate:
-+      /* header first */
-+      header = (struct nc_header *) skb_push(skb, sizeof *header);
-+      header->hdr_len = cpu_to_le16(sizeof (*header));
-+      header->packet_len = cpu_to_le16(len);
-+      header->packet_id = cpu_to_le16((u16)dev->xid++);
-+
-+      /* maybe pad; then trailer */
-+      if (!((skb->len + sizeof *trailer) & 0x01))
-+              *skb_put(skb, 1) = PAD_BYTE;
-+      trailer = (struct nc_trailer *) skb_put(skb, sizeof *trailer);
-+      put_unaligned(header->packet_id, &trailer->packet_id);
-+#if 0
-+      netdev_dbg(dev->net, "frame >tx h %d p %d id %d\n",
-+                 header->hdr_len, header->packet_len,
-+                 header->packet_id);
-+#endif
-+      return skb;
-+}
-+
-+static int net1080_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      unsigned        extra = sizeof (struct nc_header)
-+                              + 1
-+                              + sizeof (struct nc_trailer);
-+
-+      dev->net->hard_header_len += extra;
-+      dev->rx_urb_size = dev->net->hard_header_len + dev->net->mtu;
-+      dev->hard_mtu = NC_MAX_PACKET;
-+      return usbnet_get_endpoints (dev, intf);
-+}
-+
-+static const struct driver_info       net1080_info = {
-+      .description =  "NetChip TurboCONNECT",
-+      .flags =        FLAG_POINTTOPOINT | FLAG_FRAMING_NC,
-+      .bind =         net1080_bind,
-+      .reset =        net1080_reset,
-+      .check_connect = net1080_check_connect,
-+      .rx_fixup =     net1080_rx_fixup,
-+      .tx_fixup =     net1080_tx_fixup,
-+};
-+
-+static const struct usb_device_id     products [] = {
-+{
-+      USB_DEVICE(0x0525, 0x1080),     // NetChip ref design
-+      .driver_info =  (unsigned long) &net1080_info,
-+}, {
-+      USB_DEVICE(0x06D0, 0x0622),     // Laplink Gold
-+      .driver_info =  (unsigned long) &net1080_info,
-+},
-+      { },            // END
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver net1080_driver = {
-+      .name =         "net1080",
-+      .id_table =     products,
-+      .probe =        usbnet_probe,
-+      .disconnect =   usbnet_disconnect,
-+      .suspend =      usbnet_suspend,
-+      .resume =       usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(net1080_driver);
-+
-+MODULE_AUTHOR("David Brownell");
-+MODULE_DESCRIPTION("NetChip 1080 based USB Host-to-Host Links");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/pegasus.c backports-4.2.6-1/drivers/net/usb/pegasus.c
---- backports-4.2.6-1.org/drivers/net/usb/pegasus.c    1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/pegasus.c        2016-06-28 14:35:17.995307218 +0200
-@@ -0,0 +1,1335 @@
-+/*
-+ *  Copyright (c) 1999-2013 Petko Manolov (petkan@nucleusys.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ *    ChangeLog:
-+ *            ....    Most of the time spent on reading sources & docs.
-+ *            v0.2.x  First official release for the Linux kernel.
-+ *            v0.3.0  Beutified and structured, some bugs fixed.
-+ *            v0.3.x  URBifying bulk requests and bugfixing. First relatively
-+ *                    stable release. Still can touch device's registers only
-+ *                    from top-halves.
-+ *            v0.4.0  Control messages remained unurbified are now URBs.
-+ *                    Now we can touch the HW at any time.
-+ *            v0.4.9  Control urbs again use process context to wait. Argh...
-+ *                    Some long standing bugs (enable_net_traffic) fixed.
-+ *                    Also nasty trick about resubmiting control urb from
-+ *                    interrupt context used. Please let me know how it
-+ *                    behaves. Pegasus II support added since this version.
-+ *                    TODO: suppressing HCD warnings spewage on disconnect.
-+ *            v0.4.13 Ethernet address is now set at probe(), not at open()
-+ *                    time as this seems to break dhcpd.
-+ *            v0.5.0  branch to 2.5.x kernels
-+ *            v0.5.1  ethtool support added
-+ *            v0.5.5  rx socket buffers are in a pool and the their allocation
-+ *                    is out of the interrupt routine.
-+ *            ...
-+ *            v0.9.3  simplified [get|set]_register(s), async update registers
-+ *                    logic revisited, receive skb_pool removed.
-+ */
-+
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/module.h>
-+#include <asm/byteorder.h>
-+#include <asm/uaccess.h>
-+#include "pegasus.h"
-+
-+/*
-+ * Version Information
-+ */
-+#define DRIVER_VERSION "v0.9.3 (2013/04/25)"
-+#define DRIVER_AUTHOR "Petko Manolov <petkan@nucleusys.com>"
-+#define DRIVER_DESC "Pegasus/Pegasus II USB Ethernet driver"
-+
-+static const char driver_name[] = "pegasus";
-+
-+#undef        PEGASUS_WRITE_EEPROM
-+#define       BMSR_MEDIA      (BMSR_10HALF | BMSR_10FULL | BMSR_100HALF | \
-+                      BMSR_100FULL | BMSR_ANEGCAPABLE)
-+
-+static bool loopback;
-+static bool mii_mode;
-+static char *devid;
-+
-+static struct usb_eth_dev usb_dev_id[] = {
-+#define       PEGASUS_DEV(pn, vid, pid, flags)        \
-+      {.name = pn, .vendor = vid, .device = pid, .private = flags},
-+#define PEGASUS_DEV_CLASS(pn, vid, pid, dclass, flags) \
-+      PEGASUS_DEV(pn, vid, pid, flags)
-+#include "pegasus.h"
-+#undef        PEGASUS_DEV
-+#undef        PEGASUS_DEV_CLASS
-+      {NULL, 0, 0, 0},
-+      {NULL, 0, 0, 0}
-+};
-+
-+static struct usb_device_id pegasus_ids[] = {
-+#define       PEGASUS_DEV(pn, vid, pid, flags) \
-+      {.match_flags = USB_DEVICE_ID_MATCH_DEVICE, .idVendor = vid, .idProduct = pid},
-+/*
-+ * The Belkin F8T012xx1 bluetooth adaptor has the same vendor and product
-+ * IDs as the Belkin F5D5050, so we need to teach the pegasus driver to
-+ * ignore adaptors belonging to the "Wireless" class 0xE0. For this one
-+ * case anyway, seeing as the pegasus is for "Wired" adaptors.
-+ */
-+#define PEGASUS_DEV_CLASS(pn, vid, pid, dclass, flags) \
-+      {.match_flags = (USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_DEV_CLASS), \
-+      .idVendor = vid, .idProduct = pid, .bDeviceClass = dclass},
-+#include "pegasus.h"
-+#undef        PEGASUS_DEV
-+#undef        PEGASUS_DEV_CLASS
-+      {},
-+      {}
-+};
-+
-+MODULE_AUTHOR(DRIVER_AUTHOR);
-+MODULE_DESCRIPTION(DRIVER_DESC);
-+MODULE_LICENSE("GPL");
-+module_param(loopback, bool, 0);
-+module_param(mii_mode, bool, 0);
-+module_param(devid, charp, 0);
-+MODULE_PARM_DESC(loopback, "Enable MAC loopback mode (bit 0)");
-+MODULE_PARM_DESC(mii_mode, "Enable HomePNA mode (bit 0),default=MII mode = 0");
-+MODULE_PARM_DESC(devid, "The format is: 'DEV_name:VendorID:DeviceID:Flags'");
-+
-+/* use ethtool to change the level for any given device */
-+static int msg_level = -1;
-+module_param(msg_level, int, 0);
-+MODULE_PARM_DESC(msg_level, "Override default message level");
-+
-+MODULE_DEVICE_TABLE(usb, pegasus_ids);
-+static const struct net_device_ops pegasus_netdev_ops;
-+
-+/*****/
-+
-+static void async_ctrl_callback(struct urb *urb)
-+{
-+      struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context;
-+      int status = urb->status;
-+
-+      if (status < 0)
-+              dev_dbg(&urb->dev->dev, "%s failed with %d", __func__, status);
-+      kfree(req);
-+      usb_free_urb(urb);
-+}
-+
-+static int get_registers(pegasus_t *pegasus, __u16 indx, __u16 size, void *data)
-+{
-+      int ret;
-+
-+      ret = usb_control_msg(pegasus->usb, usb_rcvctrlpipe(pegasus->usb, 0),
-+                            PEGASUS_REQ_GET_REGS, PEGASUS_REQT_READ, 0,
-+                            indx, data, size, 1000);
-+      if (ret < 0)
-+              netif_dbg(pegasus, drv, pegasus->net,
-+                        "%s returned %d\n", __func__, ret);
-+      return ret;
-+}
-+
-+static int set_registers(pegasus_t *pegasus, __u16 indx, __u16 size, void *data)
-+{
-+      int ret;
-+
-+      ret = usb_control_msg(pegasus->usb, usb_sndctrlpipe(pegasus->usb, 0),
-+                            PEGASUS_REQ_SET_REGS, PEGASUS_REQT_WRITE, 0,
-+                            indx, data, size, 100);
-+      if (ret < 0)
-+              netif_dbg(pegasus, drv, pegasus->net,
-+                        "%s returned %d\n", __func__, ret);
-+      return ret;
-+}
-+
-+static int set_register(pegasus_t *pegasus, __u16 indx, __u8 data)
-+{
-+      int ret;
-+
-+      ret = usb_control_msg(pegasus->usb, usb_sndctrlpipe(pegasus->usb, 0),
-+                            PEGASUS_REQ_SET_REG, PEGASUS_REQT_WRITE, data,
-+                            indx, &data, 1, 1000);
-+      if (ret < 0)
-+              netif_dbg(pegasus, drv, pegasus->net,
-+                        "%s returned %d\n", __func__, ret);
-+      return ret;
-+}
-+
-+static int update_eth_regs_async(pegasus_t *pegasus)
-+{
-+      int ret = -ENOMEM;
-+      struct urb *async_urb;
-+      struct usb_ctrlrequest *req;
-+
-+      req = kmalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC);
-+      if (req == NULL)
-+              return ret;
-+
-+      async_urb = usb_alloc_urb(0, GFP_ATOMIC);
-+      if (async_urb == NULL) {
-+              kfree(req);
-+              return ret;
-+      }
-+      req->bRequestType = PEGASUS_REQT_WRITE;
-+      req->bRequest = PEGASUS_REQ_SET_REGS;
-+      req->wValue = cpu_to_le16(0);
-+      req->wIndex = cpu_to_le16(EthCtrl0);
-+      req->wLength = cpu_to_le16(3);
-+
-+      usb_fill_control_urb(async_urb, pegasus->usb,
-+                           usb_sndctrlpipe(pegasus->usb, 0), (void *)req,
-+                           pegasus->eth_regs, 3, async_ctrl_callback, req);
-+
-+      ret = usb_submit_urb(async_urb, GFP_ATOMIC);
-+      if (ret) {
-+              if (ret == -ENODEV)
-+                      netif_device_detach(pegasus->net);
-+              netif_err(pegasus, drv, pegasus->net,
-+                        "%s returned %d\n", __func__, ret);
-+      }
-+      return ret;
-+}
-+
-+static int __mii_op(pegasus_t *p, __u8 phy, __u8 indx, __u16 *regd, __u8 cmd)
-+{
-+      int i;
-+      __u8 data[4] = { phy, 0, 0, indx };
-+      __le16 regdi;
-+      int ret = -ETIMEDOUT;
-+
-+      if (cmd & PHY_WRITE) {
-+              __le16 *t = (__le16 *) & data[1];
-+              *t = cpu_to_le16(*regd);
-+      }
-+      set_register(p, PhyCtrl, 0);
-+      set_registers(p, PhyAddr, sizeof(data), data);
-+      set_register(p, PhyCtrl, (indx | cmd));
-+      for (i = 0; i < REG_TIMEOUT; i++) {
-+              ret = get_registers(p, PhyCtrl, 1, data);
-+              if (ret < 0)
-+                      goto fail;
-+              if (data[0] & PHY_DONE)
-+                      break;
-+      }
-+      if (i >= REG_TIMEOUT)
-+              goto fail;
-+      if (cmd & PHY_READ) {
-+              ret = get_registers(p, PhyData, 2, &regdi);
-+              *regd = le16_to_cpu(regdi);
-+              return ret;
-+      }
-+      return 0;
-+fail:
-+      netif_dbg(p, drv, p->net, "%s failed\n", __func__);
-+      return ret;
-+}
-+
-+/* Returns non-negative int on success, error on failure */
-+static int read_mii_word(pegasus_t *pegasus, __u8 phy, __u8 indx, __u16 *regd)
-+{
-+      return __mii_op(pegasus, phy, indx, regd, PHY_READ);
-+}
-+
-+/* Returns zero on success, error on failure */
-+static int write_mii_word(pegasus_t *pegasus, __u8 phy, __u8 indx, __u16 *regd)
-+{
-+      return __mii_op(pegasus, phy, indx, regd, PHY_WRITE);
-+}
-+
-+static int mdio_read(struct net_device *dev, int phy_id, int loc)
-+{
-+      pegasus_t *pegasus = netdev_priv(dev);
-+      u16 res;
-+
-+      read_mii_word(pegasus, phy_id, loc, &res);
-+      return (int)res;
-+}
-+
-+static void mdio_write(struct net_device *dev, int phy_id, int loc, int val)
-+{
-+      pegasus_t *pegasus = netdev_priv(dev);
-+      u16 data = val;
-+
-+      write_mii_word(pegasus, phy_id, loc, &data);
-+}
-+
-+static int read_eprom_word(pegasus_t *pegasus, __u8 index, __u16 *retdata)
-+{
-+      int i;
-+      __u8 tmp;
-+      __le16 retdatai;
-+      int ret;
-+
-+      set_register(pegasus, EpromCtrl, 0);
-+      set_register(pegasus, EpromOffset, index);
-+      set_register(pegasus, EpromCtrl, EPROM_READ);
-+
-+      for (i = 0; i < REG_TIMEOUT; i++) {
-+              ret = get_registers(pegasus, EpromCtrl, 1, &tmp);
-+              if (tmp & EPROM_DONE)
-+                      break;
-+              if (ret == -ESHUTDOWN)
-+                      goto fail;
-+      }
-+      if (i >= REG_TIMEOUT)
-+              goto fail;
-+
-+      ret = get_registers(pegasus, EpromData, 2, &retdatai);
-+      *retdata = le16_to_cpu(retdatai);
-+      return ret;
-+
-+fail:
-+      netif_warn(pegasus, drv, pegasus->net, "%s failed\n", __func__);
-+      return -ETIMEDOUT;
-+}
-+
-+#ifdef        PEGASUS_WRITE_EEPROM
-+static inline void enable_eprom_write(pegasus_t *pegasus)
-+{
-+      __u8 tmp;
-+
-+      get_registers(pegasus, EthCtrl2, 1, &tmp);
-+      set_register(pegasus, EthCtrl2, tmp | EPROM_WR_ENABLE);
-+}
-+
-+static inline void disable_eprom_write(pegasus_t *pegasus)
-+{
-+      __u8 tmp;
-+
-+      get_registers(pegasus, EthCtrl2, 1, &tmp);
-+      set_register(pegasus, EpromCtrl, 0);
-+      set_register(pegasus, EthCtrl2, tmp & ~EPROM_WR_ENABLE);
-+}
-+
-+static int write_eprom_word(pegasus_t *pegasus, __u8 index, __u16 data)
-+{
-+      int i;
-+      __u8 tmp, d[4] = { 0x3f, 0, 0, EPROM_WRITE };
-+      int ret;
-+      __le16 le_data = cpu_to_le16(data);
-+
-+      set_registers(pegasus, EpromOffset, 4, d);
-+      enable_eprom_write(pegasus);
-+      set_register(pegasus, EpromOffset, index);
-+      set_registers(pegasus, EpromData, 2, &le_data);
-+      set_register(pegasus, EpromCtrl, EPROM_WRITE);
-+
-+      for (i = 0; i < REG_TIMEOUT; i++) {
-+              ret = get_registers(pegasus, EpromCtrl, 1, &tmp);
-+              if (ret == -ESHUTDOWN)
-+                      goto fail;
-+              if (tmp & EPROM_DONE)
-+                      break;
-+      }
-+      disable_eprom_write(pegasus);
-+      if (i >= REG_TIMEOUT)
-+              goto fail;
-+
-+      return ret;
-+
-+fail:
-+      netif_warn(pegasus, drv, pegasus->net, "%s failed\n", __func__);
-+      return -ETIMEDOUT;
-+}
-+#endif                                /* PEGASUS_WRITE_EEPROM */
-+
-+static inline void get_node_id(pegasus_t *pegasus, __u8 *id)
-+{
-+      int i;
-+      __u16 w16;
-+
-+      for (i = 0; i < 3; i++) {
-+              read_eprom_word(pegasus, i, &w16);
-+              ((__le16 *) id)[i] = cpu_to_le16(w16);
-+      }
-+}
-+
-+static void set_ethernet_addr(pegasus_t *pegasus)
-+{
-+      __u8 node_id[6];
-+
-+      if (pegasus->features & PEGASUS_II) {
-+              get_registers(pegasus, 0x10, sizeof(node_id), node_id);
-+      } else {
-+              get_node_id(pegasus, node_id);
-+              set_registers(pegasus, EthID, sizeof(node_id), node_id);
-+      }
-+      memcpy(pegasus->net->dev_addr, node_id, sizeof(node_id));
-+}
-+
-+static inline int reset_mac(pegasus_t *pegasus)
-+{
-+      __u8 data = 0x8;
-+      int i;
-+
-+      set_register(pegasus, EthCtrl1, data);
-+      for (i = 0; i < REG_TIMEOUT; i++) {
-+              get_registers(pegasus, EthCtrl1, 1, &data);
-+              if (~data & 0x08) {
-+                      if (loopback)
-+                              break;
-+                      if (mii_mode && (pegasus->features & HAS_HOME_PNA))
-+                              set_register(pegasus, Gpio1, 0x34);
-+                      else
-+                              set_register(pegasus, Gpio1, 0x26);
-+                      set_register(pegasus, Gpio0, pegasus->features);
-+                      set_register(pegasus, Gpio0, DEFAULT_GPIO_SET);
-+                      break;
-+              }
-+      }
-+      if (i == REG_TIMEOUT)
-+              return -ETIMEDOUT;
-+
-+      if (usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS ||
-+          usb_dev_id[pegasus->dev_index].vendor == VENDOR_DLINK) {
-+              set_register(pegasus, Gpio0, 0x24);
-+              set_register(pegasus, Gpio0, 0x26);
-+      }
-+      if (usb_dev_id[pegasus->dev_index].vendor == VENDOR_ELCON) {
-+              __u16 auxmode;
-+              read_mii_word(pegasus, 3, 0x1b, &auxmode);
-+              auxmode |= 4;
-+              write_mii_word(pegasus, 3, 0x1b, &auxmode);
-+      }
-+
-+      return 0;
-+}
-+
-+static int enable_net_traffic(struct net_device *dev, struct usb_device *usb)
-+{
-+      __u16 linkpart;
-+      __u8 data[4];
-+      pegasus_t *pegasus = netdev_priv(dev);
-+      int ret;
-+
-+      read_mii_word(pegasus, pegasus->phy, MII_LPA, &linkpart);
-+      data[0] = 0xc9;
-+      data[1] = 0;
-+      if (linkpart & (ADVERTISE_100FULL | ADVERTISE_10FULL))
-+              data[1] |= 0x20;        /* set full duplex */
-+      if (linkpart & (ADVERTISE_100FULL | ADVERTISE_100HALF))
-+              data[1] |= 0x10;        /* set 100 Mbps */
-+      if (mii_mode)
-+              data[1] = 0;
-+      data[2] = loopback ? 0x09 : 0x01;
-+
-+      memcpy(pegasus->eth_regs, data, sizeof(data));
-+      ret = set_registers(pegasus, EthCtrl0, 3, data);
-+
-+      if (usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS ||
-+          usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS2 ||
-+          usb_dev_id[pegasus->dev_index].vendor == VENDOR_DLINK) {
-+              u16 auxmode;
-+              read_mii_word(pegasus, 0, 0x1b, &auxmode);
-+              auxmode |= 4;
-+              write_mii_word(pegasus, 0, 0x1b, &auxmode);
-+      }
-+
-+      return ret;
-+}
-+
-+static void read_bulk_callback(struct urb *urb)
-+{
-+      pegasus_t *pegasus = urb->context;
-+      struct net_device *net;
-+      int rx_status, count = urb->actual_length;
-+      int status = urb->status;
-+      u8 *buf = urb->transfer_buffer;
-+      __u16 pkt_len;
-+
-+      if (!pegasus)
-+              return;
-+
-+      net = pegasus->net;
-+      if (!netif_device_present(net) || !netif_running(net))
-+              return;
-+
-+      switch (status) {
-+      case 0:
-+              break;
-+      case -ETIME:
-+              netif_dbg(pegasus, rx_err, net, "reset MAC\n");
-+              pegasus->flags &= ~PEGASUS_RX_BUSY;
-+              break;
-+      case -EPIPE:            /* stall, or disconnect from TT */
-+              /* FIXME schedule work to clear the halt */
-+              netif_warn(pegasus, rx_err, net, "no rx stall recovery\n");
-+              return;
-+      case -ENOENT:
-+      case -ECONNRESET:
-+      case -ESHUTDOWN:
-+              netif_dbg(pegasus, ifdown, net, "rx unlink, %d\n", status);
-+              return;
-+      default:
-+              netif_dbg(pegasus, rx_err, net, "RX status %d\n", status);
-+              goto goon;
-+      }
-+
-+      if (!count || count < 4)
-+              goto goon;
-+
-+      rx_status = buf[count - 2];
-+      if (rx_status & 0x1e) {
-+              netif_dbg(pegasus, rx_err, net,
-+                        "RX packet error %x\n", rx_status);
-+              pegasus->stats.rx_errors++;
-+              if (rx_status & 0x06)   /* long or runt */
-+                      pegasus->stats.rx_length_errors++;
-+              if (rx_status & 0x08)
-+                      pegasus->stats.rx_crc_errors++;
-+              if (rx_status & 0x10)   /* extra bits   */
-+                      pegasus->stats.rx_frame_errors++;
-+              goto goon;
-+      }
-+      if (pegasus->chip == 0x8513) {
-+              pkt_len = le32_to_cpu(*(__le32 *)urb->transfer_buffer);
-+              pkt_len &= 0x0fff;
-+              pegasus->rx_skb->data += 2;
-+      } else {
-+              pkt_len = buf[count - 3] << 8;
-+              pkt_len += buf[count - 4];
-+              pkt_len &= 0xfff;
-+              pkt_len -= 8;
-+      }
-+
-+      /*
-+       * If the packet is unreasonably long, quietly drop it rather than
-+       * kernel panicing by calling skb_put.
-+       */
-+      if (pkt_len > PEGASUS_MTU)
-+              goto goon;
-+
-+      /*
-+       * at this point we are sure pegasus->rx_skb != NULL
-+       * so we go ahead and pass up the packet.
-+       */
-+      skb_put(pegasus->rx_skb, pkt_len);
-+      pegasus->rx_skb->protocol = eth_type_trans(pegasus->rx_skb, net);
-+      netif_rx(pegasus->rx_skb);
-+      pegasus->stats.rx_packets++;
-+      pegasus->stats.rx_bytes += pkt_len;
-+
-+      if (pegasus->flags & PEGASUS_UNPLUG)
-+              return;
-+
-+      pegasus->rx_skb = __netdev_alloc_skb_ip_align(pegasus->net, PEGASUS_MTU,
-+                                                    GFP_ATOMIC);
-+
-+      if (pegasus->rx_skb == NULL)
-+              goto tl_sched;
-+goon:
-+      usb_fill_bulk_urb(pegasus->rx_urb, pegasus->usb,
-+                        usb_rcvbulkpipe(pegasus->usb, 1),
-+                        pegasus->rx_skb->data, PEGASUS_MTU + 8,
-+                        read_bulk_callback, pegasus);
-+      rx_status = usb_submit_urb(pegasus->rx_urb, GFP_ATOMIC);
-+      if (rx_status == -ENODEV)
-+              netif_device_detach(pegasus->net);
-+      else if (rx_status) {
-+              pegasus->flags |= PEGASUS_RX_URB_FAIL;
-+              goto tl_sched;
-+      } else {
-+              pegasus->flags &= ~PEGASUS_RX_URB_FAIL;
-+      }
-+
-+      return;
-+
-+tl_sched:
-+      tasklet_schedule(&pegasus->rx_tl);
-+}
-+
-+static void rx_fixup(unsigned long data)
-+{
-+      pegasus_t *pegasus;
-+      int status;
-+
-+      pegasus = (pegasus_t *) data;
-+      if (pegasus->flags & PEGASUS_UNPLUG)
-+              return;
-+
-+      if (pegasus->flags & PEGASUS_RX_URB_FAIL)
-+              if (pegasus->rx_skb)
-+                      goto try_again;
-+      if (pegasus->rx_skb == NULL)
-+              pegasus->rx_skb = __netdev_alloc_skb_ip_align(pegasus->net,
-+                                                            PEGASUS_MTU,
-+                                                            GFP_ATOMIC);
-+      if (pegasus->rx_skb == NULL) {
-+              netif_warn(pegasus, rx_err, pegasus->net, "low on memory\n");
-+              tasklet_schedule(&pegasus->rx_tl);
-+              return;
-+      }
-+      usb_fill_bulk_urb(pegasus->rx_urb, pegasus->usb,
-+                        usb_rcvbulkpipe(pegasus->usb, 1),
-+                        pegasus->rx_skb->data, PEGASUS_MTU + 8,
-+                        read_bulk_callback, pegasus);
-+try_again:
-+      status = usb_submit_urb(pegasus->rx_urb, GFP_ATOMIC);
-+      if (status == -ENODEV)
-+              netif_device_detach(pegasus->net);
-+      else if (status) {
-+              pegasus->flags |= PEGASUS_RX_URB_FAIL;
-+              tasklet_schedule(&pegasus->rx_tl);
-+      } else {
-+              pegasus->flags &= ~PEGASUS_RX_URB_FAIL;
-+      }
-+}
-+
-+static void write_bulk_callback(struct urb *urb)
-+{
-+      pegasus_t *pegasus = urb->context;
-+      struct net_device *net;
-+      int status = urb->status;
-+
-+      if (!pegasus)
-+              return;
-+
-+      net = pegasus->net;
-+
-+      if (!netif_device_present(net) || !netif_running(net))
-+              return;
-+
-+      switch (status) {
-+      case -EPIPE:
-+              /* FIXME schedule_work() to clear the tx halt */
-+              netif_stop_queue(net);
-+              netif_warn(pegasus, tx_err, net, "no tx stall recovery\n");
-+              return;
-+      case -ENOENT:
-+      case -ECONNRESET:
-+      case -ESHUTDOWN:
-+              netif_dbg(pegasus, ifdown, net, "tx unlink, %d\n", status);
-+              return;
-+      default:
-+              netif_info(pegasus, tx_err, net, "TX status %d\n", status);
-+              /* FALL THROUGH */
-+      case 0:
-+              break;
-+      }
-+
-+      net->trans_start = jiffies; /* prevent tx timeout */
-+      netif_wake_queue(net);
-+}
-+
-+static void intr_callback(struct urb *urb)
-+{
-+      pegasus_t *pegasus = urb->context;
-+      struct net_device *net;
-+      int res, status = urb->status;
-+
-+      if (!pegasus)
-+              return;
-+      net = pegasus->net;
-+
-+      switch (status) {
-+      case 0:
-+              break;
-+      case -ECONNRESET:       /* unlink */
-+      case -ENOENT:
-+      case -ESHUTDOWN:
-+              return;
-+      default:
-+              /* some Pegasus-I products report LOTS of data
-+               * toggle errors... avoid log spamming
-+               */
-+              netif_dbg(pegasus, timer, net, "intr status %d\n", status);
-+      }
-+
-+      if (urb->actual_length >= 6) {
-+              u8 *d = urb->transfer_buffer;
-+
-+              /* byte 0 == tx_status1, reg 2B */
-+              if (d[0] & (TX_UNDERRUN|EXCESSIVE_COL
-+                                      |LATE_COL|JABBER_TIMEOUT)) {
-+                      pegasus->stats.tx_errors++;
-+                      if (d[0] & TX_UNDERRUN)
-+                              pegasus->stats.tx_fifo_errors++;
-+                      if (d[0] & (EXCESSIVE_COL | JABBER_TIMEOUT))
-+                              pegasus->stats.tx_aborted_errors++;
-+                      if (d[0] & LATE_COL)
-+                              pegasus->stats.tx_window_errors++;
-+              }
-+
-+              /* d[5].LINK_STATUS lies on some adapters.
-+               * d[0].NO_CARRIER kicks in only with failed TX.
-+               * ... so monitoring with MII may be safest.
-+               */
-+
-+              /* bytes 3-4 == rx_lostpkt, reg 2E/2F */
-+              pegasus->stats.rx_missed_errors += ((d[3] & 0x7f) << 8) | d[4];
-+      }
-+
-+      res = usb_submit_urb(urb, GFP_ATOMIC);
-+      if (res == -ENODEV)
-+              netif_device_detach(pegasus->net);
-+      if (res)
-+              netif_err(pegasus, timer, net,
-+                        "can't resubmit interrupt urb, %d\n", res);
-+}
-+
-+static void pegasus_tx_timeout(struct net_device *net)
-+{
-+      pegasus_t *pegasus = netdev_priv(net);
-+      netif_warn(pegasus, timer, net, "tx timeout\n");
-+      usb_unlink_urb(pegasus->tx_urb);
-+      pegasus->stats.tx_errors++;
-+}
-+
-+static netdev_tx_t pegasus_start_xmit(struct sk_buff *skb,
-+                                          struct net_device *net)
-+{
-+      pegasus_t *pegasus = netdev_priv(net);
-+      int count = ((skb->len + 2) & 0x3f) ? skb->len + 2 : skb->len + 3;
-+      int res;
-+      __u16 l16 = skb->len;
-+
-+      netif_stop_queue(net);
-+
-+      ((__le16 *) pegasus->tx_buff)[0] = cpu_to_le16(l16);
-+      skb_copy_from_linear_data(skb, pegasus->tx_buff + 2, skb->len);
-+      usb_fill_bulk_urb(pegasus->tx_urb, pegasus->usb,
-+                        usb_sndbulkpipe(pegasus->usb, 2),
-+                        pegasus->tx_buff, count,
-+                        write_bulk_callback, pegasus);
-+      if ((res = usb_submit_urb(pegasus->tx_urb, GFP_ATOMIC))) {
-+              netif_warn(pegasus, tx_err, net, "fail tx, %d\n", res);
-+              switch (res) {
-+              case -EPIPE:            /* stall, or disconnect from TT */
-+                      /* cleanup should already have been scheduled */
-+                      break;
-+              case -ENODEV:           /* disconnect() upcoming */
-+              case -EPERM:
-+                      netif_device_detach(pegasus->net);
-+                      break;
-+              default:
-+                      pegasus->stats.tx_errors++;
-+                      netif_start_queue(net);
-+              }
-+      } else {
-+              pegasus->stats.tx_packets++;
-+              pegasus->stats.tx_bytes += skb->len;
-+      }
-+      dev_kfree_skb(skb);
-+
-+      return NETDEV_TX_OK;
-+}
-+
-+static struct net_device_stats *pegasus_netdev_stats(struct net_device *dev)
-+{
-+      return &((pegasus_t *) netdev_priv(dev))->stats;
-+}
-+
-+static inline void disable_net_traffic(pegasus_t *pegasus)
-+{
-+      __le16 tmp = cpu_to_le16(0);
-+
-+      set_registers(pegasus, EthCtrl0, sizeof(tmp), &tmp);
-+}
-+
-+static inline void get_interrupt_interval(pegasus_t *pegasus)
-+{
-+      u16 data;
-+      u8 interval;
-+
-+      read_eprom_word(pegasus, 4, &data);
-+      interval = data >> 8;
-+      if (pegasus->usb->speed != USB_SPEED_HIGH) {
-+              if (interval < 0x80) {
-+                      netif_info(pegasus, timer, pegasus->net,
-+                                 "intr interval changed from %ums to %ums\n",
-+                                 interval, 0x80);
-+                      interval = 0x80;
-+                      data = (data & 0x00FF) | ((u16)interval << 8);
-+#ifdef PEGASUS_WRITE_EEPROM
-+                      write_eprom_word(pegasus, 4, data);
-+#endif
-+              }
-+      }
-+      pegasus->intr_interval = interval;
-+}
-+
-+static void set_carrier(struct net_device *net)
-+{
-+      pegasus_t *pegasus = netdev_priv(net);
-+      u16 tmp;
-+
-+      if (read_mii_word(pegasus, pegasus->phy, MII_BMSR, &tmp))
-+              return;
-+
-+      if (tmp & BMSR_LSTATUS)
-+              netif_carrier_on(net);
-+      else
-+              netif_carrier_off(net);
-+}
-+
-+static void free_all_urbs(pegasus_t *pegasus)
-+{
-+      usb_free_urb(pegasus->intr_urb);
-+      usb_free_urb(pegasus->tx_urb);
-+      usb_free_urb(pegasus->rx_urb);
-+}
-+
-+static void unlink_all_urbs(pegasus_t *pegasus)
-+{
-+      usb_kill_urb(pegasus->intr_urb);
-+      usb_kill_urb(pegasus->tx_urb);
-+      usb_kill_urb(pegasus->rx_urb);
-+}
-+
-+static int alloc_urbs(pegasus_t *pegasus)
-+{
-+      int res = -ENOMEM;
-+
-+      pegasus->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!pegasus->rx_urb) {
-+              return res;
-+      }
-+      pegasus->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!pegasus->tx_urb) {
-+              usb_free_urb(pegasus->rx_urb);
-+              return res;
-+      }
-+      pegasus->intr_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!pegasus->intr_urb) {
-+              usb_free_urb(pegasus->tx_urb);
-+              usb_free_urb(pegasus->rx_urb);
-+              return res;
-+      }
-+
-+      return 0;
-+}
-+
-+static int pegasus_open(struct net_device *net)
-+{
-+      pegasus_t *pegasus = netdev_priv(net);
-+      int res=-ENOMEM;
-+
-+      if (pegasus->rx_skb == NULL)
-+              pegasus->rx_skb = __netdev_alloc_skb_ip_align(pegasus->net,
-+                                                            PEGASUS_MTU,
-+                                                            GFP_KERNEL);
-+      if (!pegasus->rx_skb)
-+              goto exit;
-+
-+      res = set_registers(pegasus, EthID, 6, net->dev_addr);
-+
-+      usb_fill_bulk_urb(pegasus->rx_urb, pegasus->usb,
-+                        usb_rcvbulkpipe(pegasus->usb, 1),
-+                        pegasus->rx_skb->data, PEGASUS_MTU + 8,
-+                        read_bulk_callback, pegasus);
-+      if ((res = usb_submit_urb(pegasus->rx_urb, GFP_KERNEL))) {
-+              if (res == -ENODEV)
-+                      netif_device_detach(pegasus->net);
-+              netif_dbg(pegasus, ifup, net, "failed rx_urb, %d\n", res);
-+              goto exit;
-+      }
-+
-+      usb_fill_int_urb(pegasus->intr_urb, pegasus->usb,
-+                       usb_rcvintpipe(pegasus->usb, 3),
-+                       pegasus->intr_buff, sizeof(pegasus->intr_buff),
-+                       intr_callback, pegasus, pegasus->intr_interval);
-+      if ((res = usb_submit_urb(pegasus->intr_urb, GFP_KERNEL))) {
-+              if (res == -ENODEV)
-+                      netif_device_detach(pegasus->net);
-+              netif_dbg(pegasus, ifup, net, "failed intr_urb, %d\n", res);
-+              usb_kill_urb(pegasus->rx_urb);
-+              goto exit;
-+      }
-+      res = enable_net_traffic(net, pegasus->usb);
-+      if (res < 0) {
-+              netif_dbg(pegasus, ifup, net,
-+                        "can't enable_net_traffic() - %d\n", res);
-+              res = -EIO;
-+              usb_kill_urb(pegasus->rx_urb);
-+              usb_kill_urb(pegasus->intr_urb);
-+              goto exit;
-+      }
-+      set_carrier(net);
-+      netif_start_queue(net);
-+      netif_dbg(pegasus, ifup, net, "open\n");
-+      res = 0;
-+exit:
-+      return res;
-+}
-+
-+static int pegasus_close(struct net_device *net)
-+{
-+      pegasus_t *pegasus = netdev_priv(net);
-+
-+      netif_stop_queue(net);
-+      if (!(pegasus->flags & PEGASUS_UNPLUG))
-+              disable_net_traffic(pegasus);
-+      tasklet_kill(&pegasus->rx_tl);
-+      unlink_all_urbs(pegasus);
-+
-+      return 0;
-+}
-+
-+static void pegasus_get_drvinfo(struct net_device *dev,
-+                              struct ethtool_drvinfo *info)
-+{
-+      pegasus_t *pegasus = netdev_priv(dev);
-+
-+      strlcpy(info->driver, driver_name, sizeof(info->driver));
-+      strlcpy(info->version, DRIVER_VERSION, sizeof(info->version));
-+      usb_make_path(pegasus->usb, info->bus_info, sizeof(info->bus_info));
-+}
-+
-+/* also handles three patterns of some kind in hardware */
-+#define       WOL_SUPPORTED   (WAKE_MAGIC|WAKE_PHY)
-+
-+static void
-+pegasus_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
-+{
-+      pegasus_t       *pegasus = netdev_priv(dev);
-+
-+      wol->supported = WAKE_MAGIC | WAKE_PHY;
-+      wol->wolopts = pegasus->wolopts;
-+}
-+
-+static int
-+pegasus_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
-+{
-+      pegasus_t       *pegasus = netdev_priv(dev);
-+      u8              reg78 = 0x04;
-+      int             ret;
-+
-+      if (wol->wolopts & ~WOL_SUPPORTED)
-+              return -EINVAL;
-+
-+      if (wol->wolopts & WAKE_MAGIC)
-+              reg78 |= 0x80;
-+      if (wol->wolopts & WAKE_PHY)
-+              reg78 |= 0x40;
-+      /* FIXME this 0x10 bit still needs to get set in the chip... */
-+      if (wol->wolopts)
-+              pegasus->eth_regs[0] |= 0x10;
-+      else
-+              pegasus->eth_regs[0] &= ~0x10;
-+      pegasus->wolopts = wol->wolopts;
-+
-+      ret = set_register(pegasus, WakeupControl, reg78);
-+      if (!ret)
-+              ret = device_set_wakeup_enable(&pegasus->usb->dev,
-+                                              wol->wolopts);
-+      return ret;
-+}
-+
-+static inline void pegasus_reset_wol(struct net_device *dev)
-+{
-+      struct ethtool_wolinfo wol;
-+
-+      memset(&wol, 0, sizeof wol);
-+      (void) pegasus_set_wol(dev, &wol);
-+}
-+
-+static int
-+pegasus_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
-+{
-+      pegasus_t *pegasus;
-+
-+      pegasus = netdev_priv(dev);
-+      mii_ethtool_gset(&pegasus->mii, ecmd);
-+      return 0;
-+}
-+
-+static int
-+pegasus_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
-+{
-+      pegasus_t *pegasus = netdev_priv(dev);
-+      return mii_ethtool_sset(&pegasus->mii, ecmd);
-+}
-+
-+static int pegasus_nway_reset(struct net_device *dev)
-+{
-+      pegasus_t *pegasus = netdev_priv(dev);
-+      return mii_nway_restart(&pegasus->mii);
-+}
-+
-+static u32 pegasus_get_link(struct net_device *dev)
-+{
-+      pegasus_t *pegasus = netdev_priv(dev);
-+      return mii_link_ok(&pegasus->mii);
-+}
-+
-+static u32 pegasus_get_msglevel(struct net_device *dev)
-+{
-+      pegasus_t *pegasus = netdev_priv(dev);
-+      return pegasus->msg_enable;
-+}
-+
-+static void pegasus_set_msglevel(struct net_device *dev, u32 v)
-+{
-+      pegasus_t *pegasus = netdev_priv(dev);
-+      pegasus->msg_enable = v;
-+}
-+
-+static const struct ethtool_ops ops = {
-+      .get_drvinfo = pegasus_get_drvinfo,
-+      .get_settings = pegasus_get_settings,
-+      .set_settings = pegasus_set_settings,
-+      .nway_reset = pegasus_nway_reset,
-+      .get_link = pegasus_get_link,
-+      .get_msglevel = pegasus_get_msglevel,
-+      .set_msglevel = pegasus_set_msglevel,
-+      .get_wol = pegasus_get_wol,
-+      .set_wol = pegasus_set_wol,
-+};
-+
-+static int pegasus_ioctl(struct net_device *net, struct ifreq *rq, int cmd)
-+{
-+      __u16 *data = (__u16 *) &rq->ifr_ifru;
-+      pegasus_t *pegasus = netdev_priv(net);
-+      int res;
-+
-+      switch (cmd) {
-+      case SIOCDEVPRIVATE:
-+              data[0] = pegasus->phy;
-+      case SIOCDEVPRIVATE + 1:
-+              read_mii_word(pegasus, data[0], data[1] & 0x1f, &data[3]);
-+              res = 0;
-+              break;
-+      case SIOCDEVPRIVATE + 2:
-+              if (!capable(CAP_NET_ADMIN))
-+                      return -EPERM;
-+              write_mii_word(pegasus, pegasus->phy, data[1] & 0x1f, &data[2]);
-+              res = 0;
-+              break;
-+      default:
-+              res = -EOPNOTSUPP;
-+      }
-+      return res;
-+}
-+
-+static void pegasus_set_multicast(struct net_device *net)
-+{
-+      pegasus_t *pegasus = netdev_priv(net);
-+
-+      if (net->flags & IFF_PROMISC) {
-+              pegasus->eth_regs[EthCtrl2] |= RX_PROMISCUOUS;
-+              netif_info(pegasus, link, net, "Promiscuous mode enabled\n");
-+      } else if (!netdev_mc_empty(net) || (net->flags & IFF_ALLMULTI)) {
-+              pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST;
-+              pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
-+              netif_dbg(pegasus, link, net, "set allmulti\n");
-+      } else {
-+              pegasus->eth_regs[EthCtrl0] &= ~RX_MULTICAST;
-+              pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
-+      }
-+      update_eth_regs_async(pegasus);
-+}
-+
-+static __u8 mii_phy_probe(pegasus_t *pegasus)
-+{
-+      int i;
-+      __u16 tmp;
-+
-+      for (i = 0; i < 32; i++) {
-+              read_mii_word(pegasus, i, MII_BMSR, &tmp);
-+              if (tmp == 0 || tmp == 0xffff || (tmp & BMSR_MEDIA) == 0)
-+                      continue;
-+              else
-+                      return i;
-+      }
-+
-+      return 0xff;
-+}
-+
-+static inline void setup_pegasus_II(pegasus_t *pegasus)
-+{
-+      __u8 data = 0xa5;
-+
-+      set_register(pegasus, Reg1d, 0);
-+      set_register(pegasus, Reg7b, 1);
-+      mdelay(100);
-+      if ((pegasus->features & HAS_HOME_PNA) && mii_mode)
-+              set_register(pegasus, Reg7b, 0);
-+      else
-+              set_register(pegasus, Reg7b, 2);
-+
-+      set_register(pegasus, 0x83, data);
-+      get_registers(pegasus, 0x83, 1, &data);
-+
-+      if (data == 0xa5)
-+              pegasus->chip = 0x8513;
-+      else
-+              pegasus->chip = 0;
-+
-+      set_register(pegasus, 0x80, 0xc0);
-+      set_register(pegasus, 0x83, 0xff);
-+      set_register(pegasus, 0x84, 0x01);
-+
-+      if (pegasus->features & HAS_HOME_PNA && mii_mode)
-+              set_register(pegasus, Reg81, 6);
-+      else
-+              set_register(pegasus, Reg81, 2);
-+}
-+
-+
-+static int pegasus_count;
-+static struct workqueue_struct *pegasus_workqueue;
-+#define CARRIER_CHECK_DELAY (2 * HZ)
-+
-+static void check_carrier(struct work_struct *work)
-+{
-+      pegasus_t *pegasus = container_of(work, pegasus_t, carrier_check.work);
-+      set_carrier(pegasus->net);
-+      if (!(pegasus->flags & PEGASUS_UNPLUG)) {
-+              queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check,
-+                      CARRIER_CHECK_DELAY);
-+      }
-+}
-+
-+static int pegasus_blacklisted(struct usb_device *udev)
-+{
-+      struct usb_device_descriptor *udd = &udev->descriptor;
-+
-+      /* Special quirk to keep the driver from handling the Belkin Bluetooth
-+       * dongle which happens to have the same ID.
-+       */
-+      if ((udd->idVendor == cpu_to_le16(VENDOR_BELKIN)) &&
-+          (udd->idProduct == cpu_to_le16(0x0121)) &&
-+          (udd->bDeviceClass == USB_CLASS_WIRELESS_CONTROLLER) &&
-+          (udd->bDeviceProtocol == 1))
-+              return 1;
-+
-+      return 0;
-+}
-+
-+/* we rely on probe() and remove() being serialized so we
-+ * don't need extra locking on pegasus_count.
-+ */
-+static void pegasus_dec_workqueue(void)
-+{
-+      pegasus_count--;
-+      if (pegasus_count == 0) {
-+              destroy_workqueue(pegasus_workqueue);
-+              pegasus_workqueue = NULL;
-+      }
-+}
-+
-+static int pegasus_probe(struct usb_interface *intf,
-+                       const struct usb_device_id *id)
-+{
-+      struct usb_device *dev = interface_to_usbdev(intf);
-+      struct net_device *net;
-+      pegasus_t *pegasus;
-+      int dev_index = id - pegasus_ids;
-+      int res = -ENOMEM;
-+
-+      if (pegasus_blacklisted(dev))
-+              return -ENODEV;
-+
-+      if (pegasus_count == 0) {
-+              pegasus_workqueue = create_singlethread_workqueue("pegasus");
-+              if (!pegasus_workqueue)
-+                      return -ENOMEM;
-+      }
-+      pegasus_count++;
-+
-+      net = alloc_etherdev(sizeof(struct pegasus));
-+      if (!net)
-+              goto out;
-+
-+      pegasus = netdev_priv(net);
-+      pegasus->dev_index = dev_index;
-+
-+      res = alloc_urbs(pegasus);
-+      if (res < 0) {
-+              dev_err(&intf->dev, "can't allocate %s\n", "urbs");
-+              goto out1;
-+      }
-+
-+      tasklet_init(&pegasus->rx_tl, rx_fixup, (unsigned long) pegasus);
-+
-+      INIT_DELAYED_WORK(&pegasus->carrier_check, check_carrier);
-+
-+      pegasus->intf = intf;
-+      pegasus->usb = dev;
-+      pegasus->net = net;
-+
-+
-+      net->watchdog_timeo = PEGASUS_TX_TIMEOUT;
-+      net->netdev_ops = &pegasus_netdev_ops;
-+      net->ethtool_ops = &ops;
-+      pegasus->mii.dev = net;
-+      pegasus->mii.mdio_read = mdio_read;
-+      pegasus->mii.mdio_write = mdio_write;
-+      pegasus->mii.phy_id_mask = 0x1f;
-+      pegasus->mii.reg_num_mask = 0x1f;
-+      pegasus->msg_enable = netif_msg_init(msg_level, NETIF_MSG_DRV
-+                              | NETIF_MSG_PROBE | NETIF_MSG_LINK);
-+
-+      pegasus->features = usb_dev_id[dev_index].private;
-+      get_interrupt_interval(pegasus);
-+      if (reset_mac(pegasus)) {
-+              dev_err(&intf->dev, "can't reset MAC\n");
-+              res = -EIO;
-+              goto out2;
-+      }
-+      set_ethernet_addr(pegasus);
-+      if (pegasus->features & PEGASUS_II) {
-+              dev_info(&intf->dev, "setup Pegasus II specific registers\n");
-+              setup_pegasus_II(pegasus);
-+      }
-+      pegasus->phy = mii_phy_probe(pegasus);
-+      if (pegasus->phy == 0xff) {
-+              dev_warn(&intf->dev, "can't locate MII phy, using default\n");
-+              pegasus->phy = 1;
-+      }
-+      pegasus->mii.phy_id = pegasus->phy;
-+      usb_set_intfdata(intf, pegasus);
-+      SET_NETDEV_DEV(net, &intf->dev);
-+      pegasus_reset_wol(net);
-+      res = register_netdev(net);
-+      if (res)
-+              goto out3;
-+      queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check,
-+                         CARRIER_CHECK_DELAY);
-+      dev_info(&intf->dev, "%s, %s, %pM\n", net->name,
-+               usb_dev_id[dev_index].name, net->dev_addr);
-+      return 0;
-+
-+out3:
-+      usb_set_intfdata(intf, NULL);
-+out2:
-+      free_all_urbs(pegasus);
-+out1:
-+      free_netdev(net);
-+out:
-+      pegasus_dec_workqueue();
-+      return res;
-+}
-+
-+static void pegasus_disconnect(struct usb_interface *intf)
-+{
-+      struct pegasus *pegasus = usb_get_intfdata(intf);
-+
-+      usb_set_intfdata(intf, NULL);
-+      if (!pegasus) {
-+              dev_dbg(&intf->dev, "unregistering non-bound device?\n");
-+              return;
-+      }
-+
-+      pegasus->flags |= PEGASUS_UNPLUG;
-+      cancel_delayed_work(&pegasus->carrier_check);
-+      unregister_netdev(pegasus->net);
-+      unlink_all_urbs(pegasus);
-+      free_all_urbs(pegasus);
-+      if (pegasus->rx_skb != NULL) {
-+              dev_kfree_skb(pegasus->rx_skb);
-+              pegasus->rx_skb = NULL;
-+      }
-+      free_netdev(pegasus->net);
-+      pegasus_dec_workqueue();
-+}
-+
-+static int pegasus_suspend(struct usb_interface *intf, pm_message_t message)
-+{
-+      struct pegasus *pegasus = usb_get_intfdata(intf);
-+
-+      netif_device_detach(pegasus->net);
-+      cancel_delayed_work(&pegasus->carrier_check);
-+      if (netif_running(pegasus->net)) {
-+              usb_kill_urb(pegasus->rx_urb);
-+              usb_kill_urb(pegasus->intr_urb);
-+      }
-+      return 0;
-+}
-+
-+static int pegasus_resume(struct usb_interface *intf)
-+{
-+      struct pegasus *pegasus = usb_get_intfdata(intf);
-+
-+      netif_device_attach(pegasus->net);
-+      if (netif_running(pegasus->net)) {
-+              pegasus->rx_urb->status = 0;
-+              pegasus->rx_urb->actual_length = 0;
-+              read_bulk_callback(pegasus->rx_urb);
-+
-+              pegasus->intr_urb->status = 0;
-+              pegasus->intr_urb->actual_length = 0;
-+              intr_callback(pegasus->intr_urb);
-+      }
-+      queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check,
-+                              CARRIER_CHECK_DELAY);
-+      return 0;
-+}
-+
-+static const struct net_device_ops pegasus_netdev_ops = {
-+      .ndo_open =                     pegasus_open,
-+      .ndo_stop =                     pegasus_close,
-+      .ndo_do_ioctl =                 pegasus_ioctl,
-+      .ndo_start_xmit =               pegasus_start_xmit,
-+      .ndo_set_rx_mode =              pegasus_set_multicast,
-+      .ndo_get_stats =                pegasus_netdev_stats,
-+      .ndo_tx_timeout =               pegasus_tx_timeout,
-+      .ndo_change_mtu =               eth_change_mtu,
-+      .ndo_set_mac_address =          eth_mac_addr,
-+      .ndo_validate_addr =            eth_validate_addr,
-+};
-+
-+static struct usb_driver pegasus_driver = {
-+      .name = driver_name,
-+      .probe = pegasus_probe,
-+      .disconnect = pegasus_disconnect,
-+      .id_table = pegasus_ids,
-+      .suspend = pegasus_suspend,
-+      .resume = pegasus_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+static void __init parse_id(char *id)
-+{
-+      unsigned int vendor_id = 0, device_id = 0, flags = 0, i = 0;
-+      char *token, *name = NULL;
-+
-+      if ((token = strsep(&id, ":")) != NULL)
-+              name = token;
-+      /* name now points to a null terminated string*/
-+      if ((token = strsep(&id, ":")) != NULL)
-+              vendor_id = simple_strtoul(token, NULL, 16);
-+      if ((token = strsep(&id, ":")) != NULL)
-+              device_id = simple_strtoul(token, NULL, 16);
-+      flags = simple_strtoul(id, NULL, 16);
-+      pr_info("%s: new device %s, vendor ID 0x%04x, device ID 0x%04x, flags: 0x%x\n",
-+              driver_name, name, vendor_id, device_id, flags);
-+
-+      if (vendor_id > 0x10000 || vendor_id == 0)
-+              return;
-+      if (device_id > 0x10000 || device_id == 0)
-+              return;
-+
-+      for (i = 0; usb_dev_id[i].name; i++);
-+      usb_dev_id[i].name = name;
-+      usb_dev_id[i].vendor = vendor_id;
-+      usb_dev_id[i].device = device_id;
-+      usb_dev_id[i].private = flags;
-+      pegasus_ids[i].match_flags = USB_DEVICE_ID_MATCH_DEVICE;
-+      pegasus_ids[i].idVendor = vendor_id;
-+      pegasus_ids[i].idProduct = device_id;
-+}
-+
-+static int __init pegasus_init(void)
-+{
-+      pr_info("%s: %s, " DRIVER_DESC "\n", driver_name, DRIVER_VERSION);
-+      if (devid)
-+              parse_id(devid);
-+      return usb_register(&pegasus_driver);
-+}
-+
-+static void __exit pegasus_exit(void)
-+{
-+      usb_deregister(&pegasus_driver);
-+}
-+
-+module_init(pegasus_init);
-+module_exit(pegasus_exit);
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/pegasus.h backports-4.2.6-1/drivers/net/usb/pegasus.h
---- backports-4.2.6-1.org/drivers/net/usb/pegasus.h    1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/pegasus.h        2016-06-28 14:35:17.998640551 +0200
-@@ -0,0 +1,308 @@
-+/*
-+ * Copyright (c) 1999-2013 Petko Manolov (petkan@nucleusys.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as published
-+ * by the Free Software Foundation.
-+ */
-+
-+
-+#ifndef       PEGASUS_DEV
-+
-+#define       PEGASUS_II              0x80000000
-+#define       HAS_HOME_PNA            0x40000000
-+
-+#define       PEGASUS_MTU             1536
-+
-+#define       EPROM_WRITE             0x01
-+#define       EPROM_READ              0x02
-+#define       EPROM_DONE              0x04
-+#define       EPROM_WR_ENABLE         0x10
-+#define       EPROM_LOAD              0x20
-+
-+#define       PHY_DONE                0x80
-+#define       PHY_READ                0x40
-+#define       PHY_WRITE               0x20
-+#define       DEFAULT_GPIO_RESET      0x24
-+#define       DEFAULT_GPIO_SET        0x26
-+
-+#define       PEGASUS_PRESENT         0x00000001
-+#define       PEGASUS_TX_BUSY         0x00000004
-+#define       PEGASUS_RX_BUSY         0x00000008
-+#define       CTRL_URB_RUNNING        0x00000010
-+#define       CTRL_URB_SLEEP          0x00000020
-+#define       PEGASUS_UNPLUG          0x00000040
-+#define       PEGASUS_RX_URB_FAIL     0x00000080
-+
-+#define       RX_MULTICAST            2
-+#define       RX_PROMISCUOUS          4
-+
-+#define       REG_TIMEOUT             (HZ)
-+#define       PEGASUS_TX_TIMEOUT      (HZ*10)
-+
-+#define       TX_UNDERRUN             0x80
-+#define       EXCESSIVE_COL           0x40
-+#define       LATE_COL                0x20
-+#define       NO_CARRIER              0x10
-+#define       LOSS_CARRIER            0x08
-+#define       JABBER_TIMEOUT          0x04
-+
-+#define       LINK_STATUS             0x01
-+
-+#define       PEGASUS_REQT_READ       0xc0
-+#define       PEGASUS_REQT_WRITE      0x40
-+#define       PEGASUS_REQ_GET_REGS    0xf0
-+#define       PEGASUS_REQ_SET_REGS    0xf1
-+#define       PEGASUS_REQ_SET_REG     PEGASUS_REQ_SET_REGS
-+
-+enum pegasus_registers {
-+      EthCtrl0 = 0,
-+      EthCtrl1 = 1,
-+      EthCtrl2 = 2,
-+      EthID = 0x10,
-+      Reg1d = 0x1d,
-+      EpromOffset = 0x20,
-+      EpromData = 0x21,       /* 0x21 low, 0x22 high byte */
-+      EpromCtrl = 0x23,
-+      PhyAddr = 0x25,
-+      PhyData = 0x26,         /* 0x26 low, 0x27 high byte */
-+      PhyCtrl = 0x28,
-+      UsbStst = 0x2a,
-+      EthTxStat0 = 0x2b,
-+      EthTxStat1 = 0x2c,
-+      EthRxStat = 0x2d,
-+      WakeupControl = 0x78,
-+      Reg7b = 0x7b,
-+      Gpio0 = 0x7e,
-+      Gpio1 = 0x7f,
-+      Reg81 = 0x81,
-+};
-+
-+
-+typedef struct pegasus {
-+      struct usb_device       *usb;
-+      struct usb_interface    *intf;
-+      struct net_device       *net;
-+      struct net_device_stats stats;
-+      struct mii_if_info      mii;
-+      unsigned                flags;
-+      unsigned                features;
-+      u32                     msg_enable;
-+      u32                     wolopts;
-+      int                     dev_index;
-+      int                     intr_interval;
-+      struct tasklet_struct   rx_tl;
-+      struct delayed_work     carrier_check;
-+      struct urb              *rx_urb, *tx_urb, *intr_urb;
-+      struct sk_buff          *rx_skb;
-+      int                     chip;
-+      unsigned char           intr_buff[8];
-+      __u8                    tx_buff[PEGASUS_MTU];
-+      __u8                    eth_regs[4];
-+      __u8                    phy;
-+      __u8                    gpio_res;
-+} pegasus_t;
-+
-+
-+struct usb_eth_dev {
-+      char    *name;
-+      __u16   vendor;
-+      __u16   device;
-+      __u32   private; /* LSB is gpio reset value */
-+};
-+
-+#define       VENDOR_3COM             0x0506
-+#define       VENDOR_ABOCOM           0x07b8
-+#define       VENDOR_ACCTON           0x083a
-+#define       VENDOR_ADMTEK           0x07a6
-+#define       VENDOR_AEILAB           0x3334
-+#define       VENDOR_ALLIEDTEL        0x07c9
-+#define       VENDOR_ATEN             0x0557
-+#define       VENDOR_BELKIN           0x050d
-+#define       VENDOR_BILLIONTON       0x08dd
-+#define       VENDOR_COMPAQ           0x049f
-+#define       VENDOR_COREGA           0x07aa
-+#define       VENDOR_DLINK            0x2001
-+#define       VENDOR_ELCON            0x0db7
-+#define       VENDOR_ELECOM           0x056e
-+#define       VENDOR_ELSA             0x05cc
-+#define       VENDOR_GIGABYTE         0x1044
-+#define       VENDOR_HAWKING          0x0e66
-+#define       VENDOR_HP               0x03f0
-+#define       VENDOR_IODATA           0x04bb
-+#define       VENDOR_KINGSTON         0x0951
-+#define       VENDOR_LANEED           0x056e
-+#define       VENDOR_LINKSYS          0x066b
-+#define       VENDOR_LINKSYS2         0x077b
-+#define       VENDOR_MELCO            0x0411
-+#define       VENDOR_MICROSOFT        0x045e
-+#define       VENDOR_MOBILITY         0x1342
-+#define       VENDOR_NETGEAR          0x0846
-+#define       VENDOR_OCT              0x0b39
-+#define       VENDOR_SMARTBRIDGES     0x08d1
-+#define       VENDOR_SMC              0x0707
-+#define       VENDOR_SOHOWARE         0x15e8
-+#define       VENDOR_SIEMENS          0x067c
-+
-+
-+#else /* PEGASUS_DEV */
-+
-+PEGASUS_DEV("3Com USB Ethernet 3C460B", VENDOR_3COM, 0x4601,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("ATEN USB Ethernet UC-110T", VENDOR_ATEN, 0x2007,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("USB HPNA/Ethernet", VENDOR_ABOCOM, 0x110c,
-+              DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA)
-+PEGASUS_DEV("USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4104,
-+              DEFAULT_GPIO_RESET | HAS_HOME_PNA)
-+PEGASUS_DEV("USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4004,
-+              DEFAULT_GPIO_RESET | HAS_HOME_PNA)
-+PEGASUS_DEV("USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4007,
-+              DEFAULT_GPIO_RESET | HAS_HOME_PNA)
-+PEGASUS_DEV("USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x4102,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x4002,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x400b,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x400c,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0xabc1,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x200c,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Accton USB 10/100 Ethernet Adapter", VENDOR_ACCTON, 0x1046,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("SpeedStream USB 10/100 Ethernet", VENDOR_ACCTON, 0x5046,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Philips USB 10/100 Ethernet", VENDOR_ACCTON, 0xb004,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("ADMtek ADM8511 \"Pegasus II\" USB Ethernet",
-+              VENDOR_ADMTEK, 0x8511,
-+              DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA)
-+PEGASUS_DEV("ADMtek ADM8513 \"Pegasus II\" USB Ethernet",
-+              VENDOR_ADMTEK, 0x8513,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("ADMtek ADM8515 \"Pegasus II\" USB-2.0 Ethernet",
-+              VENDOR_ADMTEK, 0x8515,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("ADMtek AN986 \"Pegasus\" USB Ethernet (evaluation board)",
-+              VENDOR_ADMTEK, 0x0986,
-+              DEFAULT_GPIO_RESET | HAS_HOME_PNA)
-+PEGASUS_DEV("AN986A USB MAC", VENDOR_ADMTEK, 1986,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("AEI USB Fast Ethernet Adapter", VENDOR_AEILAB, 0x1701,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Allied Telesyn Int. AT-USB100", VENDOR_ALLIEDTEL, 0xb100,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+/*
-+ * Distinguish between this Belkin adaptor and the Belkin bluetooth adaptors
-+ * with the same product IDs by checking the device class too.
-+ */
-+PEGASUS_DEV_CLASS("Belkin F5D5050 USB Ethernet", VENDOR_BELKIN, 0x0121, 0x00,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Belkin F5U122 10/100 USB Ethernet", VENDOR_BELKIN, 0x0122,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Billionton USB-100", VENDOR_BILLIONTON, 0x0986,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("Billionton USBLP-100", VENDOR_BILLIONTON, 0x0987,
-+              DEFAULT_GPIO_RESET | HAS_HOME_PNA)
-+PEGASUS_DEV("iPAQ Networking 10/100 USB", VENDOR_COMPAQ, 0x8511,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Billionton USBEL-100", VENDOR_BILLIONTON, 0x0988,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("Billionton USBE-100", VENDOR_BILLIONTON, 0x8511,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Corega FEther USB-TX", VENDOR_COREGA, 0x0004,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("Corega FEther USB-TXS", VENDOR_COREGA, 0x000d,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("D-Link DSB-650TX", VENDOR_DLINK, 0x4001,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("D-Link DSB-650TX", VENDOR_DLINK, 0x4002,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("D-Link DSB-650TX", VENDOR_DLINK, 0x4102,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("D-Link DSB-650TX", VENDOR_DLINK, 0x400b,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("D-Link DSB-650TX", VENDOR_DLINK, 0x200c,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("D-Link DSB-650TX(PNA)", VENDOR_DLINK, 0x4003,
-+              DEFAULT_GPIO_RESET | HAS_HOME_PNA)
-+PEGASUS_DEV("D-Link DSB-650", VENDOR_DLINK, 0xabc1,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("GOLDPFEIL USB Adapter", VENDOR_ELCON, 0x0002,
-+              DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA)
-+PEGASUS_DEV("ELECOM USB Ethernet LD-USB20", VENDOR_ELECOM,  0x4010,
-+              DEFAULT_GPIO_RESET  | PEGASUS_II)
-+PEGASUS_DEV("EasiDock Ethernet", VENDOR_MOBILITY, 0x0304,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("Elsa Micolink USB2Ethernet", VENDOR_ELSA, 0x3000,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("GIGABYTE GN-BR402W Wireless Router", VENDOR_GIGABYTE, 0x8002,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("Hawking UF100 10/100 Ethernet", VENDOR_HAWKING, 0x400c,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("HP hn210c Ethernet USB", VENDOR_HP, 0x811c,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("IO DATA USB ET/TX", VENDOR_IODATA, 0x0904,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("IO DATA USB ET/TX-S", VENDOR_IODATA, 0x0913,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("IO DATA USB ETX-US2", VENDOR_IODATA, 0x093a,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Kingston KNU101TX Ethernet", VENDOR_KINGSTON, 0x000a,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x4002,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("LANEED USB Ethernet LD-USBL/TX", VENDOR_LANEED, 0x4005,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x400b,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("LANEED USB Ethernet LD-USB/T", VENDOR_LANEED, 0xabc1,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x200c,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Linksys USB10TX", VENDOR_LINKSYS, 0x2202,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("Linksys USB100TX", VENDOR_LINKSYS, 0x2203,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("Linksys USB100TX", VENDOR_LINKSYS, 0x2204,
-+              DEFAULT_GPIO_RESET | HAS_HOME_PNA)
-+PEGASUS_DEV("Linksys USB10T Ethernet Adapter", VENDOR_LINKSYS, 0x2206,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Linksys USBVPN1", VENDOR_LINKSYS2, 0x08b4,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("Linksys USB USB100TX", VENDOR_LINKSYS, 0x400b,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Linksys USB10TX", VENDOR_LINKSYS, 0x200c,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("MELCO/BUFFALO LUA-TX", VENDOR_MELCO, 0x0001,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("MELCO/BUFFALO LUA-TX", VENDOR_MELCO, 0x0005,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("MELCO/BUFFALO LUA2-TX", VENDOR_MELCO, 0x0009,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("Microsoft MN-110", VENDOR_MICROSOFT, 0x007a,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("NETGEAR FA101", VENDOR_NETGEAR, 0x1020,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("OCT Inc.", VENDOR_OCT, 0x0109,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("OCT USB TO Ethernet", VENDOR_OCT, 0x0901,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("smartNIC 2 PnP Adapter", VENDOR_SMARTBRIDGES, 0x0003,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("SMC 202 USB Ethernet", VENDOR_SMC, 0x0200,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("SMC 2206 USB Ethernet", VENDOR_SMC, 0x0201,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("SOHOware NUB100 Ethernet", VENDOR_SOHOWARE, 0x9100,
-+              DEFAULT_GPIO_RESET)
-+PEGASUS_DEV("SOHOware NUB110 Ethernet", VENDOR_SOHOWARE, 0x9110,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+PEGASUS_DEV("SpeedStream USB 10/100 Ethernet", VENDOR_SIEMENS, 0x1001,
-+              DEFAULT_GPIO_RESET | PEGASUS_II)
-+
-+
-+#endif        /* PEGASUS_DEV */
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/plusb.c backports-4.2.6-1/drivers/net/usb/plusb.c
---- backports-4.2.6-1.org/drivers/net/usb/plusb.c      1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/plusb.c  2016-06-28 14:35:17.998640551 +0200
-@@ -0,0 +1,162 @@
-+/*
-+ * PL-2301/2302 USB host-to-host link cables
-+ * Copyright (C) 2000-2005 by David Brownell
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+// #define    DEBUG                   // error path messages, extra info
-+// #define    VERBOSE                 // more; success messages
-+
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/usb/usbnet.h>
-+
-+
-+/*
-+ * Prolific PL-2301/PL-2302 driver ... http://www.prolific.com.tw/ 
-+ *
-+ * The protocol and handshaking used here should be bug-compatible
-+ * with the Linux 2.2 "plusb" driver, by Deti Fliegl.
-+ *
-+ * HEADS UP:  this handshaking isn't all that robust.  This driver
-+ * gets confused easily if you unplug one end of the cable then
-+ * try to connect it again; you'll need to restart both ends. The
-+ * "naplink" software (used by some PlayStation/2 deveopers) does
-+ * the handshaking much better!   Also, sometimes this hardware
-+ * seems to get wedged under load.  Prolific docs are weak, and
-+ * don't identify differences between PL2301 and PL2302, much less
-+ * anything to explain the different PL2302 versions observed.
-+ *
-+ * NOTE:  pl2501 has several modes, including pl2301 and pl2302
-+ * compatibility.   Some docs suggest the difference between 2301
-+ * and 2302 is only to make MS-Windows use a different driver...
-+ *
-+ * pl25a1 glue based on patch from Tony Gibbs.  Prolific "docs" on
-+ * this chip are as usual incomplete about what control messages
-+ * are supported.
-+ */
-+
-+/*
-+ * Bits 0-4 can be used for software handshaking; they're set from
-+ * one end, cleared from the other, "read" with the interrupt byte.
-+ */
-+#define       PL_S_EN         (1<<7)          /* (feature only) suspend enable */
-+/* reserved bit -- rx ready (6) ? */
-+#define       PL_TX_READY     (1<<5)          /* (interrupt only) transmit ready */
-+#define       PL_RESET_OUT    (1<<4)          /* reset output pipe */
-+#define       PL_RESET_IN     (1<<3)          /* reset input pipe */
-+#define       PL_TX_C         (1<<2)          /* transmission complete */
-+#define       PL_TX_REQ       (1<<1)          /* transmission received */
-+#define       PL_PEER_E       (1<<0)          /* peer exists */
-+
-+static inline int
-+pl_vendor_req(struct usbnet *dev, u8 req, u8 val, u8 index)
-+{
-+      return usbnet_read_cmd(dev, req,
-+                              USB_DIR_IN | USB_TYPE_VENDOR |
-+                              USB_RECIP_DEVICE,
-+                              val, index, NULL, 0);
-+}
-+
-+static inline int
-+pl_clear_QuickLink_features(struct usbnet *dev, int val)
-+{
-+      return pl_vendor_req(dev, 1, (u8) val, 0);
-+}
-+
-+static inline int
-+pl_set_QuickLink_features(struct usbnet *dev, int val)
-+{
-+      return pl_vendor_req(dev, 3, (u8) val, 0);
-+}
-+
-+static int pl_reset(struct usbnet *dev)
-+{
-+      int status;
-+
-+      /* some units seem to need this reset, others reject it utterly.
-+       * FIXME be more like "naplink" or windows drivers.
-+       */
-+      status = pl_set_QuickLink_features(dev,
-+              PL_S_EN|PL_RESET_OUT|PL_RESET_IN|PL_PEER_E);
-+      if (status != 0 && netif_msg_probe(dev))
-+              netif_dbg(dev, link, dev->net, "pl_reset --> %d\n", status);
-+      return 0;
-+}
-+
-+static const struct driver_info       prolific_info = {
-+      .description =  "Prolific PL-2301/PL-2302/PL-25A1",
-+      .flags =        FLAG_POINTTOPOINT | FLAG_NO_SETINT,
-+              /* some PL-2302 versions seem to fail usb_set_interface() */
-+      .reset =        pl_reset,
-+};
-+
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * Proilific's name won't normally be on the cables, and
-+ * may not be on the device.
-+ */
-+
-+static const struct usb_device_id     products [] = {
-+
-+/* full speed cables */
-+{
-+      USB_DEVICE(0x067b, 0x0000),     // PL-2301
-+      .driver_info =  (unsigned long) &prolific_info,
-+}, {
-+      USB_DEVICE(0x067b, 0x0001),     // PL-2302
-+      .driver_info =  (unsigned long) &prolific_info,
-+},
-+
-+/* high speed cables */
-+{
-+      USB_DEVICE(0x067b, 0x25a1),     /* PL-25A1, no eeprom */
-+      .driver_info =  (unsigned long) &prolific_info,
-+}, {
-+      USB_DEVICE(0x050d, 0x258a),     /* Belkin F5U258/F5U279 (PL-25A1) */
-+      .driver_info =  (unsigned long) &prolific_info,
-+}, {
-+      USB_DEVICE(0x3923, 0x7825),     /* National Instruments USB
-+                                       * Host-to-Host Cable
-+                                       */
-+      .driver_info =  (unsigned long) &prolific_info,
-+},
-+
-+      { },            // END
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver plusb_driver = {
-+      .name =         "plusb",
-+      .id_table =     products,
-+      .probe =        usbnet_probe,
-+      .disconnect =   usbnet_disconnect,
-+      .suspend =      usbnet_suspend,
-+      .resume =       usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(plusb_driver);
-+
-+MODULE_AUTHOR("David Brownell");
-+MODULE_DESCRIPTION("Prolific PL-2301/2302/25A1 USB Host to Host Link Driver");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/r8152.c backports-4.2.6-1/drivers/net/usb/r8152.c
---- backports-4.2.6-1.org/drivers/net/usb/r8152.c      1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/r8152.c  2016-06-28 14:45:32.005250978 +0200
-@@ -0,0 +1,2856 @@
-+/*
-+ *  Copyright (c) 2014 Realtek Semiconductor Corp. All rights reserved.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/signal.h>
-+#include <linux/slab.h>
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/mii.h>
-+#include <linux/ethtool.h>
-+#include <linux/usb.h>
-+#include <linux/crc32.h>
-+#include <linux/if_vlan.h>
-+#include <linux/uaccess.h>
-+#include <linux/list.h>
-+#include <linux/ip.h>
-+#include <linux/ipv6.h>
-+
-+/* Version Information */
-+#define DRIVER_VERSION "v1.04.0 (2014/01/15)"
-+#define DRIVER_AUTHOR "Realtek linux nic maintainers <nic_swsd@realtek.com>"
-+#define DRIVER_DESC "Realtek RTL8152/RTL8153 Based USB Ethernet Adapters"
-+#define MODULENAME "r8152"
-+
-+#define R8152_PHY_ID          32
-+
-+#define PLA_IDR                       0xc000
-+#define PLA_RCR                       0xc010
-+#define PLA_RMS                       0xc016
-+#define PLA_RXFIFO_CTRL0      0xc0a0
-+#define PLA_RXFIFO_CTRL1      0xc0a4
-+#define PLA_RXFIFO_CTRL2      0xc0a8
-+#define PLA_FMC                       0xc0b4
-+#define PLA_CFG_WOL           0xc0b6
-+#define PLA_TEREDO_CFG                0xc0bc
-+#define PLA_MAR                       0xcd00
-+#define PLA_BACKUP            0xd000
-+#define PAL_BDC_CR            0xd1a0
-+#define PLA_TEREDO_TIMER      0xd2cc
-+#define PLA_REALWOW_TIMER     0xd2e8
-+#define PLA_LEDSEL            0xdd90
-+#define PLA_LED_FEATURE               0xdd92
-+#define PLA_PHYAR             0xde00
-+#define PLA_BOOT_CTRL         0xe004
-+#define PLA_GPHY_INTR_IMR     0xe022
-+#define PLA_EEE_CR            0xe040
-+#define PLA_EEEP_CR           0xe080
-+#define PLA_MAC_PWR_CTRL      0xe0c0
-+#define PLA_MAC_PWR_CTRL2     0xe0ca
-+#define PLA_MAC_PWR_CTRL3     0xe0cc
-+#define PLA_MAC_PWR_CTRL4     0xe0ce
-+#define PLA_WDT6_CTRL         0xe428
-+#define PLA_TCR0              0xe610
-+#define PLA_TCR1              0xe612
-+#define PLA_TXFIFO_CTRL               0xe618
-+#define PLA_RSTTELLY          0xe800
-+#define PLA_CR                        0xe813
-+#define PLA_CRWECR            0xe81c
-+#define PLA_CONFIG5           0xe822
-+#define PLA_PHY_PWR           0xe84c
-+#define PLA_OOB_CTRL          0xe84f
-+#define PLA_CPCR              0xe854
-+#define PLA_MISC_0            0xe858
-+#define PLA_MISC_1            0xe85a
-+#define PLA_OCP_GPHY_BASE     0xe86c
-+#define PLA_TELLYCNT          0xe890
-+#define PLA_SFF_STS_7         0xe8de
-+#define PLA_PHYSTATUS         0xe908
-+#define PLA_BP_BA             0xfc26
-+#define PLA_BP_0              0xfc28
-+#define PLA_BP_1              0xfc2a
-+#define PLA_BP_2              0xfc2c
-+#define PLA_BP_3              0xfc2e
-+#define PLA_BP_4              0xfc30
-+#define PLA_BP_5              0xfc32
-+#define PLA_BP_6              0xfc34
-+#define PLA_BP_7              0xfc36
-+#define PLA_BP_EN             0xfc38
-+
-+#define USB_U2P3_CTRL         0xb460
-+#define USB_DEV_STAT          0xb808
-+#define USB_USB_CTRL          0xd406
-+#define USB_PHY_CTRL          0xd408
-+#define USB_TX_AGG            0xd40a
-+#define USB_RX_BUF_TH         0xd40c
-+#define USB_USB_TIMER         0xd428
-+#define USB_RX_EARLY_AGG      0xd42c
-+#define USB_PM_CTRL_STATUS    0xd432
-+#define USB_TX_DMA            0xd434
-+#define USB_TOLERANCE         0xd490
-+#define USB_LPM_CTRL          0xd41a
-+#define USB_UPS_CTRL          0xd800
-+#define USB_MISC_0            0xd81a
-+#define USB_POWER_CUT         0xd80a
-+#define USB_AFE_CTRL2         0xd824
-+#define USB_WDT11_CTRL                0xe43c
-+#define USB_BP_BA             0xfc26
-+#define USB_BP_0              0xfc28
-+#define USB_BP_1              0xfc2a
-+#define USB_BP_2              0xfc2c
-+#define USB_BP_3              0xfc2e
-+#define USB_BP_4              0xfc30
-+#define USB_BP_5              0xfc32
-+#define USB_BP_6              0xfc34
-+#define USB_BP_7              0xfc36
-+#define USB_BP_EN             0xfc38
-+
-+/* OCP Registers */
-+#define OCP_ALDPS_CONFIG      0x2010
-+#define OCP_EEE_CONFIG1               0x2080
-+#define OCP_EEE_CONFIG2               0x2092
-+#define OCP_EEE_CONFIG3               0x2094
-+#define OCP_BASE_MII          0xa400
-+#define OCP_EEE_AR            0xa41a
-+#define OCP_EEE_DATA          0xa41c
-+#define OCP_PHY_STATUS                0xa420
-+#define OCP_POWER_CFG         0xa430
-+#define OCP_EEE_CFG           0xa432
-+#define OCP_SRAM_ADDR         0xa436
-+#define OCP_SRAM_DATA         0xa438
-+#define OCP_DOWN_SPEED                0xa442
-+#define OCP_EEE_CFG2          0xa5d0
-+#define OCP_ADC_CFG           0xbc06
-+
-+/* SRAM Register */
-+#define SRAM_LPF_CFG          0x8012
-+#define SRAM_10M_AMP1         0x8080
-+#define SRAM_10M_AMP2         0x8082
-+#define SRAM_IMPEDANCE                0x8084
-+
-+/* PLA_RCR */
-+#define RCR_AAP                       0x00000001
-+#define RCR_APM                       0x00000002
-+#define RCR_AM                        0x00000004
-+#define RCR_AB                        0x00000008
-+#define RCR_ACPT_ALL          (RCR_AAP | RCR_APM | RCR_AM | RCR_AB)
-+
-+/* PLA_RXFIFO_CTRL0 */
-+#define RXFIFO_THR1_NORMAL    0x00080002
-+#define RXFIFO_THR1_OOB               0x01800003
-+
-+/* PLA_RXFIFO_CTRL1 */
-+#define RXFIFO_THR2_FULL      0x00000060
-+#define RXFIFO_THR2_HIGH      0x00000038
-+#define RXFIFO_THR2_OOB               0x0000004a
-+#define RXFIFO_THR2_NORMAL    0x00a0
-+
-+/* PLA_RXFIFO_CTRL2 */
-+#define RXFIFO_THR3_FULL      0x00000078
-+#define RXFIFO_THR3_HIGH      0x00000048
-+#define RXFIFO_THR3_OOB               0x0000005a
-+#define RXFIFO_THR3_NORMAL    0x0110
-+
-+/* PLA_TXFIFO_CTRL */
-+#define TXFIFO_THR_NORMAL     0x00400008
-+#define TXFIFO_THR_NORMAL2    0x01000008
-+
-+/* PLA_FMC */
-+#define FMC_FCR_MCU_EN                0x0001
-+
-+/* PLA_EEEP_CR */
-+#define EEEP_CR_EEEP_TX               0x0002
-+
-+/* PLA_WDT6_CTRL */
-+#define WDT6_SET_MODE         0x0010
-+
-+/* PLA_TCR0 */
-+#define TCR0_TX_EMPTY         0x0800
-+#define TCR0_AUTO_FIFO                0x0080
-+
-+/* PLA_TCR1 */
-+#define VERSION_MASK          0x7cf0
-+
-+/* PLA_CR */
-+#define CR_RST                        0x10
-+#define CR_RE                 0x08
-+#define CR_TE                 0x04
-+
-+/* PLA_CRWECR */
-+#define CRWECR_NORAML         0x00
-+#define CRWECR_CONFIG         0xc0
-+
-+/* PLA_OOB_CTRL */
-+#define NOW_IS_OOB            0x80
-+#define TXFIFO_EMPTY          0x20
-+#define RXFIFO_EMPTY          0x10
-+#define LINK_LIST_READY               0x02
-+#define DIS_MCU_CLROOB                0x01
-+#define FIFO_EMPTY            (TXFIFO_EMPTY | RXFIFO_EMPTY)
-+
-+/* PLA_MISC_1 */
-+#define RXDY_GATED_EN         0x0008
-+
-+/* PLA_SFF_STS_7 */
-+#define RE_INIT_LL            0x8000
-+#define MCU_BORW_EN           0x4000
-+
-+/* PLA_CPCR */
-+#define CPCR_RX_VLAN          0x0040
-+
-+/* PLA_CFG_WOL */
-+#define MAGIC_EN              0x0001
-+
-+/* PLA_TEREDO_CFG */
-+#define TEREDO_SEL            0x8000
-+#define TEREDO_WAKE_MASK      0x7f00
-+#define TEREDO_RS_EVENT_MASK  0x00fe
-+#define OOB_TEREDO_EN         0x0001
-+
-+/* PAL_BDC_CR */
-+#define ALDPS_PROXY_MODE      0x0001
-+
-+/* PLA_CONFIG5 */
-+#define LAN_WAKE_EN           0x0002
-+
-+/* PLA_LED_FEATURE */
-+#define LED_MODE_MASK         0x0700
-+
-+/* PLA_PHY_PWR */
-+#define TX_10M_IDLE_EN                0x0080
-+#define PFM_PWM_SWITCH                0x0040
-+
-+/* PLA_MAC_PWR_CTRL */
-+#define D3_CLK_GATED_EN               0x00004000
-+#define MCU_CLK_RATIO         0x07010f07
-+#define MCU_CLK_RATIO_MASK    0x0f0f0f0f
-+#define ALDPS_SPDWN_RATIO     0x0f87
-+
-+/* PLA_MAC_PWR_CTRL2 */
-+#define EEE_SPDWN_RATIO               0x8007
-+
-+/* PLA_MAC_PWR_CTRL3 */
-+#define PKT_AVAIL_SPDWN_EN    0x0100
-+#define SUSPEND_SPDWN_EN      0x0004
-+#define U1U2_SPDWN_EN         0x0002
-+#define L1_SPDWN_EN           0x0001
-+
-+/* PLA_MAC_PWR_CTRL4 */
-+#define PWRSAVE_SPDWN_EN      0x1000
-+#define RXDV_SPDWN_EN         0x0800
-+#define TX10MIDLE_EN          0x0100
-+#define TP100_SPDWN_EN                0x0020
-+#define TP500_SPDWN_EN                0x0010
-+#define TP1000_SPDWN_EN               0x0008
-+#define EEE_SPDWN_EN          0x0001
-+
-+/* PLA_GPHY_INTR_IMR */
-+#define GPHY_STS_MSK          0x0001
-+#define SPEED_DOWN_MSK                0x0002
-+#define SPDWN_RXDV_MSK                0x0004
-+#define SPDWN_LINKCHG_MSK     0x0008
-+
-+/* PLA_PHYAR */
-+#define PHYAR_FLAG            0x80000000
-+
-+/* PLA_EEE_CR */
-+#define EEE_RX_EN             0x0001
-+#define EEE_TX_EN             0x0002
-+
-+/* PLA_BOOT_CTRL */
-+#define AUTOLOAD_DONE         0x0002
-+
-+/* USB_DEV_STAT */
-+#define STAT_SPEED_MASK               0x0006
-+#define STAT_SPEED_HIGH               0x0000
-+#define STAT_SPEED_FULL               0x0001
-+
-+/* USB_TX_AGG */
-+#define TX_AGG_MAX_THRESHOLD  0x03
-+
-+/* USB_RX_BUF_TH */
-+#define RX_THR_SUPPER         0x0c350180
-+#define RX_THR_HIGH           0x7a120180
-+#define RX_THR_SLOW           0xffff0180
-+
-+/* USB_TX_DMA */
-+#define TEST_MODE_DISABLE     0x00000001
-+#define TX_SIZE_ADJUST1               0x00000100
-+
-+/* USB_UPS_CTRL */
-+#define POWER_CUT             0x0100
-+
-+/* USB_PM_CTRL_STATUS */
-+#define RESUME_INDICATE               0x0001
-+
-+/* USB_USB_CTRL */
-+#define RX_AGG_DISABLE                0x0010
-+
-+/* USB_U2P3_CTRL */
-+#define U2P3_ENABLE           0x0001
-+
-+/* USB_POWER_CUT */
-+#define PWR_EN                        0x0001
-+#define PHASE2_EN             0x0008
-+
-+/* USB_MISC_0 */
-+#define PCUT_STATUS           0x0001
-+
-+/* USB_RX_EARLY_AGG */
-+#define EARLY_AGG_SUPPER      0x0e832981
-+#define EARLY_AGG_HIGH                0x0e837a12
-+#define EARLY_AGG_SLOW                0x0e83ffff
-+
-+/* USB_WDT11_CTRL */
-+#define TIMER11_EN            0x0001
-+
-+/* USB_LPM_CTRL */
-+#define LPM_TIMER_MASK                0x0c
-+#define LPM_TIMER_500MS               0x04    /* 500 ms */
-+#define LPM_TIMER_500US               0x0c    /* 500 us */
-+
-+/* USB_AFE_CTRL2 */
-+#define SEN_VAL_MASK          0xf800
-+#define SEN_VAL_NORMAL                0xa000
-+#define SEL_RXIDLE            0x0100
-+
-+/* OCP_ALDPS_CONFIG */
-+#define ENPWRSAVE             0x8000
-+#define ENPDNPS                       0x0200
-+#define LINKENA                       0x0100
-+#define DIS_SDSAVE            0x0010
-+
-+/* OCP_PHY_STATUS */
-+#define PHY_STAT_MASK         0x0007
-+#define PHY_STAT_LAN_ON               3
-+#define PHY_STAT_PWRDN                5
-+
-+/* OCP_POWER_CFG */
-+#define EEE_CLKDIV_EN         0x8000
-+#define EN_ALDPS              0x0004
-+#define EN_10M_PLLOFF         0x0001
-+
-+/* OCP_EEE_CONFIG1 */
-+#define RG_TXLPI_MSK_HFDUP    0x8000
-+#define RG_MATCLR_EN          0x4000
-+#define EEE_10_CAP            0x2000
-+#define EEE_NWAY_EN           0x1000
-+#define TX_QUIET_EN           0x0200
-+#define RX_QUIET_EN           0x0100
-+#define SDRISETIME            0x0010  /* bit 4 ~ 6 */
-+#define RG_RXLPI_MSK_HFDUP    0x0008
-+#define SDFALLTIME            0x0007  /* bit 0 ~ 2 */
-+
-+/* OCP_EEE_CONFIG2 */
-+#define RG_LPIHYS_NUM         0x7000  /* bit 12 ~ 15 */
-+#define RG_DACQUIET_EN                0x0400
-+#define RG_LDVQUIET_EN                0x0200
-+#define RG_CKRSEL             0x0020
-+#define RG_EEEPRG_EN          0x0010
-+
-+/* OCP_EEE_CONFIG3 */
-+#define FST_SNR_EYE_R         0x1500  /* bit 7 ~ 15 */
-+#define RG_LFS_SEL            0x0060  /* bit 6 ~ 5 */
-+#define MSK_PH                        0x0006  /* bit 0 ~ 3 */
-+
-+/* OCP_EEE_AR */
-+/* bit[15:14] function */
-+#define FUN_ADDR              0x0000
-+#define FUN_DATA              0x4000
-+/* bit[4:0] device addr */
-+#define DEVICE_ADDR           0x0007
-+
-+/* OCP_EEE_DATA */
-+#define EEE_ADDR              0x003C
-+#define EEE_DATA              0x0002
-+
-+/* OCP_EEE_CFG */
-+#define CTAP_SHORT_EN         0x0040
-+#define EEE10_EN              0x0010
-+
-+/* OCP_DOWN_SPEED */
-+#define EN_10M_BGOFF          0x0080
-+
-+/* OCP_EEE_CFG2 */
-+#define MY1000_EEE            0x0004
-+#define MY100_EEE             0x0002
-+
-+/* OCP_ADC_CFG */
-+#define CKADSEL_L             0x0100
-+#define ADC_EN                        0x0080
-+#define EN_EMI_L              0x0040
-+
-+/* SRAM_LPF_CFG */
-+#define LPF_AUTO_TUNE         0x8000
-+
-+/* SRAM_10M_AMP1 */
-+#define GDAC_IB_UPALL         0x0008
-+
-+/* SRAM_10M_AMP2 */
-+#define AMP_DN                        0x0200
-+
-+/* SRAM_IMPEDANCE */
-+#define RX_DRIVING_MASK               0x6000
-+
-+enum rtl_register_content {
-+      _1000bps        = 0x10,
-+      _100bps         = 0x08,
-+      _10bps          = 0x04,
-+      LINK_STATUS     = 0x02,
-+      FULL_DUP        = 0x01,
-+};
-+
-+#define RTL8152_MAX_TX                10
-+#define RTL8152_MAX_RX                10
-+#define INTBUFSIZE            2
-+#define CRC_SIZE              4
-+#define TX_ALIGN              4
-+#define RX_ALIGN              8
-+
-+#define INTR_LINK             0x0004
-+
-+#define RTL8152_REQT_READ     0xc0
-+#define RTL8152_REQT_WRITE    0x40
-+#define RTL8152_REQ_GET_REGS  0x05
-+#define RTL8152_REQ_SET_REGS  0x05
-+
-+#define BYTE_EN_DWORD         0xff
-+#define BYTE_EN_WORD          0x33
-+#define BYTE_EN_BYTE          0x11
-+#define BYTE_EN_SIX_BYTES     0x3f
-+#define BYTE_EN_START_MASK    0x0f
-+#define BYTE_EN_END_MASK      0xf0
-+
-+#define RTL8152_RMS           (VLAN_ETH_FRAME_LEN + VLAN_HLEN)
-+#define RTL8152_TX_TIMEOUT    (HZ)
-+
-+/* rtl8152 flags */
-+enum rtl8152_flags {
-+      RTL8152_UNPLUG = 0,
-+      RTL8152_SET_RX_MODE,
-+      WORK_ENABLE,
-+      RTL8152_LINK_CHG,
-+};
-+
-+/* Define these values to match your device */
-+#define VENDOR_ID_REALTEK             0x0bda
-+#define PRODUCT_ID_RTL8152            0x8152
-+#define PRODUCT_ID_RTL8153            0x8153
-+
-+#define VENDOR_ID_SAMSUNG             0x04e8
-+#define PRODUCT_ID_SAMSUNG            0xa101
-+
-+#define VENDOR_ID_LENOVO              0x17ef
-+#define PRODUCT_ID_LENOVO             0x7205
-+
-+#define VENDOR_ID_NVIDIA              0x0955
-+#define PRODUCT_ID_NVIDIA             0x09ff
-+
-+
-+#define MCU_TYPE_PLA                  0x0100
-+#define MCU_TYPE_USB                  0x0000
-+
-+struct rx_desc {
-+      __le32 opts1;
-+#define RX_LEN_MASK                   0x7fff
-+      __le32 opts2;
-+      __le32 opts3;
-+      __le32 opts4;
-+      __le32 opts5;
-+      __le32 opts6;
-+};
-+
-+struct tx_desc {
-+      __le32 opts1;
-+#define TX_FS                 (1 << 31) /* First segment of a packet */
-+#define TX_LS                 (1 << 30) /* Final segment of a packet */
-+#define TX_LEN_MASK           0x3ffff
-+
-+      __le32 opts2;
-+#define UDP_CS                        (1 << 31) /* Calculate UDP/IP checksum */
-+#define TCP_CS                        (1 << 30) /* Calculate TCP/IP checksum */
-+#define IPV4_CS                       (1 << 29) /* Calculate IPv4 checksum */
-+#define IPV6_CS                       (1 << 28) /* Calculate IPv6 checksum */
-+};
-+
-+struct r8152;
-+
-+struct rx_agg {
-+      struct list_head list;
-+      struct urb *urb;
-+      struct r8152 *context;
-+      void *buffer;
-+      void *head;
-+};
-+
-+struct tx_agg {
-+      struct list_head list;
-+      struct urb *urb;
-+      struct r8152 *context;
-+      void *buffer;
-+      void *head;
-+      u32 skb_num;
-+      u32 skb_len;
-+};
-+
-+struct r8152 {
-+      unsigned long flags;
-+      struct usb_device *udev;
-+      struct tasklet_struct tl;
-+      struct usb_interface *intf;
-+      struct net_device *netdev;
-+      struct urb *intr_urb;
-+      struct tx_agg tx_info[RTL8152_MAX_TX];
-+      struct rx_agg rx_info[RTL8152_MAX_RX];
-+      struct list_head rx_done, tx_free;
-+      struct sk_buff_head tx_queue;
-+      spinlock_t rx_lock, tx_lock;
-+      struct delayed_work schedule;
-+      struct mii_if_info mii;
-+
-+      struct rtl_ops {
-+              void (*init)(struct r8152 *);
-+              int (*enable)(struct r8152 *);
-+              void (*disable)(struct r8152 *);
-+              void (*down)(struct r8152 *);
-+              void (*unload)(struct r8152 *);
-+      } __no_const rtl_ops;
-+
-+      int intr_interval;
-+      u32 msg_enable;
-+      u32 tx_qlen;
-+      u16 ocp_base;
-+      u8 *intr_buff;
-+      u8 version;
-+      u8 speed;
-+};
-+
-+enum rtl_version {
-+      RTL_VER_UNKNOWN = 0,
-+      RTL_VER_01,
-+      RTL_VER_02,
-+      RTL_VER_03,
-+      RTL_VER_04,
-+      RTL_VER_05,
-+      RTL_VER_MAX
-+};
-+
-+/* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
-+ * The RTL chips use a 64 element hash table based on the Ethernet CRC.
-+ */
-+static const int multicast_filter_limit = 32;
-+static unsigned int rx_buf_sz = 16384;
-+
-+static
-+int get_registers(struct r8152 *tp, u16 value, u16 index, u16 size, void *data)
-+{
-+      int ret;
-+      void *tmp;
-+
-+      tmp = kmalloc(size, GFP_KERNEL);
-+      if (!tmp)
-+              return -ENOMEM;
-+
-+      ret = usb_control_msg(tp->udev, usb_rcvctrlpipe(tp->udev, 0),
-+                             RTL8152_REQ_GET_REGS, RTL8152_REQT_READ,
-+                             value, index, tmp, size, 500);
-+
-+      memcpy(data, tmp, size);
-+      kfree(tmp);
-+
-+      return ret;
-+}
-+
-+static
-+int set_registers(struct r8152 *tp, u16 value, u16 index, u16 size, void *data)
-+{
-+      int ret;
-+      void *tmp;
-+
-+      tmp = kmalloc(size, GFP_KERNEL);
-+      if (!tmp)
-+              return -ENOMEM;
-+
-+      memcpy(tmp, data, size);
-+
-+      ret = usb_control_msg(tp->udev, usb_sndctrlpipe(tp->udev, 0),
-+                             RTL8152_REQ_SET_REGS, RTL8152_REQT_WRITE,
-+                             value, index, tmp, size, 500);
-+
-+      kfree(tmp);
-+      return ret;
-+}
-+
-+static int generic_ocp_read(struct r8152 *tp, u16 index, u16 size,
-+                              void *data, u16 type)
-+{
-+      u16 limit = 64;
-+      int ret = 0;
-+
-+      if (test_bit(RTL8152_UNPLUG, &tp->flags))
-+              return -ENODEV;
-+
-+      /* both size and indix must be 4 bytes align */
-+      if ((size & 3) || !size || (index & 3) || !data)
-+              return -EPERM;
-+
-+      if ((u32)index + (u32)size > 0xffff)
-+              return -EPERM;
-+
-+      while (size) {
-+              if (size > limit) {
-+                      ret = get_registers(tp, index, type, limit, data);
-+                      if (ret < 0)
-+                              break;
-+
-+                      index += limit;
-+                      data += limit;
-+                      size -= limit;
-+              } else {
-+                      ret = get_registers(tp, index, type, size, data);
-+                      if (ret < 0)
-+                              break;
-+
-+                      index += size;
-+                      data += size;
-+                      size = 0;
-+                      break;
-+              }
-+      }
-+
-+      return ret;
-+}
-+
-+static int generic_ocp_write(struct r8152 *tp, u16 index, u16 byteen,
-+                              u16 size, void *data, u16 type)
-+{
-+      int ret;
-+      u16 byteen_start, byteen_end, byen;
-+      u16 limit = 512;
-+
-+      if (test_bit(RTL8152_UNPLUG, &tp->flags))
-+              return -ENODEV;
-+
-+      /* both size and indix must be 4 bytes align */
-+      if ((size & 3) || !size || (index & 3) || !data)
-+              return -EPERM;
-+
-+      if ((u32)index + (u32)size > 0xffff)
-+              return -EPERM;
-+
-+      byteen_start = byteen & BYTE_EN_START_MASK;
-+      byteen_end = byteen & BYTE_EN_END_MASK;
-+
-+      byen = byteen_start | (byteen_start << 4);
-+      ret = set_registers(tp, index, type | byen, 4, data);
-+      if (ret < 0)
-+              goto error1;
-+
-+      index += 4;
-+      data += 4;
-+      size -= 4;
-+
-+      if (size) {
-+              size -= 4;
-+
-+              while (size) {
-+                      if (size > limit) {
-+                              ret = set_registers(tp, index,
-+                                      type | BYTE_EN_DWORD,
-+                                      limit, data);
-+                              if (ret < 0)
-+                                      goto error1;
-+
-+                              index += limit;
-+                              data += limit;
-+                              size -= limit;
-+                      } else {
-+                              ret = set_registers(tp, index,
-+                                      type | BYTE_EN_DWORD,
-+                                      size, data);
-+                              if (ret < 0)
-+                                      goto error1;
-+
-+                              index += size;
-+                              data += size;
-+                              size = 0;
-+                              break;
-+                      }
-+              }
-+
-+              byen = byteen_end | (byteen_end >> 4);
-+              ret = set_registers(tp, index, type | byen, 4, data);
-+              if (ret < 0)
-+                      goto error1;
-+      }
-+
-+error1:
-+      return ret;
-+}
-+
-+static inline
-+int pla_ocp_read(struct r8152 *tp, u16 index, u16 size, void *data)
-+{
-+      return generic_ocp_read(tp, index, size, data, MCU_TYPE_PLA);
-+}
-+
-+static inline
-+int pla_ocp_write(struct r8152 *tp, u16 index, u16 byteen, u16 size, void *data)
-+{
-+      return generic_ocp_write(tp, index, byteen, size, data, MCU_TYPE_PLA);
-+}
-+
-+static inline
-+int usb_ocp_read(struct r8152 *tp, u16 index, u16 size, void *data)
-+{
-+      return generic_ocp_read(tp, index, size, data, MCU_TYPE_USB);
-+}
-+
-+static inline
-+int usb_ocp_write(struct r8152 *tp, u16 index, u16 byteen, u16 size, void *data)
-+{
-+      return generic_ocp_write(tp, index, byteen, size, data, MCU_TYPE_USB);
-+}
-+
-+static u32 ocp_read_dword(struct r8152 *tp, u16 type, u16 index)
-+{
-+      __le32 data;
-+
-+      generic_ocp_read(tp, index, sizeof(data), &data, type);
-+
-+      return __le32_to_cpu(data);
-+}
-+
-+static void ocp_write_dword(struct r8152 *tp, u16 type, u16 index, u32 data)
-+{
-+      __le32 tmp = __cpu_to_le32(data);
-+
-+      generic_ocp_write(tp, index, BYTE_EN_DWORD, sizeof(tmp), &tmp, type);
-+}
-+
-+static u16 ocp_read_word(struct r8152 *tp, u16 type, u16 index)
-+{
-+      u32 data;
-+      __le32 tmp;
-+      u8 shift = index & 2;
-+
-+      index &= ~3;
-+
-+      generic_ocp_read(tp, index, sizeof(tmp), &tmp, type);
-+
-+      data = __le32_to_cpu(tmp);
-+      data >>= (shift * 8);
-+      data &= 0xffff;
-+
-+      return (u16)data;
-+}
-+
-+static void ocp_write_word(struct r8152 *tp, u16 type, u16 index, u32 data)
-+{
-+      u32 mask = 0xffff;
-+      __le32 tmp;
-+      u16 byen = BYTE_EN_WORD;
-+      u8 shift = index & 2;
-+
-+      data &= mask;
-+
-+      if (index & 2) {
-+              byen <<= shift;
-+              mask <<= (shift * 8);
-+              data <<= (shift * 8);
-+              index &= ~3;
-+      }
-+
-+      generic_ocp_read(tp, index, sizeof(tmp), &tmp, type);
-+
-+      data |= __le32_to_cpu(tmp) & ~mask;
-+      tmp = __cpu_to_le32(data);
-+
-+      generic_ocp_write(tp, index, byen, sizeof(tmp), &tmp, type);
-+}
-+
-+static u8 ocp_read_byte(struct r8152 *tp, u16 type, u16 index)
-+{
-+      u32 data;
-+      __le32 tmp;
-+      u8 shift = index & 3;
-+
-+      index &= ~3;
-+
-+      generic_ocp_read(tp, index, sizeof(tmp), &tmp, type);
-+
-+      data = __le32_to_cpu(tmp);
-+      data >>= (shift * 8);
-+      data &= 0xff;
-+
-+      return (u8)data;
-+}
-+
-+static void ocp_write_byte(struct r8152 *tp, u16 type, u16 index, u32 data)
-+{
-+      u32 mask = 0xff;
-+      __le32 tmp;
-+      u16 byen = BYTE_EN_BYTE;
-+      u8 shift = index & 3;
-+
-+      data &= mask;
-+
-+      if (index & 3) {
-+              byen <<= shift;
-+              mask <<= (shift * 8);
-+              data <<= (shift * 8);
-+              index &= ~3;
-+      }
-+
-+      generic_ocp_read(tp, index, sizeof(tmp), &tmp, type);
-+
-+      data |= __le32_to_cpu(tmp) & ~mask;
-+      tmp = __cpu_to_le32(data);
-+
-+      generic_ocp_write(tp, index, byen, sizeof(tmp), &tmp, type);
-+}
-+
-+static u16 ocp_reg_read(struct r8152 *tp, u16 addr)
-+{
-+      u16 ocp_base, ocp_index;
-+
-+      ocp_base = addr & 0xf000;
-+      if (ocp_base != tp->ocp_base) {
-+              ocp_write_word(tp, MCU_TYPE_PLA, PLA_OCP_GPHY_BASE, ocp_base);
-+              tp->ocp_base = ocp_base;
-+      }
-+
-+      ocp_index = (addr & 0x0fff) | 0xb000;
-+      return ocp_read_word(tp, MCU_TYPE_PLA, ocp_index);
-+}
-+
-+static void ocp_reg_write(struct r8152 *tp, u16 addr, u16 data)
-+{
-+      u16 ocp_base, ocp_index;
-+
-+      ocp_base = addr & 0xf000;
-+      if (ocp_base != tp->ocp_base) {
-+              ocp_write_word(tp, MCU_TYPE_PLA, PLA_OCP_GPHY_BASE, ocp_base);
-+              tp->ocp_base = ocp_base;
-+      }
-+
-+      ocp_index = (addr & 0x0fff) | 0xb000;
-+      ocp_write_word(tp, MCU_TYPE_PLA, ocp_index, data);
-+}
-+
-+static inline void r8152_mdio_write(struct r8152 *tp, u32 reg_addr, u32 value)
-+{
-+      ocp_reg_write(tp, OCP_BASE_MII + reg_addr * 2, value);
-+}
-+
-+static inline int r8152_mdio_read(struct r8152 *tp, u32 reg_addr)
-+{
-+      return ocp_reg_read(tp, OCP_BASE_MII + reg_addr * 2);
-+}
-+
-+static void sram_write(struct r8152 *tp, u16 addr, u16 data)
-+{
-+      ocp_reg_write(tp, OCP_SRAM_ADDR, addr);
-+      ocp_reg_write(tp, OCP_SRAM_DATA, data);
-+}
-+
-+static u16 sram_read(struct r8152 *tp, u16 addr)
-+{
-+      ocp_reg_write(tp, OCP_SRAM_ADDR, addr);
-+      return ocp_reg_read(tp, OCP_SRAM_DATA);
-+}
-+
-+static int read_mii_word(struct net_device *netdev, int phy_id, int reg)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+
-+      if (phy_id != R8152_PHY_ID)
-+              return -EINVAL;
-+
-+      return r8152_mdio_read(tp, reg);
-+}
-+
-+static
-+void write_mii_word(struct net_device *netdev, int phy_id, int reg, int val)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+
-+      if (phy_id != R8152_PHY_ID)
-+              return;
-+
-+      r8152_mdio_write(tp, reg, val);
-+}
-+
-+static
-+int r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags);
-+
-+static inline void set_ethernet_addr(struct r8152 *tp)
-+{
-+      struct net_device *dev = tp->netdev;
-+      u8 node_id[8] = {0};
-+
-+      if (pla_ocp_read(tp, PLA_IDR, sizeof(node_id), node_id) < 0)
-+              netif_notice(tp, probe, dev, "inet addr fail\n");
-+      else {
-+              memcpy(dev->dev_addr, node_id, dev->addr_len);
-+              memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
-+      }
-+}
-+
-+static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+      struct sockaddr *addr = p;
-+
-+      if (!is_valid_ether_addr(addr->sa_data))
-+              return -EADDRNOTAVAIL;
-+
-+      memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
-+
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_CONFIG);
-+      pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES, 8, addr->sa_data);
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_NORAML);
-+
-+      return 0;
-+}
-+
-+static struct net_device_stats *rtl8152_get_stats(struct net_device *dev)
-+{
-+      return &dev->stats;
-+}
-+
-+static void read_bulk_callback(struct urb *urb)
-+{
-+      struct net_device *netdev;
-+      unsigned long flags;
-+      int status = urb->status;
-+      struct rx_agg *agg;
-+      struct r8152 *tp;
-+      int result;
-+
-+      agg = urb->context;
-+      if (!agg)
-+              return;
-+
-+      tp = agg->context;
-+      if (!tp)
-+              return;
-+
-+      if (test_bit(RTL8152_UNPLUG, &tp->flags))
-+              return;
-+
-+      if (!test_bit(WORK_ENABLE, &tp->flags))
-+              return;
-+
-+      netdev = tp->netdev;
-+
-+      /* When link down, the driver would cancel all bulks. */
-+      /* This avoid the re-submitting bulk */
-+      if (!netif_carrier_ok(netdev))
-+              return;
-+
-+      switch (status) {
-+      case 0:
-+              if (urb->actual_length < ETH_ZLEN)
-+                      break;
-+
-+              spin_lock_irqsave(&tp->rx_lock, flags);
-+              list_add_tail(&agg->list, &tp->rx_done);
-+              spin_unlock_irqrestore(&tp->rx_lock, flags);
-+              tasklet_schedule(&tp->tl);
-+              return;
-+      case -ESHUTDOWN:
-+              set_bit(RTL8152_UNPLUG, &tp->flags);
-+              netif_device_detach(tp->netdev);
-+              return;
-+      case -ENOENT:
-+              return; /* the urb is in unlink state */
-+      case -ETIME:
-+              if (net_ratelimit())
-+                      netdev_warn(netdev, "maybe reset is needed?\n");
-+              break;
-+      default:
-+              if (net_ratelimit())
-+                      netdev_warn(netdev, "Rx status %d\n", status);
-+              break;
-+      }
-+
-+      result = r8152_submit_rx(tp, agg, GFP_ATOMIC);
-+      if (result == -ENODEV) {
-+              netif_device_detach(tp->netdev);
-+      } else if (result) {
-+              spin_lock_irqsave(&tp->rx_lock, flags);
-+              list_add_tail(&agg->list, &tp->rx_done);
-+              spin_unlock_irqrestore(&tp->rx_lock, flags);
-+              tasklet_schedule(&tp->tl);
-+      }
-+}
-+
-+static void write_bulk_callback(struct urb *urb)
-+{
-+      struct net_device_stats *stats;
-+      unsigned long flags;
-+      struct tx_agg *agg;
-+      struct r8152 *tp;
-+      int status = urb->status;
-+
-+      agg = urb->context;
-+      if (!agg)
-+              return;
-+
-+      tp = agg->context;
-+      if (!tp)
-+              return;
-+
-+      stats = rtl8152_get_stats(tp->netdev);
-+      if (status) {
-+              if (net_ratelimit())
-+                      netdev_warn(tp->netdev, "Tx status %d\n", status);
-+              stats->tx_errors += agg->skb_num;
-+      } else {
-+              stats->tx_packets += agg->skb_num;
-+              stats->tx_bytes += agg->skb_len;
-+      }
-+
-+      spin_lock_irqsave(&tp->tx_lock, flags);
-+      list_add_tail(&agg->list, &tp->tx_free);
-+      spin_unlock_irqrestore(&tp->tx_lock, flags);
-+
-+      if (!netif_carrier_ok(tp->netdev))
-+              return;
-+
-+      if (!test_bit(WORK_ENABLE, &tp->flags))
-+              return;
-+
-+      if (test_bit(RTL8152_UNPLUG, &tp->flags))
-+              return;
-+
-+      if (!skb_queue_empty(&tp->tx_queue))
-+              tasklet_schedule(&tp->tl);
-+}
-+
-+static void intr_callback(struct urb *urb)
-+{
-+      struct r8152 *tp;
-+      __le16 *d;
-+      int status = urb->status;
-+      int res;
-+
-+      tp = urb->context;
-+      if (!tp)
-+              return;
-+
-+      if (!test_bit(WORK_ENABLE, &tp->flags))
-+              return;
-+
-+      if (test_bit(RTL8152_UNPLUG, &tp->flags))
-+              return;
-+
-+      switch (status) {
-+      case 0:                 /* success */
-+              break;
-+      case -ECONNRESET:       /* unlink */
-+      case -ESHUTDOWN:
-+              netif_device_detach(tp->netdev);
-+      case -ENOENT:
-+              return;
-+      case -EOVERFLOW:
-+              netif_info(tp, intr, tp->netdev, "intr status -EOVERFLOW\n");
-+              goto resubmit;
-+      /* -EPIPE:  should clear the halt */
-+      default:
-+              netif_info(tp, intr, tp->netdev, "intr status %d\n", status);
-+              goto resubmit;
-+      }
-+
-+      d = urb->transfer_buffer;
-+      if (INTR_LINK & __le16_to_cpu(d[0])) {
-+              if (!(tp->speed & LINK_STATUS)) {
-+                      set_bit(RTL8152_LINK_CHG, &tp->flags);
-+                      schedule_delayed_work(&tp->schedule, 0);
-+              }
-+      } else {
-+              if (tp->speed & LINK_STATUS) {
-+                      set_bit(RTL8152_LINK_CHG, &tp->flags);
-+                      schedule_delayed_work(&tp->schedule, 0);
-+              }
-+      }
-+
-+resubmit:
-+      res = usb_submit_urb(urb, GFP_ATOMIC);
-+      if (res == -ENODEV)
-+              netif_device_detach(tp->netdev);
-+      else if (res)
-+              netif_err(tp, intr, tp->netdev,
-+                        "can't resubmit intr, status %d\n", res);
-+}
-+
-+static inline void *rx_agg_align(void *data)
-+{
-+      return (void *)ALIGN((uintptr_t)data, RX_ALIGN);
-+}
-+
-+static inline void *tx_agg_align(void *data)
-+{
-+      return (void *)ALIGN((uintptr_t)data, TX_ALIGN);
-+}
-+
-+static void free_all_mem(struct r8152 *tp)
-+{
-+      int i;
-+
-+      for (i = 0; i < RTL8152_MAX_RX; i++) {
-+              usb_free_urb(tp->rx_info[i].urb);
-+              tp->rx_info[i].urb = NULL;
-+
-+              kfree(tp->rx_info[i].buffer);
-+              tp->rx_info[i].buffer = NULL;
-+              tp->rx_info[i].head = NULL;
-+      }
-+
-+      for (i = 0; i < RTL8152_MAX_TX; i++) {
-+              usb_free_urb(tp->tx_info[i].urb);
-+              tp->tx_info[i].urb = NULL;
-+
-+              kfree(tp->tx_info[i].buffer);
-+              tp->tx_info[i].buffer = NULL;
-+              tp->tx_info[i].head = NULL;
-+      }
-+
-+      usb_free_urb(tp->intr_urb);
-+      tp->intr_urb = NULL;
-+
-+      kfree(tp->intr_buff);
-+      tp->intr_buff = NULL;
-+}
-+
-+static int alloc_all_mem(struct r8152 *tp)
-+{
-+      struct net_device *netdev = tp->netdev;
-+      struct usb_interface *intf = tp->intf;
-+      struct usb_host_interface *alt = intf->cur_altsetting;
-+      struct usb_host_endpoint *ep_intr = alt->endpoint + 2;
-+      struct urb *urb;
-+      int node, i;
-+      u8 *buf;
-+
-+      node = netdev->dev.parent ? dev_to_node(netdev->dev.parent) : -1;
-+
-+      spin_lock_init(&tp->rx_lock);
-+      spin_lock_init(&tp->tx_lock);
-+      INIT_LIST_HEAD(&tp->rx_done);
-+      INIT_LIST_HEAD(&tp->tx_free);
-+      skb_queue_head_init(&tp->tx_queue);
-+
-+      for (i = 0; i < RTL8152_MAX_RX; i++) {
-+              buf = kmalloc_node(rx_buf_sz, GFP_KERNEL, node);
-+              if (!buf)
-+                      goto err1;
-+
-+              if (buf != rx_agg_align(buf)) {
-+                      kfree(buf);
-+                      buf = kmalloc_node(rx_buf_sz + RX_ALIGN, GFP_KERNEL,
-+                                         node);
-+                      if (!buf)
-+                              goto err1;
-+              }
-+
-+              urb = usb_alloc_urb(0, GFP_KERNEL);
-+              if (!urb) {
-+                      kfree(buf);
-+                      goto err1;
-+              }
-+
-+              INIT_LIST_HEAD(&tp->rx_info[i].list);
-+              tp->rx_info[i].context = tp;
-+              tp->rx_info[i].urb = urb;
-+              tp->rx_info[i].buffer = buf;
-+              tp->rx_info[i].head = rx_agg_align(buf);
-+      }
-+
-+      for (i = 0; i < RTL8152_MAX_TX; i++) {
-+              buf = kmalloc_node(rx_buf_sz, GFP_KERNEL, node);
-+              if (!buf)
-+                      goto err1;
-+
-+              if (buf != tx_agg_align(buf)) {
-+                      kfree(buf);
-+                      buf = kmalloc_node(rx_buf_sz + TX_ALIGN, GFP_KERNEL,
-+                                         node);
-+                      if (!buf)
-+                              goto err1;
-+              }
-+
-+              urb = usb_alloc_urb(0, GFP_KERNEL);
-+              if (!urb) {
-+                      kfree(buf);
-+                      goto err1;
-+              }
-+
-+              INIT_LIST_HEAD(&tp->tx_info[i].list);
-+              tp->tx_info[i].context = tp;
-+              tp->tx_info[i].urb = urb;
-+              tp->tx_info[i].buffer = buf;
-+              tp->tx_info[i].head = tx_agg_align(buf);
-+
-+              list_add_tail(&tp->tx_info[i].list, &tp->tx_free);
-+      }
-+
-+      tp->intr_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!tp->intr_urb)
-+              goto err1;
-+
-+      tp->intr_buff = kmalloc(INTBUFSIZE, GFP_KERNEL);
-+      if (!tp->intr_buff)
-+              goto err1;
-+
-+      tp->intr_interval = (int)ep_intr->desc.bInterval;
-+      usb_fill_int_urb(tp->intr_urb, tp->udev, usb_rcvintpipe(tp->udev, 3),
-+                   tp->intr_buff, INTBUFSIZE, intr_callback,
-+                   tp, tp->intr_interval);
-+
-+      return 0;
-+
-+err1:
-+      free_all_mem(tp);
-+      return -ENOMEM;
-+}
-+
-+static struct tx_agg *r8152_get_tx_agg(struct r8152 *tp)
-+{
-+      struct tx_agg *agg = NULL;
-+      unsigned long flags;
-+
-+      spin_lock_irqsave(&tp->tx_lock, flags);
-+      if (!list_empty(&tp->tx_free)) {
-+              struct list_head *cursor;
-+
-+              cursor = tp->tx_free.next;
-+              list_del_init(cursor);
-+              agg = list_entry(cursor, struct tx_agg, list);
-+      }
-+      spin_unlock_irqrestore(&tp->tx_lock, flags);
-+
-+      return agg;
-+}
-+
-+static void
-+r8152_tx_csum(struct r8152 *tp, struct tx_desc *desc, struct sk_buff *skb)
-+{
-+      memset(desc, 0, sizeof(*desc));
-+
-+      desc->opts1 = cpu_to_le32((skb->len & TX_LEN_MASK) | TX_FS | TX_LS);
-+
-+      if (skb->ip_summed == CHECKSUM_PARTIAL) {
-+              __be16 protocol;
-+              u8 ip_protocol;
-+              u32 opts2 = 0;
-+
-+              if (skb->protocol == htons(ETH_P_8021Q))
-+                      protocol = vlan_eth_hdr(skb)->h_vlan_encapsulated_proto;
-+              else
-+                      protocol = skb->protocol;
-+
-+              switch (protocol) {
-+              case htons(ETH_P_IP):
-+                      opts2 |= IPV4_CS;
-+                      ip_protocol = ip_hdr(skb)->protocol;
-+                      break;
-+
-+              case htons(ETH_P_IPV6):
-+                      opts2 |= IPV6_CS;
-+                      ip_protocol = ipv6_hdr(skb)->nexthdr;
-+                      break;
-+
-+              default:
-+                      ip_protocol = IPPROTO_RAW;
-+                      break;
-+              }
-+
-+              if (ip_protocol == IPPROTO_TCP) {
-+                      opts2 |= TCP_CS;
-+                      opts2 |= (skb_transport_offset(skb) & 0x7fff) << 17;
-+              } else if (ip_protocol == IPPROTO_UDP) {
-+                      opts2 |= UDP_CS;
-+              } else {
-+                      WARN_ON_ONCE(1);
-+              }
-+
-+              desc->opts2 = cpu_to_le32(opts2);
-+      }
-+}
-+
-+static int r8152_tx_agg_fill(struct r8152 *tp, struct tx_agg *agg)
-+{
-+      int remain;
-+      u8 *tx_data;
-+
-+      tx_data = agg->head;
-+      agg->skb_num = agg->skb_len = 0;
-+      remain = rx_buf_sz;
-+
-+      while (remain >= ETH_ZLEN + sizeof(struct tx_desc)) {
-+              struct tx_desc *tx_desc;
-+              struct sk_buff *skb;
-+              unsigned int len;
-+
-+              skb = skb_dequeue(&tp->tx_queue);
-+              if (!skb)
-+                      break;
-+
-+              remain -= sizeof(*tx_desc);
-+              len = skb->len;
-+              if (remain < len) {
-+                      skb_queue_head(&tp->tx_queue, skb);
-+                      break;
-+              }
-+
-+              tx_data = tx_agg_align(tx_data);
-+              tx_desc = (struct tx_desc *)tx_data;
-+              tx_data += sizeof(*tx_desc);
-+
-+              r8152_tx_csum(tp, tx_desc, skb);
-+              memcpy(tx_data, skb->data, len);
-+              agg->skb_num++;
-+              agg->skb_len += len;
-+              dev_kfree_skb_any(skb);
-+
-+              tx_data += len;
-+              remain = rx_buf_sz - (int)(tx_agg_align(tx_data) - agg->head);
-+      }
-+
-+      netif_tx_lock(tp->netdev);
-+
-+      if (netif_queue_stopped(tp->netdev) &&
-+          skb_queue_len(&tp->tx_queue) < tp->tx_qlen)
-+              netif_wake_queue(tp->netdev);
-+
-+      netif_tx_unlock(tp->netdev);
-+
-+      usb_fill_bulk_urb(agg->urb, tp->udev, usb_sndbulkpipe(tp->udev, 2),
-+                        agg->head, (int)(tx_data - (u8 *)agg->head),
-+                        (usb_complete_t)write_bulk_callback, agg);
-+
-+      return usb_submit_urb(agg->urb, GFP_ATOMIC);
-+}
-+
-+static void rx_bottom(struct r8152 *tp)
-+{
-+      unsigned long flags;
-+      struct list_head *cursor, *next;
-+
-+      spin_lock_irqsave(&tp->rx_lock, flags);
-+      list_for_each_safe(cursor, next, &tp->rx_done) {
-+              struct rx_desc *rx_desc;
-+              struct rx_agg *agg;
-+              int len_used = 0;
-+              struct urb *urb;
-+              u8 *rx_data;
-+              int ret;
-+
-+              list_del_init(cursor);
-+              spin_unlock_irqrestore(&tp->rx_lock, flags);
-+
-+              agg = list_entry(cursor, struct rx_agg, list);
-+              urb = agg->urb;
-+              if (urb->actual_length < ETH_ZLEN)
-+                      goto submit;
-+
-+              rx_desc = agg->head;
-+              rx_data = agg->head;
-+              len_used += sizeof(struct rx_desc);
-+
-+              while (urb->actual_length > len_used) {
-+                      struct net_device *netdev = tp->netdev;
-+                      struct net_device_stats *stats;
-+                      unsigned int pkt_len;
-+                      struct sk_buff *skb;
-+
-+                      pkt_len = le32_to_cpu(rx_desc->opts1) & RX_LEN_MASK;
-+                      if (pkt_len < ETH_ZLEN)
-+                              break;
-+
-+                      len_used += pkt_len;
-+                      if (urb->actual_length < len_used)
-+                              break;
-+
-+                      stats = rtl8152_get_stats(netdev);
-+
-+                      pkt_len -= CRC_SIZE;
-+                      rx_data += sizeof(struct rx_desc);
-+
-+                      skb = netdev_alloc_skb_ip_align(netdev, pkt_len);
-+                      if (!skb) {
-+                              stats->rx_dropped++;
-+                              break;
-+                      }
-+                      memcpy(skb->data, rx_data, pkt_len);
-+                      skb_put(skb, pkt_len);
-+                      skb->protocol = eth_type_trans(skb, netdev);
-+                      netif_rx(skb);
-+                      stats->rx_packets++;
-+                      stats->rx_bytes += pkt_len;
-+
-+                      rx_data = rx_agg_align(rx_data + pkt_len + CRC_SIZE);
-+                      rx_desc = (struct rx_desc *)rx_data;
-+                      len_used = (int)(rx_data - (u8 *)agg->head);
-+                      len_used += sizeof(struct rx_desc);
-+              }
-+
-+submit:
-+              ret = r8152_submit_rx(tp, agg, GFP_ATOMIC);
-+              spin_lock_irqsave(&tp->rx_lock, flags);
-+              if (ret && ret != -ENODEV) {
-+                      list_add_tail(&agg->list, next);
-+                      tasklet_schedule(&tp->tl);
-+              }
-+      }
-+      spin_unlock_irqrestore(&tp->rx_lock, flags);
-+}
-+
-+static void tx_bottom(struct r8152 *tp)
-+{
-+      int res;
-+
-+      do {
-+              struct tx_agg *agg;
-+
-+              if (skb_queue_empty(&tp->tx_queue))
-+                      break;
-+
-+              agg = r8152_get_tx_agg(tp);
-+              if (!agg)
-+                      break;
-+
-+              res = r8152_tx_agg_fill(tp, agg);
-+              if (res) {
-+                      struct net_device_stats *stats;
-+                      struct net_device *netdev;
-+                      unsigned long flags;
-+
-+                      netdev = tp->netdev;
-+                      stats = rtl8152_get_stats(netdev);
-+
-+                      if (res == -ENODEV) {
-+                              netif_device_detach(netdev);
-+                      } else {
-+                              netif_warn(tp, tx_err, netdev,
-+                                         "failed tx_urb %d\n", res);
-+                              stats->tx_dropped += agg->skb_num;
-+                              spin_lock_irqsave(&tp->tx_lock, flags);
-+                              list_add_tail(&agg->list, &tp->tx_free);
-+                              spin_unlock_irqrestore(&tp->tx_lock, flags);
-+                      }
-+              }
-+      } while (res == 0);
-+}
-+
-+static void bottom_half(unsigned long data)
-+{
-+      struct r8152 *tp;
-+
-+      tp = (struct r8152 *)data;
-+
-+      if (test_bit(RTL8152_UNPLUG, &tp->flags))
-+              return;
-+
-+      if (!test_bit(WORK_ENABLE, &tp->flags))
-+              return;
-+
-+      /* When link down, the driver would cancel all bulks. */
-+      /* This avoid the re-submitting bulk */
-+      if (!netif_carrier_ok(tp->netdev))
-+              return;
-+
-+      rx_bottom(tp);
-+      tx_bottom(tp);
-+}
-+
-+static
-+int r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags)
-+{
-+      usb_fill_bulk_urb(agg->urb, tp->udev, usb_rcvbulkpipe(tp->udev, 1),
-+                    agg->head, rx_buf_sz,
-+                    (usb_complete_t)read_bulk_callback, agg);
-+
-+      return usb_submit_urb(agg->urb, mem_flags);
-+}
-+
-+static void rtl8152_tx_timeout(struct net_device *netdev)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+      int i;
-+
-+      netif_warn(tp, tx_err, netdev, "Tx timeout\n");
-+      for (i = 0; i < RTL8152_MAX_TX; i++)
-+              usb_unlink_urb(tp->tx_info[i].urb);
-+}
-+
-+static void rtl8152_set_rx_mode(struct net_device *netdev)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+
-+      if (tp->speed & LINK_STATUS) {
-+              set_bit(RTL8152_SET_RX_MODE, &tp->flags);
-+              schedule_delayed_work(&tp->schedule, 0);
-+      }
-+}
-+
-+static void _rtl8152_set_rx_mode(struct net_device *netdev)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+      u32 mc_filter[2];       /* Multicast hash filter */
-+      __le32 tmp[2];
-+      u32 ocp_data;
-+
-+      clear_bit(RTL8152_SET_RX_MODE, &tp->flags);
-+      netif_stop_queue(netdev);
-+      ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR);
-+      ocp_data &= ~RCR_ACPT_ALL;
-+      ocp_data |= RCR_AB | RCR_APM;
-+
-+      if (netdev->flags & IFF_PROMISC) {
-+              /* Unconditionally log net taps. */
-+              netif_notice(tp, link, netdev, "Promiscuous mode enabled\n");
-+              ocp_data |= RCR_AM | RCR_AAP;
-+              mc_filter[1] = mc_filter[0] = 0xffffffff;
-+      } else if ((netdev_mc_count(netdev) > multicast_filter_limit) ||
-+                 (netdev->flags & IFF_ALLMULTI)) {
-+              /* Too many to filter perfectly -- accept all multicasts. */
-+              ocp_data |= RCR_AM;
-+              mc_filter[1] = mc_filter[0] = 0xffffffff;
-+      } else {
-+              struct netdev_hw_addr *ha;
-+
-+              mc_filter[1] = mc_filter[0] = 0;
-+              netdev_for_each_mc_addr(ha, netdev) {
-+                      int bit_nr = ether_crc(ETH_ALEN, ha->addr) >> 26;
-+                      mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
-+                      ocp_data |= RCR_AM;
-+              }
-+      }
-+
-+      tmp[0] = __cpu_to_le32(swab32(mc_filter[1]));
-+      tmp[1] = __cpu_to_le32(swab32(mc_filter[0]));
-+
-+      pla_ocp_write(tp, PLA_MAR, BYTE_EN_DWORD, sizeof(tmp), tmp);
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data);
-+      netif_wake_queue(netdev);
-+}
-+
-+static netdev_tx_t rtl8152_start_xmit(struct sk_buff *skb,
-+                                          struct net_device *netdev)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+
-+      skb_tx_timestamp(skb);
-+
-+      skb_queue_tail(&tp->tx_queue, skb);
-+
-+      if (list_empty(&tp->tx_free) &&
-+          skb_queue_len(&tp->tx_queue) > tp->tx_qlen)
-+              netif_stop_queue(netdev);
-+
-+      if (!list_empty(&tp->tx_free))
-+              tasklet_schedule(&tp->tl);
-+
-+      return NETDEV_TX_OK;
-+}
-+
-+static void r8152b_reset_packet_filter(struct r8152 *tp)
-+{
-+      u32     ocp_data;
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_FMC);
-+      ocp_data &= ~FMC_FCR_MCU_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_FMC, ocp_data);
-+      ocp_data |= FMC_FCR_MCU_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_FMC, ocp_data);
-+}
-+
-+static void rtl8152_nic_reset(struct r8152 *tp)
-+{
-+      int     i;
-+
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CR, CR_RST);
-+
-+      for (i = 0; i < 1000; i++) {
-+              if (!(ocp_read_byte(tp, MCU_TYPE_PLA, PLA_CR) & CR_RST))
-+                      break;
-+              udelay(100);
-+      }
-+}
-+
-+static void set_tx_qlen(struct r8152 *tp)
-+{
-+      struct net_device *netdev = tp->netdev;
-+
-+      tp->tx_qlen = rx_buf_sz / (netdev->mtu + VLAN_ETH_HLEN + VLAN_HLEN +
-+                                 sizeof(struct tx_desc));
-+}
-+
-+static inline u8 rtl8152_get_speed(struct r8152 *tp)
-+{
-+      return ocp_read_byte(tp, MCU_TYPE_PLA, PLA_PHYSTATUS);
-+}
-+
-+static void rtl_set_eee_plus(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+      u8 speed;
-+
-+      speed = rtl8152_get_speed(tp);
-+      if (speed & _10bps) {
-+              ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_EEEP_CR);
-+              ocp_data |= EEEP_CR_EEEP_TX;
-+              ocp_write_word(tp, MCU_TYPE_PLA, PLA_EEEP_CR, ocp_data);
-+      } else {
-+              ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_EEEP_CR);
-+              ocp_data &= ~EEEP_CR_EEEP_TX;
-+              ocp_write_word(tp, MCU_TYPE_PLA, PLA_EEEP_CR, ocp_data);
-+      }
-+}
-+
-+static int rtl_enable(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+      int i, ret;
-+
-+      r8152b_reset_packet_filter(tp);
-+
-+      ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_CR);
-+      ocp_data |= CR_RE | CR_TE;
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CR, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_MISC_1);
-+      ocp_data &= ~RXDY_GATED_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MISC_1, ocp_data);
-+
-+      INIT_LIST_HEAD(&tp->rx_done);
-+      ret = 0;
-+      for (i = 0; i < RTL8152_MAX_RX; i++) {
-+              INIT_LIST_HEAD(&tp->rx_info[i].list);
-+              ret |= r8152_submit_rx(tp, &tp->rx_info[i], GFP_KERNEL);
-+      }
-+
-+      return ret;
-+}
-+
-+static int rtl8152_enable(struct r8152 *tp)
-+{
-+      set_tx_qlen(tp);
-+      rtl_set_eee_plus(tp);
-+
-+      return rtl_enable(tp);
-+}
-+
-+static void r8153_set_rx_agg(struct r8152 *tp)
-+{
-+      u8 speed;
-+
-+      speed = rtl8152_get_speed(tp);
-+      if (speed & _1000bps) {
-+              if (tp->udev->speed == USB_SPEED_SUPER) {
-+                      ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_BUF_TH,
-+                                      RX_THR_SUPPER);
-+                      ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_EARLY_AGG,
-+                                      EARLY_AGG_SUPPER);
-+              } else {
-+                      ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_BUF_TH,
-+                                      RX_THR_HIGH);
-+                      ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_EARLY_AGG,
-+                                      EARLY_AGG_HIGH);
-+              }
-+      } else {
-+              ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_BUF_TH, RX_THR_SLOW);
-+              ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_EARLY_AGG,
-+                              EARLY_AGG_SLOW);
-+      }
-+}
-+
-+static int rtl8153_enable(struct r8152 *tp)
-+{
-+      set_tx_qlen(tp);
-+      rtl_set_eee_plus(tp);
-+      r8153_set_rx_agg(tp);
-+
-+      return rtl_enable(tp);
-+}
-+
-+static void rtl8152_disable(struct r8152 *tp)
-+{
-+      struct net_device_stats *stats = rtl8152_get_stats(tp->netdev);
-+      struct sk_buff *skb;
-+      u32 ocp_data;
-+      int i;
-+
-+      ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR);
-+      ocp_data &= ~RCR_ACPT_ALL;
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data);
-+
-+      while ((skb = skb_dequeue(&tp->tx_queue))) {
-+              dev_kfree_skb(skb);
-+              stats->tx_dropped++;
-+      }
-+
-+      for (i = 0; i < RTL8152_MAX_TX; i++)
-+              usb_kill_urb(tp->tx_info[i].urb);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_MISC_1);
-+      ocp_data |= RXDY_GATED_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MISC_1, ocp_data);
-+
-+      for (i = 0; i < 1000; i++) {
-+              ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+              if ((ocp_data & FIFO_EMPTY) == FIFO_EMPTY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      for (i = 0; i < 1000; i++) {
-+              if (ocp_read_word(tp, MCU_TYPE_PLA, PLA_TCR0) & TCR0_TX_EMPTY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      for (i = 0; i < RTL8152_MAX_RX; i++)
-+              usb_kill_urb(tp->rx_info[i].urb);
-+
-+      rtl8152_nic_reset(tp);
-+}
-+
-+static void r8152b_exit_oob(struct r8152 *tp)
-+{
-+      u32     ocp_data;
-+      int     i;
-+
-+      ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR);
-+      ocp_data &= ~RCR_ACPT_ALL;
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_MISC_1);
-+      ocp_data |= RXDY_GATED_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MISC_1, ocp_data);
-+
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_NORAML);
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CR, 0x00);
-+
-+      ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+      ocp_data &= ~NOW_IS_OOB;
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7);
-+      ocp_data &= ~MCU_BORW_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data);
-+
-+      for (i = 0; i < 1000; i++) {
-+              ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+              if (ocp_data & LINK_LIST_READY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7);
-+      ocp_data |= RE_INIT_LL;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data);
-+
-+      for (i = 0; i < 1000; i++) {
-+              ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+              if (ocp_data & LINK_LIST_READY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      rtl8152_nic_reset(tp);
-+
-+      /* rx share fifo credit full threshold */
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL0, RXFIFO_THR1_NORMAL);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_DEV_STAT);
-+      ocp_data &= STAT_SPEED_MASK;
-+      if (ocp_data == STAT_SPEED_FULL) {
-+              /* rx share fifo credit near full threshold */
-+              ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL1,
-+                              RXFIFO_THR2_FULL);
-+              ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL2,
-+                              RXFIFO_THR3_FULL);
-+      } else {
-+              /* rx share fifo credit near full threshold */
-+              ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL1,
-+                              RXFIFO_THR2_HIGH);
-+              ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL2,
-+                              RXFIFO_THR3_HIGH);
-+      }
-+
-+      /* TX share fifo free credit full threshold */
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_TXFIFO_CTRL, TXFIFO_THR_NORMAL);
-+
-+      ocp_write_byte(tp, MCU_TYPE_USB, USB_TX_AGG, TX_AGG_MAX_THRESHOLD);
-+      ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_BUF_TH, RX_THR_HIGH);
-+      ocp_write_dword(tp, MCU_TYPE_USB, USB_TX_DMA,
-+                      TEST_MODE_DISABLE | TX_SIZE_ADJUST1);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_CPCR);
-+      ocp_data &= ~CPCR_RX_VLAN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_CPCR, ocp_data);
-+
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, RTL8152_RMS);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_TCR0);
-+      ocp_data |= TCR0_AUTO_FIFO;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_TCR0, ocp_data);
-+}
-+
-+static void r8152b_enter_oob(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+      int i;
-+
-+      ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+      ocp_data &= ~NOW_IS_OOB;
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
-+
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL0, RXFIFO_THR1_OOB);
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL1, RXFIFO_THR2_OOB);
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL2, RXFIFO_THR3_OOB);
-+
-+      rtl8152_disable(tp);
-+
-+      for (i = 0; i < 1000; i++) {
-+              ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+              if (ocp_data & LINK_LIST_READY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7);
-+      ocp_data |= RE_INIT_LL;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data);
-+
-+      for (i = 0; i < 1000; i++) {
-+              ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+              if (ocp_data & LINK_LIST_READY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, RTL8152_RMS);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_CFG_WOL);
-+      ocp_data |= MAGIC_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_CFG_WOL, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_CPCR);
-+      ocp_data |= CPCR_RX_VLAN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_CPCR, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PAL_BDC_CR);
-+      ocp_data |= ALDPS_PROXY_MODE;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PAL_BDC_CR, ocp_data);
-+
-+      ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+      ocp_data |= NOW_IS_OOB | DIS_MCU_CLROOB;
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
-+
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CONFIG5, LAN_WAKE_EN);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_MISC_1);
-+      ocp_data &= ~RXDY_GATED_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MISC_1, ocp_data);
-+
-+      ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR);
-+      ocp_data |= RCR_APM | RCR_AM | RCR_AB;
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data);
-+}
-+
-+static void r8152b_disable_aldps(struct r8152 *tp)
-+{
-+      ocp_reg_write(tp, OCP_ALDPS_CONFIG, ENPDNPS | LINKENA | DIS_SDSAVE);
-+      msleep(20);
-+}
-+
-+static inline void r8152b_enable_aldps(struct r8152 *tp)
-+{
-+      ocp_reg_write(tp, OCP_ALDPS_CONFIG, ENPWRSAVE | ENPDNPS |
-+                                          LINKENA | DIS_SDSAVE);
-+}
-+
-+static void r8153_hw_phy_cfg(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+      u16 data;
-+
-+      ocp_reg_write(tp, OCP_ADC_CFG, CKADSEL_L | ADC_EN | EN_EMI_L);
-+      r8152_mdio_write(tp, MII_BMCR, BMCR_ANENABLE);
-+
-+      if (tp->version == RTL_VER_03) {
-+              data = ocp_reg_read(tp, OCP_EEE_CFG);
-+              data &= ~CTAP_SHORT_EN;
-+              ocp_reg_write(tp, OCP_EEE_CFG, data);
-+      }
-+
-+      data = ocp_reg_read(tp, OCP_POWER_CFG);
-+      data |= EEE_CLKDIV_EN;
-+      ocp_reg_write(tp, OCP_POWER_CFG, data);
-+
-+      data = ocp_reg_read(tp, OCP_DOWN_SPEED);
-+      data |= EN_10M_BGOFF;
-+      ocp_reg_write(tp, OCP_DOWN_SPEED, data);
-+      data = ocp_reg_read(tp, OCP_POWER_CFG);
-+      data |= EN_10M_PLLOFF;
-+      ocp_reg_write(tp, OCP_POWER_CFG, data);
-+      data = sram_read(tp, SRAM_IMPEDANCE);
-+      data &= ~RX_DRIVING_MASK;
-+      sram_write(tp, SRAM_IMPEDANCE, data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_PHY_PWR);
-+      ocp_data |= PFM_PWM_SWITCH;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_PHY_PWR, ocp_data);
-+
-+      data = sram_read(tp, SRAM_LPF_CFG);
-+      data |= LPF_AUTO_TUNE;
-+      sram_write(tp, SRAM_LPF_CFG, data);
-+
-+      data = sram_read(tp, SRAM_10M_AMP1);
-+      data |= GDAC_IB_UPALL;
-+      sram_write(tp, SRAM_10M_AMP1, data);
-+      data = sram_read(tp, SRAM_10M_AMP2);
-+      data |= AMP_DN;
-+      sram_write(tp, SRAM_10M_AMP2, data);
-+}
-+
-+static void r8153_u1u2en(struct r8152 *tp, int enable)
-+{
-+      u8 u1u2[8];
-+
-+      if (enable)
-+              memset(u1u2, 0xff, sizeof(u1u2));
-+      else
-+              memset(u1u2, 0x00, sizeof(u1u2));
-+
-+      usb_ocp_write(tp, USB_TOLERANCE, BYTE_EN_SIX_BYTES, sizeof(u1u2), u1u2);
-+}
-+
-+static void r8153_u2p3en(struct r8152 *tp, int enable)
-+{
-+      u32 ocp_data;
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_U2P3_CTRL);
-+      if (enable)
-+              ocp_data |= U2P3_ENABLE;
-+      else
-+              ocp_data &= ~U2P3_ENABLE;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_U2P3_CTRL, ocp_data);
-+}
-+
-+static void r8153_power_cut_en(struct r8152 *tp, int enable)
-+{
-+      u32 ocp_data;
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_POWER_CUT);
-+      if (enable)
-+              ocp_data |= PWR_EN | PHASE2_EN;
-+      else
-+              ocp_data &= ~(PWR_EN | PHASE2_EN);
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_POWER_CUT, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_MISC_0);
-+      ocp_data &= ~PCUT_STATUS;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_MISC_0, ocp_data);
-+}
-+
-+static void r8153_teredo_off(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_TEREDO_CFG);
-+      ocp_data &= ~(TEREDO_SEL | TEREDO_RS_EVENT_MASK | OOB_TEREDO_EN);
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_TEREDO_CFG, ocp_data);
-+
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_WDT6_CTRL, WDT6_SET_MODE);
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_REALWOW_TIMER, 0);
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_TEREDO_TIMER, 0);
-+}
-+
-+static void r8153_first_init(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+      int i;
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_MISC_1);
-+      ocp_data |= RXDY_GATED_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MISC_1, ocp_data);
-+
-+      r8153_teredo_off(tp);
-+
-+      ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR);
-+      ocp_data &= ~RCR_ACPT_ALL;
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data);
-+
-+      r8153_hw_phy_cfg(tp);
-+
-+      rtl8152_nic_reset(tp);
-+
-+      ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+      ocp_data &= ~NOW_IS_OOB;
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7);
-+      ocp_data &= ~MCU_BORW_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data);
-+
-+      for (i = 0; i < 1000; i++) {
-+              ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+              if (ocp_data & LINK_LIST_READY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7);
-+      ocp_data |= RE_INIT_LL;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data);
-+
-+      for (i = 0; i < 1000; i++) {
-+              ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+              if (ocp_data & LINK_LIST_READY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_CPCR);
-+      ocp_data &= ~CPCR_RX_VLAN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_CPCR, ocp_data);
-+
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, RTL8152_RMS);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_TCR0);
-+      ocp_data |= TCR0_AUTO_FIFO;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_TCR0, ocp_data);
-+
-+      rtl8152_nic_reset(tp);
-+
-+      /* rx share fifo credit full threshold */
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL0, RXFIFO_THR1_NORMAL);
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL1, RXFIFO_THR2_NORMAL);
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL2, RXFIFO_THR3_NORMAL);
-+      /* TX share fifo free credit full threshold */
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_TXFIFO_CTRL, TXFIFO_THR_NORMAL2);
-+
-+      /* rx aggregation */
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
-+      ocp_data &= ~RX_AGG_DISABLE;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
-+}
-+
-+static void r8153_enter_oob(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+      int i;
-+
-+      ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+      ocp_data &= ~NOW_IS_OOB;
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
-+
-+      rtl8152_disable(tp);
-+
-+      for (i = 0; i < 1000; i++) {
-+              ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+              if (ocp_data & LINK_LIST_READY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7);
-+      ocp_data |= RE_INIT_LL;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data);
-+
-+      for (i = 0; i < 1000; i++) {
-+              ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+              if (ocp_data & LINK_LIST_READY)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, RTL8152_RMS);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_CFG_WOL);
-+      ocp_data |= MAGIC_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_CFG_WOL, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_TEREDO_CFG);
-+      ocp_data &= ~TEREDO_WAKE_MASK;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_TEREDO_CFG, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_CPCR);
-+      ocp_data |= CPCR_RX_VLAN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_CPCR, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PAL_BDC_CR);
-+      ocp_data |= ALDPS_PROXY_MODE;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PAL_BDC_CR, ocp_data);
-+
-+      ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
-+      ocp_data |= NOW_IS_OOB | DIS_MCU_CLROOB;
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
-+
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CONFIG5, LAN_WAKE_EN);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_MISC_1);
-+      ocp_data &= ~RXDY_GATED_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MISC_1, ocp_data);
-+
-+      ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR);
-+      ocp_data |= RCR_APM | RCR_AM | RCR_AB;
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data);
-+}
-+
-+static void r8153_disable_aldps(struct r8152 *tp)
-+{
-+      u16 data;
-+
-+      data = ocp_reg_read(tp, OCP_POWER_CFG);
-+      data &= ~EN_ALDPS;
-+      ocp_reg_write(tp, OCP_POWER_CFG, data);
-+      msleep(20);
-+}
-+
-+static void r8153_enable_aldps(struct r8152 *tp)
-+{
-+      u16 data;
-+
-+      data = ocp_reg_read(tp, OCP_POWER_CFG);
-+      data |= EN_ALDPS;
-+      ocp_reg_write(tp, OCP_POWER_CFG, data);
-+}
-+
-+static int rtl8152_set_speed(struct r8152 *tp, u8 autoneg, u16 speed, u8 duplex)
-+{
-+      u16 bmcr, anar, gbcr;
-+      int ret = 0;
-+
-+      cancel_delayed_work_sync(&tp->schedule);
-+      anar = r8152_mdio_read(tp, MII_ADVERTISE);
-+      anar &= ~(ADVERTISE_10HALF | ADVERTISE_10FULL |
-+                ADVERTISE_100HALF | ADVERTISE_100FULL);
-+      if (tp->mii.supports_gmii) {
-+              gbcr = r8152_mdio_read(tp, MII_CTRL1000);
-+              gbcr &= ~(ADVERTISE_1000FULL | ADVERTISE_1000HALF);
-+      } else {
-+              gbcr = 0;
-+      }
-+
-+      if (autoneg == AUTONEG_DISABLE) {
-+              if (speed == SPEED_10) {
-+                      bmcr = 0;
-+                      anar |= ADVERTISE_10HALF | ADVERTISE_10FULL;
-+              } else if (speed == SPEED_100) {
-+                      bmcr = BMCR_SPEED100;
-+                      anar |= ADVERTISE_100HALF | ADVERTISE_100FULL;
-+              } else if (speed == SPEED_1000 && tp->mii.supports_gmii) {
-+                      bmcr = BMCR_SPEED1000;
-+                      gbcr |= ADVERTISE_1000FULL | ADVERTISE_1000HALF;
-+              } else {
-+                      ret = -EINVAL;
-+                      goto out;
-+              }
-+
-+              if (duplex == DUPLEX_FULL)
-+                      bmcr |= BMCR_FULLDPLX;
-+      } else {
-+              if (speed == SPEED_10) {
-+                      if (duplex == DUPLEX_FULL)
-+                              anar |= ADVERTISE_10HALF | ADVERTISE_10FULL;
-+                      else
-+                              anar |= ADVERTISE_10HALF;
-+              } else if (speed == SPEED_100) {
-+                      if (duplex == DUPLEX_FULL) {
-+                              anar |= ADVERTISE_10HALF | ADVERTISE_10FULL;
-+                              anar |= ADVERTISE_100HALF | ADVERTISE_100FULL;
-+                      } else {
-+                              anar |= ADVERTISE_10HALF;
-+                              anar |= ADVERTISE_100HALF;
-+                      }
-+              } else if (speed == SPEED_1000 && tp->mii.supports_gmii) {
-+                      if (duplex == DUPLEX_FULL) {
-+                              anar |= ADVERTISE_10HALF | ADVERTISE_10FULL;
-+                              anar |= ADVERTISE_100HALF | ADVERTISE_100FULL;
-+                              gbcr |= ADVERTISE_1000FULL | ADVERTISE_1000HALF;
-+                      } else {
-+                              anar |= ADVERTISE_10HALF;
-+                              anar |= ADVERTISE_100HALF;
-+                              gbcr |= ADVERTISE_1000HALF;
-+                      }
-+              } else {
-+                      ret = -EINVAL;
-+                      goto out;
-+              }
-+
-+              bmcr = BMCR_ANENABLE | BMCR_ANRESTART;
-+      }
-+
-+      if (tp->mii.supports_gmii)
-+              r8152_mdio_write(tp, MII_CTRL1000, gbcr);
-+
-+      r8152_mdio_write(tp, MII_ADVERTISE, anar);
-+      r8152_mdio_write(tp, MII_BMCR, bmcr);
-+
-+out:
-+
-+      return ret;
-+}
-+
-+static void rtl8152_down(struct r8152 *tp)
-+{
-+      u32     ocp_data;
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_UPS_CTRL);
-+      ocp_data &= ~POWER_CUT;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_UPS_CTRL, ocp_data);
-+
-+      r8152b_disable_aldps(tp);
-+      r8152b_enter_oob(tp);
-+      r8152b_enable_aldps(tp);
-+}
-+
-+static void rtl8153_down(struct r8152 *tp)
-+{
-+      r8153_u1u2en(tp, 0);
-+      r8153_power_cut_en(tp, 0);
-+      r8153_disable_aldps(tp);
-+      r8153_enter_oob(tp);
-+      r8153_enable_aldps(tp);
-+}
-+
-+static void set_carrier(struct r8152 *tp)
-+{
-+      struct net_device *netdev = tp->netdev;
-+      u8 speed;
-+
-+      clear_bit(RTL8152_LINK_CHG, &tp->flags);
-+      speed = rtl8152_get_speed(tp);
-+
-+      if (speed & LINK_STATUS) {
-+              if (!(tp->speed & LINK_STATUS)) {
-+                      tp->rtl_ops.enable(tp);
-+                      set_bit(RTL8152_SET_RX_MODE, &tp->flags);
-+                      netif_carrier_on(netdev);
-+              }
-+      } else {
-+              if (tp->speed & LINK_STATUS) {
-+                      netif_carrier_off(netdev);
-+                      tasklet_disable(&tp->tl);
-+                      tp->rtl_ops.disable(tp);
-+                      tasklet_enable(&tp->tl);
-+              }
-+      }
-+      tp->speed = speed;
-+}
-+
-+static void rtl_work_func_t(struct work_struct *work)
-+{
-+      struct r8152 *tp = container_of(work, struct r8152, schedule.work);
-+
-+      if (!test_bit(WORK_ENABLE, &tp->flags))
-+              goto out1;
-+
-+      if (test_bit(RTL8152_UNPLUG, &tp->flags))
-+              goto out1;
-+
-+      if (test_bit(RTL8152_LINK_CHG, &tp->flags))
-+              set_carrier(tp);
-+
-+      if (test_bit(RTL8152_SET_RX_MODE, &tp->flags))
-+              _rtl8152_set_rx_mode(tp->netdev);
-+
-+out1:
-+      return;
-+}
-+
-+static int rtl8152_open(struct net_device *netdev)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+      int res = 0;
-+
-+      rtl8152_set_speed(tp, AUTONEG_ENABLE,
-+                        tp->mii.supports_gmii ? SPEED_1000 : SPEED_100,
-+                        DUPLEX_FULL);
-+      tp->speed = 0;
-+      netif_carrier_off(netdev);
-+      netif_start_queue(netdev);
-+      set_bit(WORK_ENABLE, &tp->flags);
-+      res = usb_submit_urb(tp->intr_urb, GFP_KERNEL);
-+      if (res) {
-+              if (res == -ENODEV)
-+                      netif_device_detach(tp->netdev);
-+              netif_warn(tp, ifup, netdev, "intr_urb submit failed: %d\n",
-+                         res);
-+      }
-+
-+
-+      return res;
-+}
-+
-+static int rtl8152_close(struct net_device *netdev)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+      int res = 0;
-+
-+      clear_bit(WORK_ENABLE, &tp->flags);
-+      usb_kill_urb(tp->intr_urb);
-+      cancel_delayed_work_sync(&tp->schedule);
-+      netif_stop_queue(netdev);
-+      tasklet_disable(&tp->tl);
-+      tp->rtl_ops.disable(tp);
-+      tasklet_enable(&tp->tl);
-+
-+      return res;
-+}
-+
-+static void rtl_clear_bp(struct r8152 *tp)
-+{
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_BP_0, 0);
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_BP_2, 0);
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_BP_4, 0);
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_BP_6, 0);
-+      ocp_write_dword(tp, MCU_TYPE_USB, USB_BP_0, 0);
-+      ocp_write_dword(tp, MCU_TYPE_USB, USB_BP_2, 0);
-+      ocp_write_dword(tp, MCU_TYPE_USB, USB_BP_4, 0);
-+      ocp_write_dword(tp, MCU_TYPE_USB, USB_BP_6, 0);
-+      mdelay(3);
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_BP_BA, 0);
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_BP_BA, 0);
-+}
-+
-+static void r8153_clear_bp(struct r8152 *tp)
-+{
-+      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_BP_EN, 0);
-+      ocp_write_byte(tp, MCU_TYPE_USB, USB_BP_EN, 0);
-+      rtl_clear_bp(tp);
-+}
-+
-+static void r8152b_enable_eee(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_EEE_CR);
-+      ocp_data |= EEE_RX_EN | EEE_TX_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_EEE_CR, ocp_data);
-+      ocp_reg_write(tp, OCP_EEE_CONFIG1, RG_TXLPI_MSK_HFDUP | RG_MATCLR_EN |
-+                                         EEE_10_CAP | EEE_NWAY_EN |
-+                                         TX_QUIET_EN | RX_QUIET_EN |
-+                                         SDRISETIME | RG_RXLPI_MSK_HFDUP |
-+                                         SDFALLTIME);
-+      ocp_reg_write(tp, OCP_EEE_CONFIG2, RG_LPIHYS_NUM | RG_DACQUIET_EN |
-+                                         RG_LDVQUIET_EN | RG_CKRSEL |
-+                                         RG_EEEPRG_EN);
-+      ocp_reg_write(tp, OCP_EEE_CONFIG3, FST_SNR_EYE_R | RG_LFS_SEL | MSK_PH);
-+      ocp_reg_write(tp, OCP_EEE_AR, FUN_ADDR | DEVICE_ADDR);
-+      ocp_reg_write(tp, OCP_EEE_DATA, EEE_ADDR);
-+      ocp_reg_write(tp, OCP_EEE_AR, FUN_DATA | DEVICE_ADDR);
-+      ocp_reg_write(tp, OCP_EEE_DATA, EEE_DATA);
-+      ocp_reg_write(tp, OCP_EEE_AR, 0x0000);
-+}
-+
-+static void r8153_enable_eee(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+      u16 data;
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_EEE_CR);
-+      ocp_data |= EEE_RX_EN | EEE_TX_EN;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_EEE_CR, ocp_data);
-+      data = ocp_reg_read(tp, OCP_EEE_CFG);
-+      data |= EEE10_EN;
-+      ocp_reg_write(tp, OCP_EEE_CFG, data);
-+      data = ocp_reg_read(tp, OCP_EEE_CFG2);
-+      data |= MY1000_EEE | MY100_EEE;
-+      ocp_reg_write(tp, OCP_EEE_CFG2, data);
-+}
-+
-+static void r8152b_enable_fc(struct r8152 *tp)
-+{
-+      u16 anar;
-+
-+      anar = r8152_mdio_read(tp, MII_ADVERTISE);
-+      anar |= ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM;
-+      r8152_mdio_write(tp, MII_ADVERTISE, anar);
-+}
-+
-+static void r8152b_hw_phy_cfg(struct r8152 *tp)
-+{
-+      r8152_mdio_write(tp, MII_BMCR, BMCR_ANENABLE);
-+      r8152b_disable_aldps(tp);
-+}
-+
-+static void r8152b_init(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+      int i;
-+
-+      rtl_clear_bp(tp);
-+
-+      if (tp->version == RTL_VER_01) {
-+              ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);
-+              ocp_data &= ~LED_MODE_MASK;
-+              ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);
-+      }
-+
-+      r8152b_hw_phy_cfg(tp);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_UPS_CTRL);
-+      ocp_data &= ~POWER_CUT;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_UPS_CTRL, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_PM_CTRL_STATUS);
-+      ocp_data &= ~RESUME_INDICATE;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_PM_CTRL_STATUS, ocp_data);
-+
-+      r8152b_exit_oob(tp);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_PHY_PWR);
-+      ocp_data |= TX_10M_IDLE_EN | PFM_PWM_SWITCH;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_PHY_PWR, ocp_data);
-+      ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL);
-+      ocp_data &= ~MCU_CLK_RATIO_MASK;
-+      ocp_data |= MCU_CLK_RATIO | D3_CLK_GATED_EN;
-+      ocp_write_dword(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL, ocp_data);
-+      ocp_data = GPHY_STS_MSK | SPEED_DOWN_MSK |
-+                 SPDWN_RXDV_MSK | SPDWN_LINKCHG_MSK;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_GPHY_INTR_IMR, ocp_data);
-+
-+      r8152b_enable_eee(tp);
-+      r8152b_enable_aldps(tp);
-+      r8152b_enable_fc(tp);
-+
-+      r8152_mdio_write(tp, MII_BMCR, BMCR_RESET | BMCR_ANENABLE |
-+                                     BMCR_ANRESTART);
-+      for (i = 0; i < 100; i++) {
-+              udelay(100);
-+              if (!(r8152_mdio_read(tp, MII_BMCR) & BMCR_RESET))
-+                      break;
-+      }
-+
-+      /* enable rx aggregation */
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
-+      ocp_data &= ~RX_AGG_DISABLE;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
-+}
-+
-+static void r8153_init(struct r8152 *tp)
-+{
-+      u32 ocp_data;
-+      int i;
-+
-+      r8153_u1u2en(tp, 0);
-+
-+      for (i = 0; i < 500; i++) {
-+              if (ocp_read_word(tp, MCU_TYPE_PLA, PLA_BOOT_CTRL) &
-+                  AUTOLOAD_DONE)
-+                      break;
-+              msleep(20);
-+      }
-+
-+      for (i = 0; i < 500; i++) {
-+              ocp_data = ocp_reg_read(tp, OCP_PHY_STATUS) & PHY_STAT_MASK;
-+              if (ocp_data == PHY_STAT_LAN_ON || ocp_data == PHY_STAT_PWRDN)
-+                      break;
-+              msleep(20);
-+      }
-+
-+      r8153_u2p3en(tp, 0);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_WDT11_CTRL);
-+      ocp_data &= ~TIMER11_EN;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_WDT11_CTRL, ocp_data);
-+
-+      r8153_clear_bp(tp);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);
-+      ocp_data &= ~LED_MODE_MASK;
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);
-+
-+      ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_LPM_CTRL);
-+      ocp_data &= ~LPM_TIMER_MASK;
-+      if (tp->udev->speed == USB_SPEED_SUPER)
-+              ocp_data |= LPM_TIMER_500US;
-+      else
-+              ocp_data |= LPM_TIMER_500MS;
-+      ocp_write_byte(tp, MCU_TYPE_USB, USB_LPM_CTRL, ocp_data);
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_AFE_CTRL2);
-+      ocp_data &= ~SEN_VAL_MASK;
-+      ocp_data |= SEN_VAL_NORMAL | SEL_RXIDLE;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_AFE_CTRL2, ocp_data);
-+
-+      r8153_power_cut_en(tp, 0);
-+      r8153_u1u2en(tp, 1);
-+
-+      r8153_first_init(tp);
-+
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL, ALDPS_SPDWN_RATIO);
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL2, EEE_SPDWN_RATIO);
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL3,
-+                     PKT_AVAIL_SPDWN_EN | SUSPEND_SPDWN_EN |
-+                     U1U2_SPDWN_EN | L1_SPDWN_EN);
-+      ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL4,
-+                     PWRSAVE_SPDWN_EN | RXDV_SPDWN_EN | TX10MIDLE_EN |
-+                     TP100_SPDWN_EN | TP500_SPDWN_EN | TP1000_SPDWN_EN |
-+                     EEE_SPDWN_EN);
-+
-+      r8153_enable_eee(tp);
-+      r8153_enable_aldps(tp);
-+      r8152b_enable_fc(tp);
-+
-+      r8152_mdio_write(tp, MII_BMCR, BMCR_RESET | BMCR_ANENABLE |
-+                                     BMCR_ANRESTART);
-+}
-+
-+static int rtl8152_suspend(struct usb_interface *intf, pm_message_t message)
-+{
-+      struct r8152 *tp = usb_get_intfdata(intf);
-+
-+      netif_device_detach(tp->netdev);
-+
-+      if (netif_running(tp->netdev)) {
-+              clear_bit(WORK_ENABLE, &tp->flags);
-+              usb_kill_urb(tp->intr_urb);
-+              cancel_delayed_work_sync(&tp->schedule);
-+              tasklet_disable(&tp->tl);
-+      }
-+
-+      tp->rtl_ops.down(tp);
-+
-+      return 0;
-+}
-+
-+static int rtl8152_resume(struct usb_interface *intf)
-+{
-+      struct r8152 *tp = usb_get_intfdata(intf);
-+
-+      tp->rtl_ops.init(tp);
-+      netif_device_attach(tp->netdev);
-+      if (netif_running(tp->netdev)) {
-+              rtl8152_set_speed(tp, AUTONEG_ENABLE,
-+                              tp->mii.supports_gmii ? SPEED_1000 : SPEED_100,
-+                              DUPLEX_FULL);
-+              tp->speed = 0;
-+              netif_carrier_off(tp->netdev);
-+              set_bit(WORK_ENABLE, &tp->flags);
-+              usb_submit_urb(tp->intr_urb, GFP_KERNEL);
-+              tasklet_enable(&tp->tl);
-+      }
-+
-+      return 0;
-+}
-+
-+static void rtl8152_get_drvinfo(struct net_device *netdev,
-+                              struct ethtool_drvinfo *info)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+
-+      strncpy(info->driver, MODULENAME, ETHTOOL_BUSINFO_LEN);
-+      strncpy(info->version, DRIVER_VERSION, ETHTOOL_BUSINFO_LEN);
-+      usb_make_path(tp->udev, info->bus_info, sizeof(info->bus_info));
-+}
-+
-+static
-+int rtl8152_get_settings(struct net_device *netdev, struct ethtool_cmd *cmd)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+
-+      if (!tp->mii.mdio_read)
-+              return -EOPNOTSUPP;
-+
-+      return mii_ethtool_gset(&tp->mii, cmd);
-+}
-+
-+static int rtl8152_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-+{
-+      struct r8152 *tp = netdev_priv(dev);
-+
-+      return rtl8152_set_speed(tp, cmd->autoneg, cmd->speed, cmd->duplex);
-+}
-+
-+static struct ethtool_ops ops = {
-+      .get_drvinfo = rtl8152_get_drvinfo,
-+      .get_settings = rtl8152_get_settings,
-+      .set_settings = rtl8152_set_settings,
-+      .get_link = ethtool_op_get_link,
-+};
-+
-+static int rtl8152_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
-+{
-+      struct r8152 *tp = netdev_priv(netdev);
-+      struct mii_ioctl_data *data = if_mii(rq);
-+      int res = 0;
-+
-+      switch (cmd) {
-+      case SIOCGMIIPHY:
-+              data->phy_id = R8152_PHY_ID; /* Internal PHY */
-+              break;
-+
-+      case SIOCGMIIREG:
-+              data->val_out = r8152_mdio_read(tp, data->reg_num);
-+              break;
-+
-+      case SIOCSMIIREG:
-+              if (!capable(CAP_NET_ADMIN)) {
-+                      res = -EPERM;
-+                      break;
-+              }
-+              r8152_mdio_write(tp, data->reg_num, data->val_in);
-+              break;
-+
-+      default:
-+              res = -EOPNOTSUPP;
-+      }
-+
-+      return res;
-+}
-+
-+static const struct net_device_ops rtl8152_netdev_ops = {
-+      .ndo_open               = rtl8152_open,
-+      .ndo_stop               = rtl8152_close,
-+      .ndo_do_ioctl           = rtl8152_ioctl,
-+      .ndo_start_xmit         = rtl8152_start_xmit,
-+      .ndo_tx_timeout         = rtl8152_tx_timeout,
-+      .ndo_set_rx_mode        = rtl8152_set_rx_mode,
-+      .ndo_set_mac_address    = rtl8152_set_mac_address,
-+
-+      .ndo_change_mtu         = eth_change_mtu,
-+      .ndo_validate_addr      = eth_validate_addr,
-+};
-+
-+static void r8152b_get_version(struct r8152 *tp)
-+{
-+      u32     ocp_data;
-+      u16     version;
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_TCR1);
-+      version = (u16)(ocp_data & VERSION_MASK);
-+
-+      switch (version) {
-+      case 0x4c00:
-+              tp->version = RTL_VER_01;
-+              break;
-+      case 0x4c10:
-+              tp->version = RTL_VER_02;
-+              break;
-+      case 0x5c00:
-+              tp->version = RTL_VER_03;
-+              tp->mii.supports_gmii = 1;
-+              break;
-+      case 0x5c10:
-+              tp->version = RTL_VER_04;
-+              tp->mii.supports_gmii = 1;
-+              break;
-+      case 0x5c20:
-+              tp->version = RTL_VER_05;
-+              tp->mii.supports_gmii = 1;
-+              break;
-+      default:
-+              netif_info(tp, probe, tp->netdev,
-+                         "Unknown version 0x%04x\n", version);
-+              break;
-+      }
-+}
-+
-+static void rtl8152_unload(struct r8152 *tp)
-+{
-+      u32     ocp_data;
-+
-+      if (tp->version != RTL_VER_01) {
-+              ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_UPS_CTRL);
-+              ocp_data |= POWER_CUT;
-+              ocp_write_word(tp, MCU_TYPE_USB, USB_UPS_CTRL, ocp_data);
-+      }
-+
-+      ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_PM_CTRL_STATUS);
-+      ocp_data &= ~RESUME_INDICATE;
-+      ocp_write_word(tp, MCU_TYPE_USB, USB_PM_CTRL_STATUS, ocp_data);
-+}
-+
-+static void rtl8153_unload(struct r8152 *tp)
-+{
-+      r8153_power_cut_en(tp, 1);
-+}
-+
-+static int rtl_ops_init(struct r8152 *tp, const struct usb_device_id *id)
-+{
-+      struct rtl_ops *ops = &tp->rtl_ops;
-+      int ret = -ENODEV;
-+
-+      switch (id->idVendor) {
-+      case VENDOR_ID_REALTEK:
-+              switch (id->idProduct) {
-+              case PRODUCT_ID_RTL8152:
-+                      ops->init               = r8152b_init;
-+                      ops->enable             = rtl8152_enable;
-+                      ops->disable            = rtl8152_disable;
-+                      ops->down               = rtl8152_down;
-+                      ops->unload             = rtl8152_unload;
-+                      ret = 0;
-+                      break;
-+              case PRODUCT_ID_RTL8153:
-+                      ops->init               = r8153_init;
-+                      ops->enable             = rtl8153_enable;
-+                      ops->disable            = rtl8152_disable;
-+                      ops->down               = rtl8153_down;
-+                      ops->unload             = rtl8153_unload;
-+                      ret = 0;
-+                      break;
-+              default:
-+                      break;
-+              }
-+              break;
-+
-+      case VENDOR_ID_SAMSUNG:
-+              switch (id->idProduct) {
-+              case PRODUCT_ID_SAMSUNG:
-+                      ops->init               = r8153_init;
-+                      ops->enable             = rtl8153_enable;
-+                      ops->disable            = rtl8152_disable;
-+                      ops->down               = rtl8153_down;
-+                      ops->unload             = rtl8153_unload;
-+                      ret = 0;
-+                      break;
-+              default:
-+                      break;
-+              }
-+              break;
-+
-+      default:
-+              break;
-+      }
-+
-+      if (ret)
-+              netif_err(tp, probe, tp->netdev, "Unknown Device\n");
-+
-+      return ret;
-+}
-+
-+static int rtl8152_probe(struct usb_interface *intf,
-+                       const struct usb_device_id *id)
-+{
-+      struct usb_device *udev = interface_to_usbdev(intf);
-+      struct r8152 *tp;
-+      struct net_device *netdev;
-+      int ret;
-+
-+      if (udev->actconfig->desc.bConfigurationValue != 1) {
-+              usb_driver_set_configuration(udev, 1);
-+              return -ENODEV;
-+      }
-+
-+      usb_reset_device(udev);
-+      netdev = alloc_etherdev(sizeof(struct r8152));
-+      if (!netdev) {
-+              dev_err(&intf->dev, "Out of memory\n");
-+              return -ENOMEM;
-+      }
-+
-+      SET_NETDEV_DEV(netdev, &intf->dev);
-+      tp = netdev_priv(netdev);
-+      tp->msg_enable = 0x7FFF;
-+
-+      tp->udev = udev;
-+      tp->netdev = netdev;
-+      tp->intf = intf;
-+
-+      ret = rtl_ops_init(tp, id);
-+      if (ret)
-+              goto out;
-+
-+      tasklet_init(&tp->tl, bottom_half, (unsigned long)tp);
-+      INIT_DELAYED_WORK(&tp->schedule, rtl_work_func_t);
-+
-+      netdev->netdev_ops = &rtl8152_netdev_ops;
-+      netdev->watchdog_timeo = RTL8152_TX_TIMEOUT;
-+
-+      netdev->features |= NETIF_F_IP_CSUM;
-+      netdev->hw_features = NETIF_F_IP_CSUM;
-+      SET_ETHTOOL_OPS(netdev, &ops);
-+
-+      tp->mii.dev = netdev;
-+      tp->mii.mdio_read = read_mii_word;
-+      tp->mii.mdio_write = write_mii_word;
-+      tp->mii.phy_id_mask = 0x3f;
-+      tp->mii.reg_num_mask = 0x1f;
-+      tp->mii.phy_id = R8152_PHY_ID;
-+      tp->mii.supports_gmii = 0;
-+
-+      r8152b_get_version(tp);
-+      tp->rtl_ops.init(tp);
-+      set_ethernet_addr(tp);
-+
-+      ret = alloc_all_mem(tp);
-+      if (ret)
-+              goto out;
-+
-+      usb_set_intfdata(intf, tp);
-+
-+      ret = register_netdev(netdev);
-+      if (ret != 0) {
-+              netif_err(tp, probe, netdev, "couldn't register the device\n");
-+              goto out1;
-+      }
-+
-+      netif_info(tp, probe, netdev, "%s\n", DRIVER_VERSION);
-+
-+      return 0;
-+
-+out1:
-+      usb_set_intfdata(intf, NULL);
-+out:
-+      free_netdev(netdev);
-+      return ret;
-+}
-+
-+static void rtl8152_disconnect(struct usb_interface *intf)
-+{
-+      struct r8152 *tp = usb_get_intfdata(intf);
-+
-+      usb_set_intfdata(intf, NULL);
-+      if (tp) {
-+              set_bit(RTL8152_UNPLUG, &tp->flags);
-+              tasklet_kill(&tp->tl);
-+              unregister_netdev(tp->netdev);
-+              tp->rtl_ops.unload(tp);
-+              free_all_mem(tp);
-+              free_netdev(tp->netdev);
-+      }
-+}
-+
-+/* table of devices that work with this driver */
-+static struct usb_device_id rtl8152_table[] = {
-+      {USB_DEVICE(VENDOR_ID_REALTEK, PRODUCT_ID_RTL8152)},
-+      {USB_DEVICE(VENDOR_ID_REALTEK, PRODUCT_ID_RTL8153)},
-+      {USB_DEVICE(VENDOR_ID_SAMSUNG, PRODUCT_ID_SAMSUNG)},
-+      {USB_DEVICE(VENDOR_ID_LENOVO, PRODUCT_ID_LENOVO)},
-+      {USB_DEVICE(VENDOR_ID_NVIDIA, PRODUCT_ID_NVIDIA)},
-+      {}
-+};
-+
-+MODULE_DEVICE_TABLE(usb, rtl8152_table);
-+
-+static struct usb_driver rtl8152_driver = {
-+      .name =         MODULENAME,
-+      .id_table =     rtl8152_table,
-+      .probe =        rtl8152_probe,
-+      .disconnect =   rtl8152_disconnect,
-+      .suspend =      rtl8152_suspend,
-+      .resume =       rtl8152_resume,
-+      .reset_resume = rtl8152_resume,
-+};
-+
-+module_usb_driver(rtl8152_driver);
-+
-+MODULE_AUTHOR(DRIVER_AUTHOR);
-+MODULE_DESCRIPTION(DRIVER_DESC);
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/rtl8150.c backports-4.2.6-1/drivers/net/usb/rtl8150.c
---- backports-4.2.6-1.org/drivers/net/usb/rtl8150.c    1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/rtl8150.c        2016-06-28 14:35:18.001973885 +0200
-@@ -0,0 +1,949 @@
-+/*
-+ *  Copyright (c) 2002 Petko Manolov (petkan@users.sourceforge.net)
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ */
-+
-+#include <linux/signal.h>
-+#include <linux/slab.h>
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/mii.h>
-+#include <linux/ethtool.h>
-+#include <linux/usb.h>
-+#include <asm/uaccess.h>
-+
-+/* Version Information */
-+#define DRIVER_VERSION "v0.6.2 (2004/08/27)"
-+#define DRIVER_AUTHOR "Petko Manolov <petkan@users.sourceforge.net>"
-+#define DRIVER_DESC "rtl8150 based usb-ethernet driver"
-+
-+#define       IDR                     0x0120
-+#define       MAR                     0x0126
-+#define       CR                      0x012e
-+#define       TCR                     0x012f
-+#define       RCR                     0x0130
-+#define       TSR                     0x0132
-+#define       RSR                     0x0133
-+#define       CON0                    0x0135
-+#define       CON1                    0x0136
-+#define       MSR                     0x0137
-+#define       PHYADD                  0x0138
-+#define       PHYDAT                  0x0139
-+#define       PHYCNT                  0x013b
-+#define       GPPC                    0x013d
-+#define       BMCR                    0x0140
-+#define       BMSR                    0x0142
-+#define       ANAR                    0x0144
-+#define       ANLP                    0x0146
-+#define       AER                     0x0148
-+#define CSCR                  0x014C  /* This one has the link status */
-+#define CSCR_LINK_STATUS      (1 << 3)
-+
-+#define       IDR_EEPROM              0x1202
-+
-+#define       PHY_READ                0
-+#define       PHY_WRITE               0x20
-+#define       PHY_GO                  0x40
-+
-+#define       MII_TIMEOUT             10
-+#define       INTBUFSIZE              8
-+
-+#define       RTL8150_REQT_READ       0xc0
-+#define       RTL8150_REQT_WRITE      0x40
-+#define       RTL8150_REQ_GET_REGS    0x05
-+#define       RTL8150_REQ_SET_REGS    0x05
-+
-+
-+/* Transmit status register errors */
-+#define TSR_ECOL              (1<<5)
-+#define TSR_LCOL              (1<<4)
-+#define TSR_LOSS_CRS          (1<<3)
-+#define TSR_JBR                       (1<<2)
-+#define TSR_ERRORS            (TSR_ECOL | TSR_LCOL | TSR_LOSS_CRS | TSR_JBR)
-+/* Receive status register errors */
-+#define RSR_CRC                       (1<<2)
-+#define RSR_FAE                       (1<<1)
-+#define RSR_ERRORS            (RSR_CRC | RSR_FAE)
-+
-+/* Media status register definitions */
-+#define MSR_DUPLEX            (1<<4)
-+#define MSR_SPEED             (1<<3)
-+#define MSR_LINK              (1<<2)
-+
-+/* Interrupt pipe data */
-+#define INT_TSR                       0x00
-+#define INT_RSR                       0x01
-+#define INT_MSR                       0x02
-+#define INT_WAKSR             0x03
-+#define INT_TXOK_CNT          0x04
-+#define INT_RXLOST_CNT                0x05
-+#define INT_CRERR_CNT         0x06
-+#define INT_COL_CNT           0x07
-+
-+
-+#define       RTL8150_MTU             1540
-+#define       RTL8150_TX_TIMEOUT      (HZ)
-+#define       RX_SKB_POOL_SIZE        4
-+
-+/* rtl8150 flags */
-+#define       RTL8150_HW_CRC          0
-+#define       RX_REG_SET              1
-+#define       RTL8150_UNPLUG          2
-+#define       RX_URB_FAIL             3
-+
-+/* Define these values to match your device */
-+#define       VENDOR_ID_REALTEK               0x0bda
-+#define       VENDOR_ID_MELCO                 0x0411
-+#define       VENDOR_ID_MICRONET              0x3980
-+#define       VENDOR_ID_LONGSHINE             0x07b8
-+#define       VENDOR_ID_OQO                   0x1557
-+#define       VENDOR_ID_ZYXEL                 0x0586
-+
-+#define PRODUCT_ID_RTL8150            0x8150
-+#define       PRODUCT_ID_LUAKTX               0x0012
-+#define       PRODUCT_ID_LCS8138TX            0x401a
-+#define PRODUCT_ID_SP128AR            0x0003
-+#define       PRODUCT_ID_PRESTIGE             0x401a
-+
-+#undef        EEPROM_WRITE
-+
-+/* table of devices that work with this driver */
-+static struct usb_device_id rtl8150_table[] = {
-+      {USB_DEVICE(VENDOR_ID_REALTEK, PRODUCT_ID_RTL8150)},
-+      {USB_DEVICE(VENDOR_ID_MELCO, PRODUCT_ID_LUAKTX)},
-+      {USB_DEVICE(VENDOR_ID_MICRONET, PRODUCT_ID_SP128AR)},
-+      {USB_DEVICE(VENDOR_ID_LONGSHINE, PRODUCT_ID_LCS8138TX)},
-+      {USB_DEVICE(VENDOR_ID_OQO, PRODUCT_ID_RTL8150)},
-+      {USB_DEVICE(VENDOR_ID_ZYXEL, PRODUCT_ID_PRESTIGE)},
-+      {}
-+};
-+
-+MODULE_DEVICE_TABLE(usb, rtl8150_table);
-+
-+struct rtl8150 {
-+      unsigned long flags;
-+      struct usb_device *udev;
-+      struct tasklet_struct tl;
-+      struct net_device *netdev;
-+      struct urb *rx_urb, *tx_urb, *intr_urb;
-+      struct sk_buff *tx_skb, *rx_skb;
-+      struct sk_buff *rx_skb_pool[RX_SKB_POOL_SIZE];
-+      spinlock_t rx_pool_lock;
-+      struct usb_ctrlrequest dr;
-+      int intr_interval;
-+      u8 *intr_buff;
-+      u8 phy;
-+};
-+
-+typedef struct rtl8150 rtl8150_t;
-+
-+struct async_req {
-+      struct usb_ctrlrequest dr;
-+      u16 rx_creg;
-+};
-+
-+static const char driver_name [] = "rtl8150";
-+
-+/*
-+**
-+**    device related part of the code
-+**
-+*/
-+static int get_registers(rtl8150_t * dev, u16 indx, u16 size, void *data)
-+{
-+      return usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0),
-+                             RTL8150_REQ_GET_REGS, RTL8150_REQT_READ,
-+                             indx, 0, data, size, 500);
-+}
-+
-+static int set_registers(rtl8150_t * dev, u16 indx, u16 size, void *data)
-+{
-+      return usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0),
-+                             RTL8150_REQ_SET_REGS, RTL8150_REQT_WRITE,
-+                             indx, 0, data, size, 500);
-+}
-+
-+static void async_set_reg_cb(struct urb *urb)
-+{
-+      struct async_req *req = (struct async_req *)urb->context;
-+      int status = urb->status;
-+
-+      if (status < 0)
-+              dev_dbg(&urb->dev->dev, "%s failed with %d", __func__, status);
-+      kfree(req);
-+      usb_free_urb(urb);
-+}
-+
-+static int async_set_registers(rtl8150_t *dev, u16 indx, u16 size, u16 reg)
-+{
-+      int res = -ENOMEM;
-+      struct urb *async_urb;
-+      struct async_req *req;
-+
-+      req = kmalloc(sizeof(struct async_req), GFP_ATOMIC);
-+      if (req == NULL)
-+              return res;
-+      async_urb = usb_alloc_urb(0, GFP_ATOMIC);
-+      if (async_urb == NULL) {
-+              kfree(req);
-+              return res;
-+      }
-+      req->rx_creg = cpu_to_le16(reg);
-+      req->dr.bRequestType = RTL8150_REQT_WRITE;
-+      req->dr.bRequest = RTL8150_REQ_SET_REGS;
-+      req->dr.wIndex = 0;
-+      req->dr.wValue = cpu_to_le16(indx);
-+      req->dr.wLength = cpu_to_le16(size);
-+      usb_fill_control_urb(async_urb, dev->udev,
-+                           usb_sndctrlpipe(dev->udev, 0), (void *)&req->dr,
-+                           &req->rx_creg, size, async_set_reg_cb, req);
-+      res = usb_submit_urb(async_urb, GFP_ATOMIC);
-+      if (res) {
-+              if (res == -ENODEV)
-+                      netif_device_detach(dev->netdev);
-+              dev_err(&dev->udev->dev, "%s failed with %d\n", __func__, res);
-+      }
-+      return res;
-+}
-+
-+static int read_mii_word(rtl8150_t * dev, u8 phy, __u8 indx, u16 * reg)
-+{
-+      int i;
-+      u8 data[3], tmp;
-+
-+      data[0] = phy;
-+      data[1] = data[2] = 0;
-+      tmp = indx | PHY_READ | PHY_GO;
-+      i = 0;
-+
-+      set_registers(dev, PHYADD, sizeof(data), data);
-+      set_registers(dev, PHYCNT, 1, &tmp);
-+      do {
-+              get_registers(dev, PHYCNT, 1, data);
-+      } while ((data[0] & PHY_GO) && (i++ < MII_TIMEOUT));
-+
-+      if (i <= MII_TIMEOUT) {
-+              get_registers(dev, PHYDAT, 2, data);
-+              *reg = data[0] | (data[1] << 8);
-+              return 0;
-+      } else
-+              return 1;
-+}
-+
-+static int write_mii_word(rtl8150_t * dev, u8 phy, __u8 indx, u16 reg)
-+{
-+      int i;
-+      u8 data[3], tmp;
-+
-+      data[0] = phy;
-+      data[1] = reg & 0xff;
-+      data[2] = (reg >> 8) & 0xff;
-+      tmp = indx | PHY_WRITE | PHY_GO;
-+      i = 0;
-+
-+      set_registers(dev, PHYADD, sizeof(data), data);
-+      set_registers(dev, PHYCNT, 1, &tmp);
-+      do {
-+              get_registers(dev, PHYCNT, 1, data);
-+      } while ((data[0] & PHY_GO) && (i++ < MII_TIMEOUT));
-+
-+      if (i <= MII_TIMEOUT)
-+              return 0;
-+      else
-+              return 1;
-+}
-+
-+static inline void set_ethernet_addr(rtl8150_t * dev)
-+{
-+      u8 node_id[6];
-+
-+      get_registers(dev, IDR, sizeof(node_id), node_id);
-+      memcpy(dev->netdev->dev_addr, node_id, sizeof(node_id));
-+}
-+
-+static int rtl8150_set_mac_address(struct net_device *netdev, void *p)
-+{
-+      struct sockaddr *addr = p;
-+      rtl8150_t *dev = netdev_priv(netdev);
-+
-+      if (netif_running(netdev))
-+              return -EBUSY;
-+
-+      memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
-+      netdev_dbg(netdev, "Setting MAC address to %pM\n", netdev->dev_addr);
-+      /* Set the IDR registers. */
-+      set_registers(dev, IDR, netdev->addr_len, netdev->dev_addr);
-+#ifdef EEPROM_WRITE
-+      {
-+      int i;
-+      u8 cr;
-+      /* Get the CR contents. */
-+      get_registers(dev, CR, 1, &cr);
-+      /* Set the WEPROM bit (eeprom write enable). */
-+      cr |= 0x20;
-+      set_registers(dev, CR, 1, &cr);
-+      /* Write the MAC address into eeprom. Eeprom writes must be word-sized,
-+         so we need to split them up. */
-+      for (i = 0; i * 2 < netdev->addr_len; i++) {
-+              set_registers(dev, IDR_EEPROM + (i * 2), 2,
-+              netdev->dev_addr + (i * 2));
-+      }
-+      /* Clear the WEPROM bit (preventing accidental eeprom writes). */
-+      cr &= 0xdf;
-+      set_registers(dev, CR, 1, &cr);
-+      }
-+#endif
-+      return 0;
-+}
-+
-+static int rtl8150_reset(rtl8150_t * dev)
-+{
-+      u8 data = 0x10;
-+      int i = HZ;
-+
-+      set_registers(dev, CR, 1, &data);
-+      do {
-+              get_registers(dev, CR, 1, &data);
-+      } while ((data & 0x10) && --i);
-+
-+      return (i > 0) ? 1 : 0;
-+}
-+
-+static int alloc_all_urbs(rtl8150_t * dev)
-+{
-+      dev->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!dev->rx_urb)
-+              return 0;
-+      dev->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!dev->tx_urb) {
-+              usb_free_urb(dev->rx_urb);
-+              return 0;
-+      }
-+      dev->intr_urb = usb_alloc_urb(0, GFP_KERNEL);
-+      if (!dev->intr_urb) {
-+              usb_free_urb(dev->rx_urb);
-+              usb_free_urb(dev->tx_urb);
-+              return 0;
-+      }
-+
-+      return 1;
-+}
-+
-+static void free_all_urbs(rtl8150_t * dev)
-+{
-+      usb_free_urb(dev->rx_urb);
-+      usb_free_urb(dev->tx_urb);
-+      usb_free_urb(dev->intr_urb);
-+}
-+
-+static void unlink_all_urbs(rtl8150_t * dev)
-+{
-+      usb_kill_urb(dev->rx_urb);
-+      usb_kill_urb(dev->tx_urb);
-+      usb_kill_urb(dev->intr_urb);
-+}
-+
-+static inline struct sk_buff *pull_skb(rtl8150_t *dev)
-+{
-+      struct sk_buff *skb;
-+      int i;
-+
-+      for (i = 0; i < RX_SKB_POOL_SIZE; i++) {
-+              if (dev->rx_skb_pool[i]) {
-+                      skb = dev->rx_skb_pool[i];
-+                      dev->rx_skb_pool[i] = NULL;
-+                      return skb;
-+              }
-+      }
-+      return NULL;
-+}
-+
-+static void read_bulk_callback(struct urb *urb)
-+{
-+      rtl8150_t *dev;
-+      unsigned pkt_len, res;
-+      struct sk_buff *skb;
-+      struct net_device *netdev;
-+      u16 rx_stat;
-+      int status = urb->status;
-+      int result;
-+
-+      dev = urb->context;
-+      if (!dev)
-+              return;
-+      if (test_bit(RTL8150_UNPLUG, &dev->flags))
-+              return;
-+      netdev = dev->netdev;
-+      if (!netif_device_present(netdev))
-+              return;
-+
-+      switch (status) {
-+      case 0:
-+              break;
-+      case -ENOENT:
-+              return; /* the urb is in unlink state */
-+      case -ETIME:
-+              if (printk_ratelimit())
-+                      dev_warn(&urb->dev->dev, "may be reset is needed?..\n");
-+              goto goon;
-+      default:
-+              if (printk_ratelimit())
-+                      dev_warn(&urb->dev->dev, "Rx status %d\n", status);
-+              goto goon;
-+      }
-+
-+      if (!dev->rx_skb)
-+              goto resched;
-+      /* protect against short packets (tell me why we got some?!?) */
-+      if (urb->actual_length < 4)
-+              goto goon;
-+
-+      res = urb->actual_length;
-+      rx_stat = le16_to_cpu(*(__le16 *)(urb->transfer_buffer + res - 4));
-+      pkt_len = res - 4;
-+
-+      skb_put(dev->rx_skb, pkt_len);
-+      dev->rx_skb->protocol = eth_type_trans(dev->rx_skb, netdev);
-+      netif_rx(dev->rx_skb);
-+      netdev->stats.rx_packets++;
-+      netdev->stats.rx_bytes += pkt_len;
-+
-+      spin_lock(&dev->rx_pool_lock);
-+      skb = pull_skb(dev);
-+      spin_unlock(&dev->rx_pool_lock);
-+      if (!skb)
-+              goto resched;
-+
-+      dev->rx_skb = skb;
-+goon:
-+      usb_fill_bulk_urb(dev->rx_urb, dev->udev, usb_rcvbulkpipe(dev->udev, 1),
-+                    dev->rx_skb->data, RTL8150_MTU, read_bulk_callback, dev);
-+      result = usb_submit_urb(dev->rx_urb, GFP_ATOMIC);
-+      if (result == -ENODEV)
-+              netif_device_detach(dev->netdev);
-+      else if (result) {
-+              set_bit(RX_URB_FAIL, &dev->flags);
-+              goto resched;
-+      } else {
-+              clear_bit(RX_URB_FAIL, &dev->flags);
-+      }
-+
-+      return;
-+resched:
-+      tasklet_schedule(&dev->tl);
-+}
-+
-+static void write_bulk_callback(struct urb *urb)
-+{
-+      rtl8150_t *dev;
-+      int status = urb->status;
-+
-+      dev = urb->context;
-+      if (!dev)
-+              return;
-+      dev_kfree_skb_irq(dev->tx_skb);
-+      if (!netif_device_present(dev->netdev))
-+              return;
-+      if (status)
-+              dev_info(&urb->dev->dev, "%s: Tx status %d\n",
-+                       dev->netdev->name, status);
-+      dev->netdev->trans_start = jiffies;
-+      netif_wake_queue(dev->netdev);
-+}
-+
-+static void intr_callback(struct urb *urb)
-+{
-+      rtl8150_t *dev;
-+      __u8 *d;
-+      int status = urb->status;
-+      int res;
-+
-+      dev = urb->context;
-+      if (!dev)
-+              return;
-+      switch (status) {
-+      case 0:                 /* success */
-+              break;
-+      case -ECONNRESET:       /* unlink */
-+      case -ENOENT:
-+      case -ESHUTDOWN:
-+              return;
-+      /* -EPIPE:  should clear the halt */
-+      default:
-+              dev_info(&urb->dev->dev, "%s: intr status %d\n",
-+                       dev->netdev->name, status);
-+              goto resubmit;
-+      }
-+
-+      d = urb->transfer_buffer;
-+      if (d[0] & TSR_ERRORS) {
-+              dev->netdev->stats.tx_errors++;
-+              if (d[INT_TSR] & (TSR_ECOL | TSR_JBR))
-+                      dev->netdev->stats.tx_aborted_errors++;
-+              if (d[INT_TSR] & TSR_LCOL)
-+                      dev->netdev->stats.tx_window_errors++;
-+              if (d[INT_TSR] & TSR_LOSS_CRS)
-+                      dev->netdev->stats.tx_carrier_errors++;
-+      }
-+      /* Report link status changes to the network stack */
-+      if ((d[INT_MSR] & MSR_LINK) == 0) {
-+              if (netif_carrier_ok(dev->netdev)) {
-+                      netif_carrier_off(dev->netdev);
-+                      netdev_dbg(dev->netdev, "%s: LINK LOST\n", __func__);
-+              }
-+      } else {
-+              if (!netif_carrier_ok(dev->netdev)) {
-+                      netif_carrier_on(dev->netdev);
-+                      netdev_dbg(dev->netdev, "%s: LINK CAME BACK\n", __func__);
-+              }
-+      }
-+
-+resubmit:
-+      res = usb_submit_urb (urb, GFP_ATOMIC);
-+      if (res == -ENODEV)
-+              netif_device_detach(dev->netdev);
-+      else if (res)
-+              dev_err(&dev->udev->dev,
-+                      "can't resubmit intr, %s-%s/input0, status %d\n",
-+                      dev->udev->bus->bus_name, dev->udev->devpath, res);
-+}
-+
-+static int rtl8150_suspend(struct usb_interface *intf, pm_message_t message)
-+{
-+      rtl8150_t *dev = usb_get_intfdata(intf);
-+
-+      netif_device_detach(dev->netdev);
-+
-+      if (netif_running(dev->netdev)) {
-+              usb_kill_urb(dev->rx_urb);
-+              usb_kill_urb(dev->intr_urb);
-+      }
-+      return 0;
-+}
-+
-+static int rtl8150_resume(struct usb_interface *intf)
-+{
-+      rtl8150_t *dev = usb_get_intfdata(intf);
-+
-+      netif_device_attach(dev->netdev);
-+      if (netif_running(dev->netdev)) {
-+              dev->rx_urb->status = 0;
-+              dev->rx_urb->actual_length = 0;
-+              read_bulk_callback(dev->rx_urb);
-+
-+              dev->intr_urb->status = 0;
-+              dev->intr_urb->actual_length = 0;
-+              intr_callback(dev->intr_urb);
-+      }
-+      return 0;
-+}
-+
-+/*
-+**
-+**    network related part of the code
-+**
-+*/
-+
-+static void fill_skb_pool(rtl8150_t *dev)
-+{
-+      struct sk_buff *skb;
-+      int i;
-+
-+      for (i = 0; i < RX_SKB_POOL_SIZE; i++) {
-+              if (dev->rx_skb_pool[i])
-+                      continue;
-+              skb = dev_alloc_skb(RTL8150_MTU + 2);
-+              if (!skb) {
-+                      return;
-+              }
-+              skb_reserve(skb, 2);
-+              dev->rx_skb_pool[i] = skb;
-+      }
-+}
-+
-+static void free_skb_pool(rtl8150_t *dev)
-+{
-+      int i;
-+
-+      for (i = 0; i < RX_SKB_POOL_SIZE; i++)
-+              if (dev->rx_skb_pool[i])
-+                      dev_kfree_skb(dev->rx_skb_pool[i]);
-+}
-+
-+static void rx_fixup(unsigned long data)
-+{
-+      struct rtl8150 *dev = (struct rtl8150 *)data;
-+      struct sk_buff *skb;
-+      int status;
-+
-+      spin_lock_irq(&dev->rx_pool_lock);
-+      fill_skb_pool(dev);
-+      spin_unlock_irq(&dev->rx_pool_lock);
-+      if (test_bit(RX_URB_FAIL, &dev->flags))
-+              if (dev->rx_skb)
-+                      goto try_again;
-+      spin_lock_irq(&dev->rx_pool_lock);
-+      skb = pull_skb(dev);
-+      spin_unlock_irq(&dev->rx_pool_lock);
-+      if (skb == NULL)
-+              goto tlsched;
-+      dev->rx_skb = skb;
-+      usb_fill_bulk_urb(dev->rx_urb, dev->udev, usb_rcvbulkpipe(dev->udev, 1),
-+                    dev->rx_skb->data, RTL8150_MTU, read_bulk_callback, dev);
-+try_again:
-+      status = usb_submit_urb(dev->rx_urb, GFP_ATOMIC);
-+      if (status == -ENODEV) {
-+              netif_device_detach(dev->netdev);
-+      } else if (status) {
-+              set_bit(RX_URB_FAIL, &dev->flags);
-+              goto tlsched;
-+      } else {
-+              clear_bit(RX_URB_FAIL, &dev->flags);
-+      }
-+
-+      return;
-+tlsched:
-+      tasklet_schedule(&dev->tl);
-+}
-+
-+static int enable_net_traffic(rtl8150_t * dev)
-+{
-+      u8 cr, tcr, rcr, msr;
-+
-+      if (!rtl8150_reset(dev)) {
-+              dev_warn(&dev->udev->dev, "device reset failed\n");
-+      }
-+      /* RCR bit7=1 attach Rx info at the end;  =0 HW CRC (which is broken) */
-+      rcr = 0x9e;
-+      tcr = 0xd8;
-+      cr = 0x0c;
-+      if (!(rcr & 0x80))
-+              set_bit(RTL8150_HW_CRC, &dev->flags);
-+      set_registers(dev, RCR, 1, &rcr);
-+      set_registers(dev, TCR, 1, &tcr);
-+      set_registers(dev, CR, 1, &cr);
-+      get_registers(dev, MSR, 1, &msr);
-+
-+      return 0;
-+}
-+
-+static void disable_net_traffic(rtl8150_t * dev)
-+{
-+      u8 cr;
-+
-+      get_registers(dev, CR, 1, &cr);
-+      cr &= 0xf3;
-+      set_registers(dev, CR, 1, &cr);
-+}
-+
-+static void rtl8150_tx_timeout(struct net_device *netdev)
-+{
-+      rtl8150_t *dev = netdev_priv(netdev);
-+      dev_warn(&netdev->dev, "Tx timeout.\n");
-+      usb_unlink_urb(dev->tx_urb);
-+      netdev->stats.tx_errors++;
-+}
-+
-+static void rtl8150_set_multicast(struct net_device *netdev)
-+{
-+      rtl8150_t *dev = netdev_priv(netdev);
-+      u16 rx_creg = 0x9e;
-+
-+      netif_stop_queue(netdev);
-+      if (netdev->flags & IFF_PROMISC) {
-+              rx_creg |= 0x0001;
-+              dev_info(&netdev->dev, "%s: promiscuous mode\n", netdev->name);
-+      } else if (!netdev_mc_empty(netdev) ||
-+                 (netdev->flags & IFF_ALLMULTI)) {
-+              rx_creg &= 0xfffe;
-+              rx_creg |= 0x0002;
-+              dev_info(&netdev->dev, "%s: allmulti set\n", netdev->name);
-+      } else {
-+              /* ~RX_MULTICAST, ~RX_PROMISCUOUS */
-+              rx_creg &= 0x00fc;
-+      }
-+      async_set_registers(dev, RCR, sizeof(rx_creg), rx_creg);
-+      netif_wake_queue(netdev);
-+}
-+
-+static netdev_tx_t rtl8150_start_xmit(struct sk_buff *skb,
-+                                          struct net_device *netdev)
-+{
-+      rtl8150_t *dev = netdev_priv(netdev);
-+      int count, res;
-+
-+      netif_stop_queue(netdev);
-+      count = (skb->len < 60) ? 60 : skb->len;
-+      count = (count & 0x3f) ? count : count + 1;
-+      dev->tx_skb = skb;
-+      usb_fill_bulk_urb(dev->tx_urb, dev->udev, usb_sndbulkpipe(dev->udev, 2),
-+                    skb->data, count, write_bulk_callback, dev);
-+      if ((res = usb_submit_urb(dev->tx_urb, GFP_ATOMIC))) {
-+              /* Can we get/handle EPIPE here? */
-+              if (res == -ENODEV)
-+                      netif_device_detach(dev->netdev);
-+              else {
-+                      dev_warn(&netdev->dev, "failed tx_urb %d\n", res);
-+                      netdev->stats.tx_errors++;
-+                      netif_start_queue(netdev);
-+              }
-+      } else {
-+              netdev->stats.tx_packets++;
-+              netdev->stats.tx_bytes += skb->len;
-+              netdev->trans_start = jiffies;
-+      }
-+
-+      return NETDEV_TX_OK;
-+}
-+
-+
-+static void set_carrier(struct net_device *netdev)
-+{
-+      rtl8150_t *dev = netdev_priv(netdev);
-+      short tmp;
-+
-+      get_registers(dev, CSCR, 2, &tmp);
-+      if (tmp & CSCR_LINK_STATUS)
-+              netif_carrier_on(netdev);
-+      else
-+              netif_carrier_off(netdev);
-+}
-+
-+static int rtl8150_open(struct net_device *netdev)
-+{
-+      rtl8150_t *dev = netdev_priv(netdev);
-+      int res;
-+
-+      if (dev->rx_skb == NULL)
-+              dev->rx_skb = pull_skb(dev);
-+      if (!dev->rx_skb)
-+              return -ENOMEM;
-+
-+      set_registers(dev, IDR, 6, netdev->dev_addr);
-+
-+      usb_fill_bulk_urb(dev->rx_urb, dev->udev, usb_rcvbulkpipe(dev->udev, 1),
-+                    dev->rx_skb->data, RTL8150_MTU, read_bulk_callback, dev);
-+      if ((res = usb_submit_urb(dev->rx_urb, GFP_KERNEL))) {
-+              if (res == -ENODEV)
-+                      netif_device_detach(dev->netdev);
-+              dev_warn(&netdev->dev, "rx_urb submit failed: %d\n", res);
-+              return res;
-+      }
-+      usb_fill_int_urb(dev->intr_urb, dev->udev, usb_rcvintpipe(dev->udev, 3),
-+                   dev->intr_buff, INTBUFSIZE, intr_callback,
-+                   dev, dev->intr_interval);
-+      if ((res = usb_submit_urb(dev->intr_urb, GFP_KERNEL))) {
-+              if (res == -ENODEV)
-+                      netif_device_detach(dev->netdev);
-+              dev_warn(&netdev->dev, "intr_urb submit failed: %d\n", res);
-+              usb_kill_urb(dev->rx_urb);
-+              return res;
-+      }
-+      enable_net_traffic(dev);
-+      set_carrier(netdev);
-+      netif_start_queue(netdev);
-+
-+      return res;
-+}
-+
-+static int rtl8150_close(struct net_device *netdev)
-+{
-+      rtl8150_t *dev = netdev_priv(netdev);
-+
-+      netif_stop_queue(netdev);
-+      if (!test_bit(RTL8150_UNPLUG, &dev->flags))
-+              disable_net_traffic(dev);
-+      unlink_all_urbs(dev);
-+
-+      return 0;
-+}
-+
-+static void rtl8150_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *info)
-+{
-+      rtl8150_t *dev = netdev_priv(netdev);
-+
-+      strlcpy(info->driver, driver_name, sizeof(info->driver));
-+      strlcpy(info->version, DRIVER_VERSION, sizeof(info->version));
-+      usb_make_path(dev->udev, info->bus_info, sizeof(info->bus_info));
-+}
-+
-+static int rtl8150_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
-+{
-+      rtl8150_t *dev = netdev_priv(netdev);
-+      short lpa, bmcr;
-+
-+      ecmd->supported = (SUPPORTED_10baseT_Half |
-+                        SUPPORTED_10baseT_Full |
-+                        SUPPORTED_100baseT_Half |
-+                        SUPPORTED_100baseT_Full |
-+                        SUPPORTED_Autoneg |
-+                        SUPPORTED_TP | SUPPORTED_MII);
-+      ecmd->port = PORT_TP;
-+      ecmd->transceiver = XCVR_INTERNAL;
-+      ecmd->phy_address = dev->phy;
-+      get_registers(dev, BMCR, 2, &bmcr);
-+      get_registers(dev, ANLP, 2, &lpa);
-+      if (bmcr & BMCR_ANENABLE) {
-+              u32 speed = ((lpa & (LPA_100HALF | LPA_100FULL)) ?
-+                           SPEED_100 : SPEED_10);
-+              ethtool_cmd_speed_set(ecmd, speed);
-+              ecmd->autoneg = AUTONEG_ENABLE;
-+              if (speed == SPEED_100)
-+                      ecmd->duplex = (lpa & LPA_100FULL) ?
-+                          DUPLEX_FULL : DUPLEX_HALF;
-+              else
-+                      ecmd->duplex = (lpa & LPA_10FULL) ?
-+                          DUPLEX_FULL : DUPLEX_HALF;
-+      } else {
-+              ecmd->autoneg = AUTONEG_DISABLE;
-+              ethtool_cmd_speed_set(ecmd, ((bmcr & BMCR_SPEED100) ?
-+                                           SPEED_100 : SPEED_10));
-+              ecmd->duplex = (bmcr & BMCR_FULLDPLX) ?
-+                  DUPLEX_FULL : DUPLEX_HALF;
-+      }
-+      return 0;
-+}
-+
-+static const struct ethtool_ops ops = {
-+      .get_drvinfo = rtl8150_get_drvinfo,
-+      .get_settings = rtl8150_get_settings,
-+      .get_link = ethtool_op_get_link
-+};
-+
-+static int rtl8150_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
-+{
-+      rtl8150_t *dev = netdev_priv(netdev);
-+      u16 *data = (u16 *) & rq->ifr_ifru;
-+      int res = 0;
-+
-+      switch (cmd) {
-+      case SIOCDEVPRIVATE:
-+              data[0] = dev->phy;
-+      case SIOCDEVPRIVATE + 1:
-+              read_mii_word(dev, dev->phy, (data[1] & 0x1f), &data[3]);
-+              break;
-+      case SIOCDEVPRIVATE + 2:
-+              if (!capable(CAP_NET_ADMIN))
-+                      return -EPERM;
-+              write_mii_word(dev, dev->phy, (data[1] & 0x1f), data[2]);
-+              break;
-+      default:
-+              res = -EOPNOTSUPP;
-+      }
-+
-+      return res;
-+}
-+
-+static const struct net_device_ops rtl8150_netdev_ops = {
-+      .ndo_open               = rtl8150_open,
-+      .ndo_stop               = rtl8150_close,
-+      .ndo_do_ioctl           = rtl8150_ioctl,
-+      .ndo_start_xmit         = rtl8150_start_xmit,
-+      .ndo_tx_timeout         = rtl8150_tx_timeout,
-+      .ndo_set_rx_mode        = rtl8150_set_multicast,
-+      .ndo_set_mac_address    = rtl8150_set_mac_address,
-+
-+      .ndo_change_mtu         = eth_change_mtu,
-+      .ndo_validate_addr      = eth_validate_addr,
-+};
-+
-+static int rtl8150_probe(struct usb_interface *intf,
-+                       const struct usb_device_id *id)
-+{
-+      struct usb_device *udev = interface_to_usbdev(intf);
-+      rtl8150_t *dev;
-+      struct net_device *netdev;
-+
-+      netdev = alloc_etherdev(sizeof(rtl8150_t));
-+      if (!netdev)
-+              return -ENOMEM;
-+
-+      dev = netdev_priv(netdev);
-+
-+      dev->intr_buff = kmalloc(INTBUFSIZE, GFP_KERNEL);
-+      if (!dev->intr_buff) {
-+              free_netdev(netdev);
-+              return -ENOMEM;
-+      }
-+
-+      tasklet_init(&dev->tl, rx_fixup, (unsigned long)dev);
-+      spin_lock_init(&dev->rx_pool_lock);
-+
-+      dev->udev = udev;
-+      dev->netdev = netdev;
-+      netdev->netdev_ops = &rtl8150_netdev_ops;
-+      netdev->watchdog_timeo = RTL8150_TX_TIMEOUT;
-+      netdev->ethtool_ops = &ops;
-+      dev->intr_interval = 100;       /* 100ms */
-+
-+      if (!alloc_all_urbs(dev)) {
-+              dev_err(&intf->dev, "out of memory\n");
-+              goto out;
-+      }
-+      if (!rtl8150_reset(dev)) {
-+              dev_err(&intf->dev, "couldn't reset the device\n");
-+              goto out1;
-+      }
-+      fill_skb_pool(dev);
-+      set_ethernet_addr(dev);
-+
-+      usb_set_intfdata(intf, dev);
-+      SET_NETDEV_DEV(netdev, &intf->dev);
-+      if (register_netdev(netdev) != 0) {
-+              dev_err(&intf->dev, "couldn't register the device\n");
-+              goto out2;
-+      }
-+
-+      dev_info(&intf->dev, "%s: rtl8150 is detected\n", netdev->name);
-+
-+      return 0;
-+
-+out2:
-+      usb_set_intfdata(intf, NULL);
-+      free_skb_pool(dev);
-+out1:
-+      free_all_urbs(dev);
-+out:
-+      kfree(dev->intr_buff);
-+      free_netdev(netdev);
-+      return -EIO;
-+}
-+
-+static void rtl8150_disconnect(struct usb_interface *intf)
-+{
-+      rtl8150_t *dev = usb_get_intfdata(intf);
-+
-+      usb_set_intfdata(intf, NULL);
-+      if (dev) {
-+              set_bit(RTL8150_UNPLUG, &dev->flags);
-+              tasklet_kill(&dev->tl);
-+              unregister_netdev(dev->netdev);
-+              unlink_all_urbs(dev);
-+              free_all_urbs(dev);
-+              free_skb_pool(dev);
-+              if (dev->rx_skb)
-+                      dev_kfree_skb(dev->rx_skb);
-+              kfree(dev->intr_buff);
-+              free_netdev(dev->netdev);
-+      }
-+}
-+
-+static struct usb_driver rtl8150_driver = {
-+      .name           = driver_name,
-+      .probe          = rtl8150_probe,
-+      .disconnect     = rtl8150_disconnect,
-+      .id_table       = rtl8150_table,
-+      .suspend        = rtl8150_suspend,
-+      .resume         = rtl8150_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(rtl8150_driver);
-+
-+MODULE_AUTHOR(DRIVER_AUTHOR);
-+MODULE_DESCRIPTION(DRIVER_DESC);
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/smsc75xx.c backports-4.2.6-1/drivers/net/usb/smsc75xx.c
---- backports-4.2.6-1.org/drivers/net/usb/smsc75xx.c   1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/smsc75xx.c       2016-06-28 14:35:18.008640551 +0200
-@@ -0,0 +1,2286 @@
-+ /***************************************************************************
-+ *
-+ * Copyright (C) 2007-2010 SMSC
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ *
-+ *****************************************************************************/
-+
-+#include <linux/module.h>
-+#include <linux/kmod.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/bitrev.h>
-+#include <linux/crc16.h>
-+#include <linux/crc32.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/slab.h>
-+#include "smsc75xx.h"
-+
-+#define SMSC_CHIPNAME                 "smsc75xx"
-+#define SMSC_DRIVER_VERSION           "1.0.0"
-+#define HS_USB_PKT_SIZE                       (512)
-+#define FS_USB_PKT_SIZE                       (64)
-+#define DEFAULT_HS_BURST_CAP_SIZE     (16 * 1024 + 5 * HS_USB_PKT_SIZE)
-+#define DEFAULT_FS_BURST_CAP_SIZE     (6 * 1024 + 33 * FS_USB_PKT_SIZE)
-+#define DEFAULT_BULK_IN_DELAY         (0x00002000)
-+#define MAX_SINGLE_PACKET_SIZE                (9000)
-+#define LAN75XX_EEPROM_MAGIC          (0x7500)
-+#define EEPROM_MAC_OFFSET             (0x01)
-+#define DEFAULT_TX_CSUM_ENABLE                (true)
-+#define DEFAULT_RX_CSUM_ENABLE                (true)
-+#define SMSC75XX_INTERNAL_PHY_ID      (1)
-+#define SMSC75XX_TX_OVERHEAD          (8)
-+#define MAX_RX_FIFO_SIZE              (20 * 1024)
-+#define MAX_TX_FIFO_SIZE              (12 * 1024)
-+#define USB_VENDOR_ID_SMSC            (0x0424)
-+#define USB_PRODUCT_ID_LAN7500                (0x7500)
-+#define USB_PRODUCT_ID_LAN7505                (0x7505)
-+#define RXW_PADDING                   2
-+#define SUPPORTED_WAKE                        (WAKE_PHY | WAKE_UCAST | WAKE_BCAST | \
-+                                       WAKE_MCAST | WAKE_ARP | WAKE_MAGIC)
-+
-+#define SUSPEND_SUSPEND0              (0x01)
-+#define SUSPEND_SUSPEND1              (0x02)
-+#define SUSPEND_SUSPEND2              (0x04)
-+#define SUSPEND_SUSPEND3              (0x08)
-+#define SUSPEND_ALLMODES              (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
-+                                       SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3)
-+
-+struct smsc75xx_priv {
-+      struct usbnet *dev;
-+      u32 rfe_ctl;
-+      u32 wolopts;
-+      u32 multicast_hash_table[DP_SEL_VHF_HASH_LEN];
-+      struct mutex dataport_mutex;
-+      spinlock_t rfe_ctl_lock;
-+      struct work_struct set_multicast;
-+      u8 suspend_flags;
-+};
-+
-+struct usb_context {
-+      struct usb_ctrlrequest req;
-+      struct usbnet *dev;
-+};
-+
-+static bool turbo_mode = true;
-+module_param(turbo_mode, bool, 0644);
-+MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
-+
-+static int __must_check __smsc75xx_read_reg(struct usbnet *dev, u32 index,
-+                                          u32 *data, int in_pm)
-+{
-+      u32 buf;
-+      int ret;
-+      int (*fn)(struct usbnet *, u8, u8, u16, u16, void *, u16);
-+
-+      BUG_ON(!dev);
-+
-+      if (!in_pm)
-+              fn = usbnet_read_cmd;
-+      else
-+              fn = usbnet_read_cmd_nopm;
-+
-+      ret = fn(dev, USB_VENDOR_REQUEST_READ_REGISTER, USB_DIR_IN
-+               | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+               0, index, &buf, 4);
-+      if (unlikely(ret < 0))
-+              netdev_warn(dev->net, "Failed to read reg index 0x%08x: %d\n",
-+                          index, ret);
-+
-+      le32_to_cpus(&buf);
-+      *data = buf;
-+
-+      return ret;
-+}
-+
-+static int __must_check __smsc75xx_write_reg(struct usbnet *dev, u32 index,
-+                                           u32 data, int in_pm)
-+{
-+      u32 buf;
-+      int ret;
-+      int (*fn)(struct usbnet *, u8, u8, u16, u16, const void *, u16);
-+
-+      BUG_ON(!dev);
-+
-+      if (!in_pm)
-+              fn = usbnet_write_cmd;
-+      else
-+              fn = usbnet_write_cmd_nopm;
-+
-+      buf = data;
-+      cpu_to_le32s(&buf);
-+
-+      ret = fn(dev, USB_VENDOR_REQUEST_WRITE_REGISTER, USB_DIR_OUT
-+               | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+               0, index, &buf, 4);
-+      if (unlikely(ret < 0))
-+              netdev_warn(dev->net, "Failed to write reg index 0x%08x: %d\n",
-+                          index, ret);
-+
-+      return ret;
-+}
-+
-+static int __must_check smsc75xx_read_reg_nopm(struct usbnet *dev, u32 index,
-+                                             u32 *data)
-+{
-+      return __smsc75xx_read_reg(dev, index, data, 1);
-+}
-+
-+static int __must_check smsc75xx_write_reg_nopm(struct usbnet *dev, u32 index,
-+                                              u32 data)
-+{
-+      return __smsc75xx_write_reg(dev, index, data, 1);
-+}
-+
-+static int __must_check smsc75xx_read_reg(struct usbnet *dev, u32 index,
-+                                        u32 *data)
-+{
-+      return __smsc75xx_read_reg(dev, index, data, 0);
-+}
-+
-+static int __must_check smsc75xx_write_reg(struct usbnet *dev, u32 index,
-+                                         u32 data)
-+{
-+      return __smsc75xx_write_reg(dev, index, data, 0);
-+}
-+
-+/* Loop until the read is completed with timeout
-+ * called with phy_mutex held */
-+static __must_check int __smsc75xx_phy_wait_not_busy(struct usbnet *dev,
-+                                                   int in_pm)
-+{
-+      unsigned long start_time = jiffies;
-+      u32 val;
-+      int ret;
-+
-+      do {
-+              ret = __smsc75xx_read_reg(dev, MII_ACCESS, &val, in_pm);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading MII_ACCESS\n");
-+                      return ret;
-+              }
-+
-+              if (!(val & MII_ACCESS_BUSY))
-+                      return 0;
-+      } while (!time_after(jiffies, start_time + HZ));
-+
-+      return -EIO;
-+}
-+
-+static int __smsc75xx_mdio_read(struct net_device *netdev, int phy_id, int idx,
-+                              int in_pm)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      u32 val, addr;
-+      int ret;
-+
-+      mutex_lock(&dev->phy_mutex);
-+
-+      /* confirm MII not busy */
-+      ret = __smsc75xx_phy_wait_not_busy(dev, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "MII is busy in smsc75xx_mdio_read\n");
-+              goto done;
-+      }
-+
-+      /* set the address, index & direction (read from PHY) */
-+      phy_id &= dev->mii.phy_id_mask;
-+      idx &= dev->mii.reg_num_mask;
-+      addr = ((phy_id << MII_ACCESS_PHY_ADDR_SHIFT) & MII_ACCESS_PHY_ADDR)
-+              | ((idx << MII_ACCESS_REG_ADDR_SHIFT) & MII_ACCESS_REG_ADDR)
-+              | MII_ACCESS_READ | MII_ACCESS_BUSY;
-+      ret = __smsc75xx_write_reg(dev, MII_ACCESS, addr, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing MII_ACCESS\n");
-+              goto done;
-+      }
-+
-+      ret = __smsc75xx_phy_wait_not_busy(dev, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Timed out reading MII reg %02X\n", idx);
-+              goto done;
-+      }
-+
-+      ret = __smsc75xx_read_reg(dev, MII_DATA, &val, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading MII_DATA\n");
-+              goto done;
-+      }
-+
-+      ret = (u16)(val & 0xFFFF);
-+
-+done:
-+      mutex_unlock(&dev->phy_mutex);
-+      return ret;
-+}
-+
-+static void __smsc75xx_mdio_write(struct net_device *netdev, int phy_id,
-+                                int idx, int regval, int in_pm)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      u32 val, addr;
-+      int ret;
-+
-+      mutex_lock(&dev->phy_mutex);
-+
-+      /* confirm MII not busy */
-+      ret = __smsc75xx_phy_wait_not_busy(dev, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "MII is busy in smsc75xx_mdio_write\n");
-+              goto done;
-+      }
-+
-+      val = regval;
-+      ret = __smsc75xx_write_reg(dev, MII_DATA, val, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing MII_DATA\n");
-+              goto done;
-+      }
-+
-+      /* set the address, index & direction (write to PHY) */
-+      phy_id &= dev->mii.phy_id_mask;
-+      idx &= dev->mii.reg_num_mask;
-+      addr = ((phy_id << MII_ACCESS_PHY_ADDR_SHIFT) & MII_ACCESS_PHY_ADDR)
-+              | ((idx << MII_ACCESS_REG_ADDR_SHIFT) & MII_ACCESS_REG_ADDR)
-+              | MII_ACCESS_WRITE | MII_ACCESS_BUSY;
-+      ret = __smsc75xx_write_reg(dev, MII_ACCESS, addr, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing MII_ACCESS\n");
-+              goto done;
-+      }
-+
-+      ret = __smsc75xx_phy_wait_not_busy(dev, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Timed out writing MII reg %02X\n", idx);
-+              goto done;
-+      }
-+
-+done:
-+      mutex_unlock(&dev->phy_mutex);
-+}
-+
-+static int smsc75xx_mdio_read_nopm(struct net_device *netdev, int phy_id,
-+                                 int idx)
-+{
-+      return __smsc75xx_mdio_read(netdev, phy_id, idx, 1);
-+}
-+
-+static void smsc75xx_mdio_write_nopm(struct net_device *netdev, int phy_id,
-+                                   int idx, int regval)
-+{
-+      __smsc75xx_mdio_write(netdev, phy_id, idx, regval, 1);
-+}
-+
-+static int smsc75xx_mdio_read(struct net_device *netdev, int phy_id, int idx)
-+{
-+      return __smsc75xx_mdio_read(netdev, phy_id, idx, 0);
-+}
-+
-+static void smsc75xx_mdio_write(struct net_device *netdev, int phy_id, int idx,
-+                              int regval)
-+{
-+      __smsc75xx_mdio_write(netdev, phy_id, idx, regval, 0);
-+}
-+
-+static int smsc75xx_wait_eeprom(struct usbnet *dev)
-+{
-+      unsigned long start_time = jiffies;
-+      u32 val;
-+      int ret;
-+
-+      do {
-+              ret = smsc75xx_read_reg(dev, E2P_CMD, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading E2P_CMD\n");
-+                      return ret;
-+              }
-+
-+              if (!(val & E2P_CMD_BUSY) || (val & E2P_CMD_TIMEOUT))
-+                      break;
-+              udelay(40);
-+      } while (!time_after(jiffies, start_time + HZ));
-+
-+      if (val & (E2P_CMD_TIMEOUT | E2P_CMD_BUSY)) {
-+              netdev_warn(dev->net, "EEPROM read operation timeout\n");
-+              return -EIO;
-+      }
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_eeprom_confirm_not_busy(struct usbnet *dev)
-+{
-+      unsigned long start_time = jiffies;
-+      u32 val;
-+      int ret;
-+
-+      do {
-+              ret = smsc75xx_read_reg(dev, E2P_CMD, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading E2P_CMD\n");
-+                      return ret;
-+              }
-+
-+              if (!(val & E2P_CMD_BUSY))
-+                      return 0;
-+
-+              udelay(40);
-+      } while (!time_after(jiffies, start_time + HZ));
-+
-+      netdev_warn(dev->net, "EEPROM is busy\n");
-+      return -EIO;
-+}
-+
-+static int smsc75xx_read_eeprom(struct usbnet *dev, u32 offset, u32 length,
-+                              u8 *data)
-+{
-+      u32 val;
-+      int i, ret;
-+
-+      BUG_ON(!dev);
-+      BUG_ON(!data);
-+
-+      ret = smsc75xx_eeprom_confirm_not_busy(dev);
-+      if (ret)
-+              return ret;
-+
-+      for (i = 0; i < length; i++) {
-+              val = E2P_CMD_BUSY | E2P_CMD_READ | (offset & E2P_CMD_ADDR);
-+              ret = smsc75xx_write_reg(dev, E2P_CMD, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing E2P_CMD\n");
-+                      return ret;
-+              }
-+
-+              ret = smsc75xx_wait_eeprom(dev);
-+              if (ret < 0)
-+                      return ret;
-+
-+              ret = smsc75xx_read_reg(dev, E2P_DATA, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading E2P_DATA\n");
-+                      return ret;
-+              }
-+
-+              data[i] = val & 0xFF;
-+              offset++;
-+      }
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_write_eeprom(struct usbnet *dev, u32 offset, u32 length,
-+                               u8 *data)
-+{
-+      u32 val;
-+      int i, ret;
-+
-+      BUG_ON(!dev);
-+      BUG_ON(!data);
-+
-+      ret = smsc75xx_eeprom_confirm_not_busy(dev);
-+      if (ret)
-+              return ret;
-+
-+      /* Issue write/erase enable command */
-+      val = E2P_CMD_BUSY | E2P_CMD_EWEN;
-+      ret = smsc75xx_write_reg(dev, E2P_CMD, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing E2P_CMD\n");
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_wait_eeprom(dev);
-+      if (ret < 0)
-+              return ret;
-+
-+      for (i = 0; i < length; i++) {
-+
-+              /* Fill data register */
-+              val = data[i];
-+              ret = smsc75xx_write_reg(dev, E2P_DATA, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing E2P_DATA\n");
-+                      return ret;
-+              }
-+
-+              /* Send "write" command */
-+              val = E2P_CMD_BUSY | E2P_CMD_WRITE | (offset & E2P_CMD_ADDR);
-+              ret = smsc75xx_write_reg(dev, E2P_CMD, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing E2P_CMD\n");
-+                      return ret;
-+              }
-+
-+              ret = smsc75xx_wait_eeprom(dev);
-+              if (ret < 0)
-+                      return ret;
-+
-+              offset++;
-+      }
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_dataport_wait_not_busy(struct usbnet *dev)
-+{
-+      int i, ret;
-+
-+      for (i = 0; i < 100; i++) {
-+              u32 dp_sel;
-+              ret = smsc75xx_read_reg(dev, DP_SEL, &dp_sel);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading DP_SEL\n");
-+                      return ret;
-+              }
-+
-+              if (dp_sel & DP_SEL_DPRDY)
-+                      return 0;
-+
-+              udelay(40);
-+      }
-+
-+      netdev_warn(dev->net, "smsc75xx_dataport_wait_not_busy timed out\n");
-+
-+      return -EIO;
-+}
-+
-+static int smsc75xx_dataport_write(struct usbnet *dev, u32 ram_select, u32 addr,
-+                                 u32 length, u32 *buf)
-+{
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      u32 dp_sel;
-+      int i, ret;
-+
-+      mutex_lock(&pdata->dataport_mutex);
-+
-+      ret = smsc75xx_dataport_wait_not_busy(dev);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "smsc75xx_dataport_write busy on entry\n");
-+              goto done;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, DP_SEL, &dp_sel);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading DP_SEL\n");
-+              goto done;
-+      }
-+
-+      dp_sel &= ~DP_SEL_RSEL;
-+      dp_sel |= ram_select;
-+      ret = smsc75xx_write_reg(dev, DP_SEL, dp_sel);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing DP_SEL\n");
-+              goto done;
-+      }
-+
-+      for (i = 0; i < length; i++) {
-+              ret = smsc75xx_write_reg(dev, DP_ADDR, addr + i);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing DP_ADDR\n");
-+                      goto done;
-+              }
-+
-+              ret = smsc75xx_write_reg(dev, DP_DATA, buf[i]);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing DP_DATA\n");
-+                      goto done;
-+              }
-+
-+              ret = smsc75xx_write_reg(dev, DP_CMD, DP_CMD_WRITE);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing DP_CMD\n");
-+                      goto done;
-+              }
-+
-+              ret = smsc75xx_dataport_wait_not_busy(dev);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "smsc75xx_dataport_write timeout\n");
-+                      goto done;
-+              }
-+      }
-+
-+done:
-+      mutex_unlock(&pdata->dataport_mutex);
-+      return ret;
-+}
-+
-+/* returns hash bit number for given MAC address */
-+static u32 smsc75xx_hash(char addr[ETH_ALEN])
-+{
-+      return (ether_crc(ETH_ALEN, addr) >> 23) & 0x1ff;
-+}
-+
-+static void smsc75xx_deferred_multicast_write(struct work_struct *param)
-+{
-+      struct smsc75xx_priv *pdata =
-+              container_of(param, struct smsc75xx_priv, set_multicast);
-+      struct usbnet *dev = pdata->dev;
-+      int ret;
-+
-+      netif_dbg(dev, drv, dev->net, "deferred multicast write 0x%08x\n",
-+                pdata->rfe_ctl);
-+
-+      smsc75xx_dataport_write(dev, DP_SEL_VHF, DP_SEL_VHF_VLAN_LEN,
-+              DP_SEL_VHF_HASH_LEN, pdata->multicast_hash_table);
-+
-+      ret = smsc75xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "Error writing RFE_CRL\n");
-+}
-+
-+static void smsc75xx_set_multicast(struct net_device *netdev)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      unsigned long flags;
-+      int i;
-+
-+      spin_lock_irqsave(&pdata->rfe_ctl_lock, flags);
-+
-+      pdata->rfe_ctl &=
-+              ~(RFE_CTL_AU | RFE_CTL_AM | RFE_CTL_DPF | RFE_CTL_MHF);
-+      pdata->rfe_ctl |= RFE_CTL_AB;
-+
-+      for (i = 0; i < DP_SEL_VHF_HASH_LEN; i++)
-+              pdata->multicast_hash_table[i] = 0;
-+
-+      if (dev->net->flags & IFF_PROMISC) {
-+              netif_dbg(dev, drv, dev->net, "promiscuous mode enabled\n");
-+              pdata->rfe_ctl |= RFE_CTL_AM | RFE_CTL_AU;
-+      } else if (dev->net->flags & IFF_ALLMULTI) {
-+              netif_dbg(dev, drv, dev->net, "receive all multicast enabled\n");
-+              pdata->rfe_ctl |= RFE_CTL_AM | RFE_CTL_DPF;
-+      } else if (!netdev_mc_empty(dev->net)) {
-+              struct netdev_hw_addr *ha;
-+
-+              netif_dbg(dev, drv, dev->net, "receive multicast hash filter\n");
-+
-+              pdata->rfe_ctl |= RFE_CTL_MHF | RFE_CTL_DPF;
-+
-+              netdev_for_each_mc_addr(ha, netdev) {
-+                      u32 bitnum = smsc75xx_hash(ha->addr);
-+                      pdata->multicast_hash_table[bitnum / 32] |=
-+                              (1 << (bitnum % 32));
-+              }
-+      } else {
-+              netif_dbg(dev, drv, dev->net, "receive own packets only\n");
-+              pdata->rfe_ctl |= RFE_CTL_DPF;
-+      }
-+
-+      spin_unlock_irqrestore(&pdata->rfe_ctl_lock, flags);
-+
-+      /* defer register writes to a sleepable context */
-+      schedule_work(&pdata->set_multicast);
-+}
-+
-+static int smsc75xx_update_flowcontrol(struct usbnet *dev, u8 duplex,
-+                                          u16 lcladv, u16 rmtadv)
-+{
-+      u32 flow = 0, fct_flow = 0;
-+      int ret;
-+
-+      if (duplex == DUPLEX_FULL) {
-+              u8 cap = mii_resolve_flowctrl_fdx(lcladv, rmtadv);
-+
-+              if (cap & FLOW_CTRL_TX) {
-+                      flow = (FLOW_TX_FCEN | 0xFFFF);
-+                      /* set fct_flow thresholds to 20% and 80% */
-+                      fct_flow = (8 << 8) | 32;
-+              }
-+
-+              if (cap & FLOW_CTRL_RX)
-+                      flow |= FLOW_RX_FCEN;
-+
-+              netif_dbg(dev, link, dev->net, "rx pause %s, tx pause %s\n",
-+                        (cap & FLOW_CTRL_RX ? "enabled" : "disabled"),
-+                        (cap & FLOW_CTRL_TX ? "enabled" : "disabled"));
-+      } else {
-+              netif_dbg(dev, link, dev->net, "half duplex\n");
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, FLOW, flow);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing FLOW\n");
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, FCT_FLOW, fct_flow);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing FCT_FLOW\n");
-+              return ret;
-+      }
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_link_reset(struct usbnet *dev)
-+{
-+      struct mii_if_info *mii = &dev->mii;
-+      struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
-+      u16 lcladv, rmtadv;
-+      int ret;
-+
-+      /* write to clear phy interrupt status */
-+      smsc75xx_mdio_write(dev->net, mii->phy_id, PHY_INT_SRC,
-+              PHY_INT_SRC_CLEAR_ALL);
-+
-+      ret = smsc75xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing INT_STS\n");
-+              return ret;
-+      }
-+
-+      mii_check_media(mii, 1, 1);
-+      mii_ethtool_gset(&dev->mii, &ecmd);
-+      lcladv = smsc75xx_mdio_read(dev->net, mii->phy_id, MII_ADVERTISE);
-+      rmtadv = smsc75xx_mdio_read(dev->net, mii->phy_id, MII_LPA);
-+
-+      netif_dbg(dev, link, dev->net, "speed: %u duplex: %d lcladv: %04x rmtadv: %04x\n",
-+                ethtool_cmd_speed(&ecmd), ecmd.duplex, lcladv, rmtadv);
-+
-+      return smsc75xx_update_flowcontrol(dev, ecmd.duplex, lcladv, rmtadv);
-+}
-+
-+static void smsc75xx_status(struct usbnet *dev, struct urb *urb)
-+{
-+      u32 intdata;
-+
-+      if (urb->actual_length != 4) {
-+              netdev_warn(dev->net, "unexpected urb length %d\n",
-+                          urb->actual_length);
-+              return;
-+      }
-+
-+      memcpy(&intdata, urb->transfer_buffer, 4);
-+      le32_to_cpus(&intdata);
-+
-+      netif_dbg(dev, link, dev->net, "intdata: 0x%08X\n", intdata);
-+
-+      if (intdata & INT_ENP_PHY_INT)
-+              usbnet_defer_kevent(dev, EVENT_LINK_RESET);
-+      else
-+              netdev_warn(dev->net, "unexpected interrupt, intdata=0x%08X\n",
-+                          intdata);
-+}
-+
-+static int smsc75xx_ethtool_get_eeprom_len(struct net_device *net)
-+{
-+      return MAX_EEPROM_SIZE;
-+}
-+
-+static int smsc75xx_ethtool_get_eeprom(struct net_device *netdev,
-+                                     struct ethtool_eeprom *ee, u8 *data)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+
-+      ee->magic = LAN75XX_EEPROM_MAGIC;
-+
-+      return smsc75xx_read_eeprom(dev, ee->offset, ee->len, data);
-+}
-+
-+static int smsc75xx_ethtool_set_eeprom(struct net_device *netdev,
-+                                     struct ethtool_eeprom *ee, u8 *data)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+
-+      if (ee->magic != LAN75XX_EEPROM_MAGIC) {
-+              netdev_warn(dev->net, "EEPROM: magic value mismatch: 0x%x\n",
-+                          ee->magic);
-+              return -EINVAL;
-+      }
-+
-+      return smsc75xx_write_eeprom(dev, ee->offset, ee->len, data);
-+}
-+
-+static void smsc75xx_ethtool_get_wol(struct net_device *net,
-+                                   struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+
-+      wolinfo->supported = SUPPORTED_WAKE;
-+      wolinfo->wolopts = pdata->wolopts;
-+}
-+
-+static int smsc75xx_ethtool_set_wol(struct net_device *net,
-+                                  struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      int ret;
-+
-+      pdata->wolopts = wolinfo->wolopts & SUPPORTED_WAKE;
-+
-+      ret = device_set_wakeup_enable(&dev->udev->dev, pdata->wolopts);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "device_set_wakeup_enable error %d\n", ret);
-+
-+      return ret;
-+}
-+
-+static const struct ethtool_ops smsc75xx_ethtool_ops = {
-+      .get_link       = usbnet_get_link,
-+      .nway_reset     = usbnet_nway_reset,
-+      .get_drvinfo    = usbnet_get_drvinfo,
-+      .get_msglevel   = usbnet_get_msglevel,
-+      .set_msglevel   = usbnet_set_msglevel,
-+      .get_settings   = usbnet_get_settings,
-+      .set_settings   = usbnet_set_settings,
-+      .get_eeprom_len = smsc75xx_ethtool_get_eeprom_len,
-+      .get_eeprom     = smsc75xx_ethtool_get_eeprom,
-+      .set_eeprom     = smsc75xx_ethtool_set_eeprom,
-+      .get_wol        = smsc75xx_ethtool_get_wol,
-+      .set_wol        = smsc75xx_ethtool_set_wol,
-+};
-+
-+static int smsc75xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+
-+      if (!netif_running(netdev))
-+              return -EINVAL;
-+
-+      return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
-+}
-+
-+static void smsc75xx_init_mac_address(struct usbnet *dev)
-+{
-+      /* try reading mac address from EEPROM */
-+      if (smsc75xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
-+                      dev->net->dev_addr) == 0) {
-+              if (is_valid_ether_addr(dev->net->dev_addr)) {
-+                      /* eeprom values are valid so use them */
-+                      netif_dbg(dev, ifup, dev->net,
-+                                "MAC address read from EEPROM\n");
-+                      return;
-+              }
-+      }
-+
-+      /* no eeprom, or eeprom values are invalid. generate random MAC */
-+      eth_hw_addr_random(dev->net);
-+      netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n");
-+}
-+
-+static int smsc75xx_set_mac_address(struct usbnet *dev)
-+{
-+      u32 addr_lo = dev->net->dev_addr[0] | dev->net->dev_addr[1] << 8 |
-+              dev->net->dev_addr[2] << 16 | dev->net->dev_addr[3] << 24;
-+      u32 addr_hi = dev->net->dev_addr[4] | dev->net->dev_addr[5] << 8;
-+
-+      int ret = smsc75xx_write_reg(dev, RX_ADDRH, addr_hi);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write RX_ADDRH: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, RX_ADDRL, addr_lo);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write RX_ADDRL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      addr_hi |= ADDR_FILTX_FB_VALID;
-+      ret = smsc75xx_write_reg(dev, ADDR_FILTX, addr_hi);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write ADDR_FILTX: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, ADDR_FILTX + 4, addr_lo);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "Failed to write ADDR_FILTX+4: %d\n", ret);
-+
-+      return ret;
-+}
-+
-+static int smsc75xx_phy_initialize(struct usbnet *dev)
-+{
-+      int bmcr, ret, timeout = 0;
-+
-+      /* Initialize MII structure */
-+      dev->mii.dev = dev->net;
-+      dev->mii.mdio_read = smsc75xx_mdio_read;
-+      dev->mii.mdio_write = smsc75xx_mdio_write;
-+      dev->mii.phy_id_mask = 0x1f;
-+      dev->mii.reg_num_mask = 0x1f;
-+      dev->mii.supports_gmii = 1;
-+      dev->mii.phy_id = SMSC75XX_INTERNAL_PHY_ID;
-+
-+      /* reset phy and wait for reset to complete */
-+      smsc75xx_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET);
-+
-+      do {
-+              msleep(10);
-+              bmcr = smsc75xx_mdio_read(dev->net, dev->mii.phy_id, MII_BMCR);
-+              if (bmcr < 0) {
-+                      netdev_warn(dev->net, "Error reading MII_BMCR\n");
-+                      return bmcr;
-+              }
-+              timeout++;
-+      } while ((bmcr & BMCR_RESET) && (timeout < 100));
-+
-+      if (timeout >= 100) {
-+              netdev_warn(dev->net, "timeout on PHY Reset\n");
-+              return -EIO;
-+      }
-+
-+      smsc75xx_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE,
-+              ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP |
-+              ADVERTISE_PAUSE_ASYM);
-+      smsc75xx_mdio_write(dev->net, dev->mii.phy_id, MII_CTRL1000,
-+              ADVERTISE_1000FULL);
-+
-+      /* read and write to clear phy interrupt status */
-+      ret = smsc75xx_mdio_read(dev->net, dev->mii.phy_id, PHY_INT_SRC);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading PHY_INT_SRC\n");
-+              return ret;
-+      }
-+
-+      smsc75xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_SRC, 0xffff);
-+
-+      smsc75xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_MASK,
-+              PHY_INT_MASK_DEFAULT);
-+      mii_nway_restart(&dev->mii);
-+
-+      netif_dbg(dev, ifup, dev->net, "phy initialised successfully\n");
-+      return 0;
-+}
-+
-+static int smsc75xx_set_rx_max_frame_length(struct usbnet *dev, int size)
-+{
-+      int ret = 0;
-+      u32 buf;
-+      bool rxenabled;
-+
-+      ret = smsc75xx_read_reg(dev, MAC_RX, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read MAC_RX: %d\n", ret);
-+              return ret;
-+      }
-+
-+      rxenabled = ((buf & MAC_RX_RXEN) != 0);
-+
-+      if (rxenabled) {
-+              buf &= ~MAC_RX_RXEN;
-+              ret = smsc75xx_write_reg(dev, MAC_RX, buf);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret);
-+                      return ret;
-+              }
-+      }
-+
-+      /* add 4 to size for FCS */
-+      buf &= ~MAC_RX_MAX_SIZE;
-+      buf |= (((size + 4) << MAC_RX_MAX_SIZE_SHIFT) & MAC_RX_MAX_SIZE);
-+
-+      ret = smsc75xx_write_reg(dev, MAC_RX, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret);
-+              return ret;
-+      }
-+
-+      if (rxenabled) {
-+              buf |= MAC_RX_RXEN;
-+              ret = smsc75xx_write_reg(dev, MAC_RX, buf);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret);
-+                      return ret;
-+              }
-+      }
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_change_mtu(struct net_device *netdev, int new_mtu)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      int ret;
-+
-+      if (new_mtu > MAX_SINGLE_PACKET_SIZE)
-+              return -EINVAL;
-+
-+      ret = smsc75xx_set_rx_max_frame_length(dev, new_mtu + ETH_HLEN);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to set mac rx frame length\n");
-+              return ret;
-+      }
-+
-+      return usbnet_change_mtu(netdev, new_mtu);
-+}
-+
-+/* Enable or disable Rx checksum offload engine */
-+static int smsc75xx_set_features(struct net_device *netdev,
-+      netdev_features_t features)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      unsigned long flags;
-+      int ret;
-+
-+      spin_lock_irqsave(&pdata->rfe_ctl_lock, flags);
-+
-+      if (features & NETIF_F_RXCSUM)
-+              pdata->rfe_ctl |= RFE_CTL_TCPUDP_CKM | RFE_CTL_IP_CKM;
-+      else
-+              pdata->rfe_ctl &= ~(RFE_CTL_TCPUDP_CKM | RFE_CTL_IP_CKM);
-+
-+      spin_unlock_irqrestore(&pdata->rfe_ctl_lock, flags);
-+      /* it's racing here! */
-+
-+      ret = smsc75xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "Error writing RFE_CTL\n");
-+
-+      return ret;
-+}
-+
-+static int smsc75xx_wait_ready(struct usbnet *dev, int in_pm)
-+{
-+      int timeout = 0;
-+
-+      do {
-+              u32 buf;
-+              int ret;
-+
-+              ret = __smsc75xx_read_reg(dev, PMT_CTL, &buf, in_pm);
-+
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to read PMT_CTL: %d\n", ret);
-+                      return ret;
-+              }
-+
-+              if (buf & PMT_CTL_DEV_RDY)
-+                      return 0;
-+
-+              msleep(10);
-+              timeout++;
-+      } while (timeout < 100);
-+
-+      netdev_warn(dev->net, "timeout waiting for device ready\n");
-+      return -EIO;
-+}
-+
-+static int smsc75xx_reset(struct usbnet *dev)
-+{
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      u32 buf;
-+      int ret = 0, timeout;
-+
-+      netif_dbg(dev, ifup, dev->net, "entering smsc75xx_reset\n");
-+
-+      ret = smsc75xx_wait_ready(dev, 0);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "device not ready in smsc75xx_reset\n");
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, HW_CFG, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
-+              return ret;
-+      }
-+
-+      buf |= HW_CFG_LRST;
-+
-+      ret = smsc75xx_write_reg(dev, HW_CFG, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write HW_CFG: %d\n", ret);
-+              return ret;
-+      }
-+
-+      timeout = 0;
-+      do {
-+              msleep(10);
-+              ret = smsc75xx_read_reg(dev, HW_CFG, &buf);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
-+                      return ret;
-+              }
-+              timeout++;
-+      } while ((buf & HW_CFG_LRST) && (timeout < 100));
-+
-+      if (timeout >= 100) {
-+              netdev_warn(dev->net, "timeout on completion of Lite Reset\n");
-+              return -EIO;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "Lite reset complete, resetting PHY\n");
-+
-+      ret = smsc75xx_read_reg(dev, PMT_CTL, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read PMT_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      buf |= PMT_CTL_PHY_RST;
-+
-+      ret = smsc75xx_write_reg(dev, PMT_CTL, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write PMT_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      timeout = 0;
-+      do {
-+              msleep(10);
-+              ret = smsc75xx_read_reg(dev, PMT_CTL, &buf);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to read PMT_CTL: %d\n", ret);
-+                      return ret;
-+              }
-+              timeout++;
-+      } while ((buf & PMT_CTL_PHY_RST) && (timeout < 100));
-+
-+      if (timeout >= 100) {
-+              netdev_warn(dev->net, "timeout waiting for PHY Reset\n");
-+              return -EIO;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "PHY reset complete\n");
-+
-+      ret = smsc75xx_set_mac_address(dev);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to set mac address\n");
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "MAC Address: %pM\n",
-+                dev->net->dev_addr);
-+
-+      ret = smsc75xx_read_reg(dev, HW_CFG, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "Read Value from HW_CFG : 0x%08x\n",
-+                buf);
-+
-+      buf |= HW_CFG_BIR;
-+
-+      ret = smsc75xx_write_reg(dev, HW_CFG, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net,  "Failed to write HW_CFG: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, HW_CFG, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "Read Value from HW_CFG after writing HW_CFG_BIR: 0x%08x\n",
-+                buf);
-+
-+      if (!turbo_mode) {
-+              buf = 0;
-+              dev->rx_urb_size = MAX_SINGLE_PACKET_SIZE;
-+      } else if (dev->udev->speed == USB_SPEED_HIGH) {
-+              buf = DEFAULT_HS_BURST_CAP_SIZE / HS_USB_PKT_SIZE;
-+              dev->rx_urb_size = DEFAULT_HS_BURST_CAP_SIZE;
-+      } else {
-+              buf = DEFAULT_FS_BURST_CAP_SIZE / FS_USB_PKT_SIZE;
-+              dev->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n",
-+                (ulong)dev->rx_urb_size);
-+
-+      ret = smsc75xx_write_reg(dev, BURST_CAP, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write BURST_CAP: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, BURST_CAP, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read BURST_CAP: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net,
-+                "Read Value from BURST_CAP after writing: 0x%08x\n", buf);
-+
-+      ret = smsc75xx_write_reg(dev, BULK_IN_DLY, DEFAULT_BULK_IN_DELAY);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write BULK_IN_DLY: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, BULK_IN_DLY, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read BULK_IN_DLY: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net,
-+                "Read Value from BULK_IN_DLY after writing: 0x%08x\n", buf);
-+
-+      if (turbo_mode) {
-+              ret = smsc75xx_read_reg(dev, HW_CFG, &buf);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
-+                      return ret;
-+              }
-+
-+              netif_dbg(dev, ifup, dev->net, "HW_CFG: 0x%08x\n", buf);
-+
-+              buf |= (HW_CFG_MEF | HW_CFG_BCE);
-+
-+              ret = smsc75xx_write_reg(dev, HW_CFG, buf);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to write HW_CFG: %d\n", ret);
-+                      return ret;
-+              }
-+
-+              ret = smsc75xx_read_reg(dev, HW_CFG, &buf);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
-+                      return ret;
-+              }
-+
-+              netif_dbg(dev, ifup, dev->net, "HW_CFG: 0x%08x\n", buf);
-+      }
-+
-+      /* set FIFO sizes */
-+      buf = (MAX_RX_FIFO_SIZE - 512) / 512;
-+      ret = smsc75xx_write_reg(dev, FCT_RX_FIFO_END, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write FCT_RX_FIFO_END: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "FCT_RX_FIFO_END set to 0x%08x\n", buf);
-+
-+      buf = (MAX_TX_FIFO_SIZE - 512) / 512;
-+      ret = smsc75xx_write_reg(dev, FCT_TX_FIFO_END, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write FCT_TX_FIFO_END: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "FCT_TX_FIFO_END set to 0x%08x\n", buf);
-+
-+      ret = smsc75xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write INT_STS: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, ID_REV, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read ID_REV: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "ID_REV = 0x%08x\n", buf);
-+
-+      ret = smsc75xx_read_reg(dev, E2P_CMD, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read E2P_CMD: %d\n", ret);
-+              return ret;
-+      }
-+
-+      /* only set default GPIO/LED settings if no EEPROM is detected */
-+      if (!(buf & E2P_CMD_LOADED)) {
-+              ret = smsc75xx_read_reg(dev, LED_GPIO_CFG, &buf);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to read LED_GPIO_CFG: %d\n", ret);
-+                      return ret;
-+              }
-+
-+              buf &= ~(LED_GPIO_CFG_LED2_FUN_SEL | LED_GPIO_CFG_LED10_FUN_SEL);
-+              buf |= LED_GPIO_CFG_LEDGPIO_EN | LED_GPIO_CFG_LED2_FUN_SEL;
-+
-+              ret = smsc75xx_write_reg(dev, LED_GPIO_CFG, buf);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Failed to write LED_GPIO_CFG: %d\n", ret);
-+                      return ret;
-+              }
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, FLOW, 0);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write FLOW: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, FCT_FLOW, 0);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write FCT_FLOW: %d\n", ret);
-+              return ret;
-+      }
-+
-+      /* Don't need rfe_ctl_lock during initialisation */
-+      ret = smsc75xx_read_reg(dev, RFE_CTL, &pdata->rfe_ctl);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read RFE_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      pdata->rfe_ctl |= RFE_CTL_AB | RFE_CTL_DPF;
-+
-+      ret = smsc75xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write RFE_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, RFE_CTL, &pdata->rfe_ctl);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read RFE_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "RFE_CTL set to 0x%08x\n",
-+                pdata->rfe_ctl);
-+
-+      /* Enable or disable checksum offload engines */
-+      smsc75xx_set_features(dev->net, dev->net->features);
-+
-+      smsc75xx_set_multicast(dev->net);
-+
-+      ret = smsc75xx_phy_initialize(dev);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to initialize PHY: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, INT_EP_CTL, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read INT_EP_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      /* enable PHY interrupts */
-+      buf |= INT_ENP_PHY_INT;
-+
-+      ret = smsc75xx_write_reg(dev, INT_EP_CTL, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write INT_EP_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      /* allow mac to detect speed and duplex from phy */
-+      ret = smsc75xx_read_reg(dev, MAC_CR, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read MAC_CR: %d\n", ret);
-+              return ret;
-+      }
-+
-+      buf |= (MAC_CR_ADD | MAC_CR_ASD);
-+      ret = smsc75xx_write_reg(dev, MAC_CR, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write MAC_CR: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, MAC_TX, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read MAC_TX: %d\n", ret);
-+              return ret;
-+      }
-+
-+      buf |= MAC_TX_TXEN;
-+
-+      ret = smsc75xx_write_reg(dev, MAC_TX, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write MAC_TX: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "MAC_TX set to 0x%08x\n", buf);
-+
-+      ret = smsc75xx_read_reg(dev, FCT_TX_CTL, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read FCT_TX_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      buf |= FCT_TX_CTL_EN;
-+
-+      ret = smsc75xx_write_reg(dev, FCT_TX_CTL, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write FCT_TX_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "FCT_TX_CTL set to 0x%08x\n", buf);
-+
-+      ret = smsc75xx_set_rx_max_frame_length(dev, dev->net->mtu + ETH_HLEN);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to set max rx frame length\n");
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_read_reg(dev, MAC_RX, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read MAC_RX: %d\n", ret);
-+              return ret;
-+      }
-+
-+      buf |= MAC_RX_RXEN;
-+
-+      ret = smsc75xx_write_reg(dev, MAC_RX, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "MAC_RX set to 0x%08x\n", buf);
-+
-+      ret = smsc75xx_read_reg(dev, FCT_RX_CTL, &buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read FCT_RX_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      buf |= FCT_RX_CTL_EN;
-+
-+      ret = smsc75xx_write_reg(dev, FCT_RX_CTL, buf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write FCT_RX_CTL: %d\n", ret);
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "FCT_RX_CTL set to 0x%08x\n", buf);
-+
-+      netif_dbg(dev, ifup, dev->net, "smsc75xx_reset, return 0\n");
-+      return 0;
-+}
-+
-+static const struct net_device_ops smsc75xx_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = smsc75xx_change_mtu,
-+      .ndo_set_mac_address    = eth_mac_addr,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = smsc75xx_ioctl,
-+      .ndo_set_rx_mode        = smsc75xx_set_multicast,
-+      .ndo_set_features       = smsc75xx_set_features,
-+};
-+
-+static int smsc75xx_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      struct smsc75xx_priv *pdata = NULL;
-+      int ret;
-+
-+      printk(KERN_INFO SMSC_CHIPNAME " v" SMSC_DRIVER_VERSION "\n");
-+
-+      ret = usbnet_get_endpoints(dev, intf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "usbnet_get_endpoints failed: %d\n", ret);
-+              return ret;
-+      }
-+
-+      dev->data[0] = (unsigned long)kzalloc(sizeof(struct smsc75xx_priv),
-+                                            GFP_KERNEL);
-+
-+      pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      if (!pdata)
-+              return -ENOMEM;
-+
-+      pdata->dev = dev;
-+
-+      spin_lock_init(&pdata->rfe_ctl_lock);
-+      mutex_init(&pdata->dataport_mutex);
-+
-+      INIT_WORK(&pdata->set_multicast, smsc75xx_deferred_multicast_write);
-+
-+      if (DEFAULT_TX_CSUM_ENABLE)
-+              dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
-+
-+      if (DEFAULT_RX_CSUM_ENABLE)
-+              dev->net->features |= NETIF_F_RXCSUM;
-+
-+      dev->net->hw_features = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
-+                              NETIF_F_RXCSUM;
-+
-+      ret = smsc75xx_wait_ready(dev, 0);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "device not ready in smsc75xx_bind\n");
-+              return ret;
-+      }
-+
-+      smsc75xx_init_mac_address(dev);
-+
-+      /* Init all registers */
-+      ret = smsc75xx_reset(dev);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "smsc75xx_reset error %d\n", ret);
-+              return ret;
-+      }
-+
-+      dev->net->netdev_ops = &smsc75xx_netdev_ops;
-+      dev->net->ethtool_ops = &smsc75xx_ethtool_ops;
-+      dev->net->flags |= IFF_MULTICAST;
-+      dev->net->hard_header_len += SMSC75XX_TX_OVERHEAD;
-+      dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
-+      return 0;
-+}
-+
-+static void smsc75xx_unbind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      if (pdata) {
-+              netif_dbg(dev, ifdown, dev->net, "free pdata\n");
-+              kfree(pdata);
-+              pdata = NULL;
-+              dev->data[0] = 0;
-+      }
-+}
-+
-+static u16 smsc_crc(const u8 *buffer, size_t len)
-+{
-+      return bitrev16(crc16(0xFFFF, buffer, len));
-+}
-+
-+static int smsc75xx_write_wuff(struct usbnet *dev, int filter, u32 wuf_cfg,
-+                             u32 wuf_mask1)
-+{
-+      int cfg_base = WUF_CFGX + filter * 4;
-+      int mask_base = WUF_MASKX + filter * 16;
-+      int ret;
-+
-+      ret = smsc75xx_write_reg(dev, cfg_base, wuf_cfg);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing WUF_CFGX\n");
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, mask_base, wuf_mask1);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing WUF_MASKX\n");
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, mask_base + 4, 0);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing WUF_MASKX\n");
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, mask_base + 8, 0);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing WUF_MASKX\n");
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_write_reg(dev, mask_base + 12, 0);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing WUF_MASKX\n");
-+              return ret;
-+      }
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_enter_suspend0(struct usbnet *dev)
-+{
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      u32 val;
-+      int ret;
-+
-+      ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      val &= (~(PMT_CTL_SUS_MODE | PMT_CTL_PHY_RST));
-+      val |= PMT_CTL_SUS_MODE_0 | PMT_CTL_WOL_EN | PMT_CTL_WUPS;
-+
-+      ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      pdata->suspend_flags |= SUSPEND_SUSPEND0;
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_enter_suspend1(struct usbnet *dev)
-+{
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      u32 val;
-+      int ret;
-+
-+      ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      val &= ~(PMT_CTL_SUS_MODE | PMT_CTL_WUPS | PMT_CTL_PHY_RST);
-+      val |= PMT_CTL_SUS_MODE_1;
-+
-+      ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      /* clear wol status, enable energy detection */
-+      val &= ~PMT_CTL_WUPS;
-+      val |= (PMT_CTL_WUPS_ED | PMT_CTL_ED_EN);
-+
-+      ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      pdata->suspend_flags |= SUSPEND_SUSPEND1;
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_enter_suspend2(struct usbnet *dev)
-+{
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      u32 val;
-+      int ret;
-+
-+      ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      val &= ~(PMT_CTL_SUS_MODE | PMT_CTL_WUPS | PMT_CTL_PHY_RST);
-+      val |= PMT_CTL_SUS_MODE_2;
-+
-+      ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      pdata->suspend_flags |= SUSPEND_SUSPEND2;
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_enter_suspend3(struct usbnet *dev)
-+{
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      u32 val;
-+      int ret;
-+
-+      ret = smsc75xx_read_reg_nopm(dev, FCT_RX_CTL, &val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading FCT_RX_CTL\n");
-+              return ret;
-+      }
-+
-+      if (val & FCT_RX_CTL_RXUSED) {
-+              netdev_dbg(dev->net, "rx fifo not empty in autosuspend\n");
-+              return -EBUSY;
-+      }
-+
-+      ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      val &= ~(PMT_CTL_SUS_MODE | PMT_CTL_WUPS | PMT_CTL_PHY_RST);
-+      val |= PMT_CTL_SUS_MODE_3 | PMT_CTL_RES_CLR_WKP_EN;
-+
-+      ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      /* clear wol status */
-+      val &= ~PMT_CTL_WUPS;
-+      val |= PMT_CTL_WUPS_WOL;
-+
-+      ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+              return ret;
-+      }
-+
-+      pdata->suspend_flags |= SUSPEND_SUSPEND3;
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_enable_phy_wakeup_interrupts(struct usbnet *dev, u16 mask)
-+{
-+      struct mii_if_info *mii = &dev->mii;
-+      int ret;
-+
-+      netdev_dbg(dev->net, "enabling PHY wakeup interrupts\n");
-+
-+      /* read to clear */
-+      ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_SRC);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading PHY_INT_SRC\n");
-+              return ret;
-+      }
-+
-+      /* enable interrupt source */
-+      ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_MASK);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading PHY_INT_MASK\n");
-+              return ret;
-+      }
-+
-+      ret |= mask;
-+
-+      smsc75xx_mdio_write_nopm(dev->net, mii->phy_id, PHY_INT_MASK, ret);
-+
-+      return 0;
-+}
-+
-+static int smsc75xx_link_ok_nopm(struct usbnet *dev)
-+{
-+      struct mii_if_info *mii = &dev->mii;
-+      int ret;
-+
-+      /* first, a dummy read, needed to latch some MII phys */
-+      ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading MII_BMSR\n");
-+              return ret;
-+      }
-+
-+      ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading MII_BMSR\n");
-+              return ret;
-+      }
-+
-+      return !!(ret & BMSR_LSTATUS);
-+}
-+
-+static int smsc75xx_autosuspend(struct usbnet *dev, u32 link_up)
-+{
-+      int ret;
-+
-+      if (!netif_running(dev->net)) {
-+              /* interface is ifconfig down so fully power down hw */
-+              netdev_dbg(dev->net, "autosuspend entering SUSPEND2\n");
-+              return smsc75xx_enter_suspend2(dev);
-+      }
-+
-+      if (!link_up) {
-+              /* link is down so enter EDPD mode */
-+              netdev_dbg(dev->net, "autosuspend entering SUSPEND1\n");
-+
-+              /* enable PHY wakeup events for if cable is attached */
-+              ret = smsc75xx_enable_phy_wakeup_interrupts(dev,
-+                      PHY_INT_MASK_ANEG_COMP);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "error enabling PHY wakeup ints\n");
-+                      return ret;
-+              }
-+
-+              netdev_info(dev->net, "entering SUSPEND1 mode\n");
-+              return smsc75xx_enter_suspend1(dev);
-+      }
-+
-+      /* enable PHY wakeup events so we remote wakeup if cable is pulled */
-+      ret = smsc75xx_enable_phy_wakeup_interrupts(dev,
-+              PHY_INT_MASK_LINK_DOWN);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "error enabling PHY wakeup ints\n");
-+              return ret;
-+      }
-+
-+      netdev_dbg(dev->net, "autosuspend entering SUSPEND3\n");
-+      return smsc75xx_enter_suspend3(dev);
-+}
-+
-+static int smsc75xx_suspend(struct usb_interface *intf, pm_message_t message)
-+{
-+      struct usbnet *dev = usb_get_intfdata(intf);
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      u32 val, link_up;
-+      int ret;
-+
-+      ret = usbnet_suspend(intf, message);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "usbnet_suspend error\n");
-+              return ret;
-+      }
-+
-+      if (pdata->suspend_flags) {
-+              netdev_warn(dev->net, "error during last resume\n");
-+              pdata->suspend_flags = 0;
-+      }
-+
-+      /* determine if link is up using only _nopm functions */
-+      link_up = smsc75xx_link_ok_nopm(dev);
-+
-+      if (message.event == PM_EVENT_AUTO_SUSPEND) {
-+              ret = smsc75xx_autosuspend(dev, link_up);
-+              goto done;
-+      }
-+
-+      /* if we get this far we're not autosuspending */
-+      /* if no wol options set, or if link is down and we're not waking on
-+       * PHY activity, enter lowest power SUSPEND2 mode
-+       */
-+      if (!(pdata->wolopts & SUPPORTED_WAKE) ||
-+              !(link_up || (pdata->wolopts & WAKE_PHY))) {
-+              netdev_info(dev->net, "entering SUSPEND2 mode\n");
-+
-+              /* disable energy detect (link up) & wake up events */
-+              ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading WUCSR\n");
-+                      goto done;
-+              }
-+
-+              val &= ~(WUCSR_MPEN | WUCSR_WUEN);
-+
-+              ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing WUCSR\n");
-+                      goto done;
-+              }
-+
-+              ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading PMT_CTL\n");
-+                      goto done;
-+              }
-+
-+              val &= ~(PMT_CTL_ED_EN | PMT_CTL_WOL_EN);
-+
-+              ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+                      goto done;
-+              }
-+
-+              ret = smsc75xx_enter_suspend2(dev);
-+              goto done;
-+      }
-+
-+      if (pdata->wolopts & WAKE_PHY) {
-+              ret = smsc75xx_enable_phy_wakeup_interrupts(dev,
-+                      (PHY_INT_MASK_ANEG_COMP | PHY_INT_MASK_LINK_DOWN));
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "error enabling PHY wakeup ints\n");
-+                      goto done;
-+              }
-+
-+              /* if link is down then configure EDPD and enter SUSPEND1,
-+               * otherwise enter SUSPEND0 below
-+               */
-+              if (!link_up) {
-+                      struct mii_if_info *mii = &dev->mii;
-+                      netdev_info(dev->net, "entering SUSPEND1 mode\n");
-+
-+                      /* enable energy detect power-down mode */
-+                      ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id,
-+                              PHY_MODE_CTRL_STS);
-+                      if (ret < 0) {
-+                              netdev_warn(dev->net, "Error reading PHY_MODE_CTRL_STS\n");
-+                              goto done;
-+                      }
-+
-+                      ret |= MODE_CTRL_STS_EDPWRDOWN;
-+
-+                      smsc75xx_mdio_write_nopm(dev->net, mii->phy_id,
-+                              PHY_MODE_CTRL_STS, ret);
-+
-+                      /* enter SUSPEND1 mode */
-+                      ret = smsc75xx_enter_suspend1(dev);
-+                      goto done;
-+              }
-+      }
-+
-+      if (pdata->wolopts & (WAKE_MCAST | WAKE_ARP)) {
-+              int i, filter = 0;
-+
-+              /* disable all filters */
-+              for (i = 0; i < WUF_NUM; i++) {
-+                      ret = smsc75xx_write_reg_nopm(dev, WUF_CFGX + i * 4, 0);
-+                      if (ret < 0) {
-+                              netdev_warn(dev->net, "Error writing WUF_CFGX\n");
-+                              goto done;
-+                      }
-+              }
-+
-+              if (pdata->wolopts & WAKE_MCAST) {
-+                      const u8 mcast[] = {0x01, 0x00, 0x5E};
-+                      netdev_info(dev->net, "enabling multicast detection\n");
-+
-+                      val = WUF_CFGX_EN | WUF_CFGX_ATYPE_MULTICAST
-+                              | smsc_crc(mcast, 3);
-+                      ret = smsc75xx_write_wuff(dev, filter++, val, 0x0007);
-+                      if (ret < 0) {
-+                              netdev_warn(dev->net, "Error writing wakeup filter\n");
-+                              goto done;
-+                      }
-+              }
-+
-+              if (pdata->wolopts & WAKE_ARP) {
-+                      const u8 arp[] = {0x08, 0x06};
-+                      netdev_info(dev->net, "enabling ARP detection\n");
-+
-+                      val = WUF_CFGX_EN | WUF_CFGX_ATYPE_ALL | (0x0C << 16)
-+                              | smsc_crc(arp, 2);
-+                      ret = smsc75xx_write_wuff(dev, filter++, val, 0x0003);
-+                      if (ret < 0) {
-+                              netdev_warn(dev->net, "Error writing wakeup filter\n");
-+                              goto done;
-+                      }
-+              }
-+
-+              /* clear any pending pattern match packet status */
-+              ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading WUCSR\n");
-+                      goto done;
-+              }
-+
-+              val |= WUCSR_WUFR;
-+
-+              ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing WUCSR\n");
-+                      goto done;
-+              }
-+
-+              netdev_info(dev->net, "enabling packet match detection\n");
-+              ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading WUCSR\n");
-+                      goto done;
-+              }
-+
-+              val |= WUCSR_WUEN;
-+
-+              ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing WUCSR\n");
-+                      goto done;
-+              }
-+      } else {
-+              netdev_info(dev->net, "disabling packet match detection\n");
-+              ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading WUCSR\n");
-+                      goto done;
-+              }
-+
-+              val &= ~WUCSR_WUEN;
-+
-+              ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing WUCSR\n");
-+                      goto done;
-+              }
-+      }
-+
-+      /* disable magic, bcast & unicast wakeup sources */
-+      ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading WUCSR\n");
-+              goto done;
-+      }
-+
-+      val &= ~(WUCSR_MPEN | WUCSR_BCST_EN | WUCSR_PFDA_EN);
-+
-+      ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing WUCSR\n");
-+              goto done;
-+      }
-+
-+      if (pdata->wolopts & WAKE_PHY) {
-+              netdev_info(dev->net, "enabling PHY wakeup\n");
-+
-+              ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading PMT_CTL\n");
-+                      goto done;
-+              }
-+
-+              /* clear wol status, enable energy detection */
-+              val &= ~PMT_CTL_WUPS;
-+              val |= (PMT_CTL_WUPS_ED | PMT_CTL_ED_EN);
-+
-+              ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+                      goto done;
-+              }
-+      }
-+
-+      if (pdata->wolopts & WAKE_MAGIC) {
-+              netdev_info(dev->net, "enabling magic packet wakeup\n");
-+              ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading WUCSR\n");
-+                      goto done;
-+              }
-+
-+              /* clear any pending magic packet status */
-+              val |= WUCSR_MPR | WUCSR_MPEN;
-+
-+              ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing WUCSR\n");
-+                      goto done;
-+              }
-+      }
-+
-+      if (pdata->wolopts & WAKE_BCAST) {
-+              netdev_info(dev->net, "enabling broadcast detection\n");
-+              ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading WUCSR\n");
-+                      goto done;
-+              }
-+
-+              val |= WUCSR_BCAST_FR | WUCSR_BCST_EN;
-+
-+              ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing WUCSR\n");
-+                      goto done;
-+              }
-+      }
-+
-+      if (pdata->wolopts & WAKE_UCAST) {
-+              netdev_info(dev->net, "enabling unicast detection\n");
-+              ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading WUCSR\n");
-+                      goto done;
-+              }
-+
-+              val |= WUCSR_WUFR | WUCSR_PFDA_EN;
-+
-+              ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing WUCSR\n");
-+                      goto done;
-+              }
-+      }
-+
-+      /* enable receiver to enable frame reception */
-+      ret = smsc75xx_read_reg_nopm(dev, MAC_RX, &val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read MAC_RX: %d\n", ret);
-+              goto done;
-+      }
-+
-+      val |= MAC_RX_RXEN;
-+
-+      ret = smsc75xx_write_reg_nopm(dev, MAC_RX, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret);
-+              goto done;
-+      }
-+
-+      /* some wol options are enabled, so enter SUSPEND0 */
-+      netdev_info(dev->net, "entering SUSPEND0 mode\n");
-+      ret = smsc75xx_enter_suspend0(dev);
-+
-+done:
-+      /*
-+       * TODO: resume() might need to handle the suspend failure
-+       * in system sleep
-+       */
-+      if (ret && PMSG_IS_AUTO(message))
-+              usbnet_resume(intf);
-+      return ret;
-+}
-+
-+static int smsc75xx_resume(struct usb_interface *intf)
-+{
-+      struct usbnet *dev = usb_get_intfdata(intf);
-+      struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
-+      u8 suspend_flags = pdata->suspend_flags;
-+      int ret;
-+      u32 val;
-+
-+      netdev_dbg(dev->net, "resume suspend_flags=0x%02x\n", suspend_flags);
-+
-+      /* do this first to ensure it's cleared even in error case */
-+      pdata->suspend_flags = 0;
-+
-+      if (suspend_flags & SUSPEND_ALLMODES) {
-+              /* Disable wakeup sources */
-+              ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading WUCSR\n");
-+                      return ret;
-+              }
-+
-+              val &= ~(WUCSR_WUEN | WUCSR_MPEN | WUCSR_PFDA_EN
-+                      | WUCSR_BCST_EN);
-+
-+              ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing WUCSR\n");
-+                      return ret;
-+              }
-+
-+              /* clear wake-up status */
-+              ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading PMT_CTL\n");
-+                      return ret;
-+              }
-+
-+              val &= ~PMT_CTL_WOL_EN;
-+              val |= PMT_CTL_WUPS;
-+
-+              ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+                      return ret;
-+              }
-+      }
-+
-+      if (suspend_flags & SUSPEND_SUSPEND2) {
-+              netdev_info(dev->net, "resuming from SUSPEND2\n");
-+
-+              ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading PMT_CTL\n");
-+                      return ret;
-+              }
-+
-+              val |= PMT_CTL_PHY_PWRUP;
-+
-+              ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing PMT_CTL\n");
-+                      return ret;
-+              }
-+      }
-+
-+      ret = smsc75xx_wait_ready(dev, 1);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "device not ready in smsc75xx_resume\n");
-+              return ret;
-+      }
-+
-+      return usbnet_resume(intf);
-+}
-+
-+static void smsc75xx_rx_csum_offload(struct usbnet *dev, struct sk_buff *skb,
-+                                   u32 rx_cmd_a, u32 rx_cmd_b)
-+{
-+      if (!(dev->net->features & NETIF_F_RXCSUM) ||
-+          unlikely(rx_cmd_a & RX_CMD_A_LCSM)) {
-+              skb->ip_summed = CHECKSUM_NONE;
-+      } else {
-+              skb->csum = ntohs((u16)(rx_cmd_b >> RX_CMD_B_CSUM_SHIFT));
-+              skb->ip_summed = CHECKSUM_COMPLETE;
-+      }
-+}
-+
-+static int smsc75xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      /* This check is no longer done by usbnet */
-+      if (skb->len < dev->net->hard_header_len)
-+              return 0;
-+
-+      while (skb->len > 0) {
-+              u32 rx_cmd_a, rx_cmd_b, align_count, size;
-+              struct sk_buff *ax_skb;
-+              unsigned char *packet;
-+
-+              memcpy(&rx_cmd_a, skb->data, sizeof(rx_cmd_a));
-+              le32_to_cpus(&rx_cmd_a);
-+              skb_pull(skb, 4);
-+
-+              memcpy(&rx_cmd_b, skb->data, sizeof(rx_cmd_b));
-+              le32_to_cpus(&rx_cmd_b);
-+              skb_pull(skb, 4 + RXW_PADDING);
-+
-+              packet = skb->data;
-+
-+              /* get the packet length */
-+              size = (rx_cmd_a & RX_CMD_A_LEN) - RXW_PADDING;
-+              align_count = (4 - ((size + RXW_PADDING) % 4)) % 4;
-+
-+              if (unlikely(rx_cmd_a & RX_CMD_A_RED)) {
-+                      netif_dbg(dev, rx_err, dev->net,
-+                                "Error rx_cmd_a=0x%08x\n", rx_cmd_a);
-+                      dev->net->stats.rx_errors++;
-+                      dev->net->stats.rx_dropped++;
-+
-+                      if (rx_cmd_a & RX_CMD_A_FCS)
-+                              dev->net->stats.rx_crc_errors++;
-+                      else if (rx_cmd_a & (RX_CMD_A_LONG | RX_CMD_A_RUNT))
-+                              dev->net->stats.rx_frame_errors++;
-+              } else {
-+                      /* MAX_SINGLE_PACKET_SIZE + 4(CRC) + 2(COE) + 4(Vlan) */
-+                      if (unlikely(size > (MAX_SINGLE_PACKET_SIZE + ETH_HLEN + 12))) {
-+                              netif_dbg(dev, rx_err, dev->net,
-+                                        "size err rx_cmd_a=0x%08x\n",
-+                                        rx_cmd_a);
-+                              return 0;
-+                      }
-+
-+                      /* last frame in this batch */
-+                      if (skb->len == size) {
-+                              smsc75xx_rx_csum_offload(dev, skb, rx_cmd_a,
-+                                      rx_cmd_b);
-+
-+                              skb_trim(skb, skb->len - 4); /* remove fcs */
-+                              skb->truesize = size + sizeof(struct sk_buff);
-+
-+                              return 1;
-+                      }
-+
-+                      ax_skb = skb_clone(skb, GFP_ATOMIC);
-+                      if (unlikely(!ax_skb)) {
-+                              netdev_warn(dev->net, "Error allocating skb\n");
-+                              return 0;
-+                      }
-+
-+                      ax_skb->len = size;
-+                      ax_skb->data = packet;
-+                      skb_set_tail_pointer(ax_skb, size);
-+
-+                      smsc75xx_rx_csum_offload(dev, ax_skb, rx_cmd_a,
-+                              rx_cmd_b);
-+
-+                      skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
-+                      ax_skb->truesize = size + sizeof(struct sk_buff);
-+
-+                      usbnet_skb_return(dev, ax_skb);
-+              }
-+
-+              skb_pull(skb, size);
-+
-+              /* padding bytes before the next frame starts */
-+              if (skb->len)
-+                      skb_pull(skb, align_count);
-+      }
-+
-+      if (unlikely(skb->len < 0)) {
-+              netdev_warn(dev->net, "invalid rx length<0 %d\n", skb->len);
-+              return 0;
-+      }
-+
-+      return 1;
-+}
-+
-+static struct sk_buff *smsc75xx_tx_fixup(struct usbnet *dev,
-+                                       struct sk_buff *skb, gfp_t flags)
-+{
-+      u32 tx_cmd_a, tx_cmd_b;
-+
-+      if (skb_headroom(skb) < SMSC75XX_TX_OVERHEAD) {
-+              struct sk_buff *skb2 =
-+                      skb_copy_expand(skb, SMSC75XX_TX_OVERHEAD, 0, flags);
-+              dev_kfree_skb_any(skb);
-+              skb = skb2;
-+              if (!skb)
-+                      return NULL;
-+      }
-+
-+      tx_cmd_a = (u32)(skb->len & TX_CMD_A_LEN) | TX_CMD_A_FCS;
-+
-+      if (skb->ip_summed == CHECKSUM_PARTIAL)
-+              tx_cmd_a |= TX_CMD_A_IPE | TX_CMD_A_TPE;
-+
-+      if (skb_is_gso(skb)) {
-+              u16 mss = max(skb_shinfo(skb)->gso_size, TX_MSS_MIN);
-+              tx_cmd_b = (mss << TX_CMD_B_MSS_SHIFT) & TX_CMD_B_MSS;
-+
-+              tx_cmd_a |= TX_CMD_A_LSO;
-+      } else {
-+              tx_cmd_b = 0;
-+      }
-+
-+      skb_push(skb, 4);
-+      cpu_to_le32s(&tx_cmd_b);
-+      memcpy(skb->data, &tx_cmd_b, 4);
-+
-+      skb_push(skb, 4);
-+      cpu_to_le32s(&tx_cmd_a);
-+      memcpy(skb->data, &tx_cmd_a, 4);
-+
-+      return skb;
-+}
-+
-+static int smsc75xx_manage_power(struct usbnet *dev, int on)
-+{
-+      dev->intf->needs_remote_wakeup = on;
-+      return 0;
-+}
-+
-+static const struct driver_info smsc75xx_info = {
-+      .description    = "smsc75xx USB 2.0 Gigabit Ethernet",
-+      .bind           = smsc75xx_bind,
-+      .unbind         = smsc75xx_unbind,
-+      .link_reset     = smsc75xx_link_reset,
-+      .reset          = smsc75xx_reset,
-+      .rx_fixup       = smsc75xx_rx_fixup,
-+      .tx_fixup       = smsc75xx_tx_fixup,
-+      .status         = smsc75xx_status,
-+      .manage_power   = smsc75xx_manage_power,
-+      .flags          = FLAG_ETHER | FLAG_SEND_ZLP | FLAG_LINK_INTR,
-+};
-+
-+static const struct usb_device_id products[] = {
-+      {
-+              /* SMSC7500 USB Gigabit Ethernet Device */
-+              USB_DEVICE(USB_VENDOR_ID_SMSC, USB_PRODUCT_ID_LAN7500),
-+              .driver_info = (unsigned long) &smsc75xx_info,
-+      },
-+      {
-+              /* SMSC7500 USB Gigabit Ethernet Device */
-+              USB_DEVICE(USB_VENDOR_ID_SMSC, USB_PRODUCT_ID_LAN7505),
-+              .driver_info = (unsigned long) &smsc75xx_info,
-+      },
-+      { },            /* END */
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver smsc75xx_driver = {
-+      .name           = SMSC_CHIPNAME,
-+      .id_table       = products,
-+      .probe          = usbnet_probe,
-+      .suspend        = smsc75xx_suspend,
-+      .resume         = smsc75xx_resume,
-+      .reset_resume   = smsc75xx_resume,
-+      .disconnect     = usbnet_disconnect,
-+      .disable_hub_initiated_lpm = 1,
-+      .supports_autosuspend = 1,
-+};
-+
-+module_usb_driver(smsc75xx_driver);
-+
-+MODULE_AUTHOR("Nancy Lin");
-+MODULE_AUTHOR("Steve Glendinning <steve.glendinning@shawell.net>");
-+MODULE_DESCRIPTION("SMSC75XX USB 2.0 Gigabit Ethernet Devices");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/smsc75xx.h backports-4.2.6-1/drivers/net/usb/smsc75xx.h
---- backports-4.2.6-1.org/drivers/net/usb/smsc75xx.h   1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/smsc75xx.h       2016-06-28 14:35:18.008640551 +0200
-@@ -0,0 +1,421 @@
-+ /***************************************************************************
-+ *
-+ * Copyright (C) 2007-2010 SMSC
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ *
-+ *****************************************************************************/
-+
-+#ifndef _SMSC75XX_H
-+#define _SMSC75XX_H
-+
-+/* Tx command words */
-+#define TX_CMD_A_LSO                  (0x08000000)
-+#define TX_CMD_A_IPE                  (0x04000000)
-+#define TX_CMD_A_TPE                  (0x02000000)
-+#define TX_CMD_A_IVTG                 (0x01000000)
-+#define TX_CMD_A_RVTG                 (0x00800000)
-+#define TX_CMD_A_FCS                  (0x00400000)
-+#define TX_CMD_A_LEN                  (0x000FFFFF)
-+
-+#define TX_CMD_B_MSS                  (0x3FFF0000)
-+#define TX_CMD_B_MSS_SHIFT            (16)
-+#define TX_MSS_MIN                    ((u16)8)
-+#define TX_CMD_B_VTAG                 (0x0000FFFF)
-+
-+/* Rx command words */
-+#define RX_CMD_A_ICE                  (0x80000000)
-+#define RX_CMD_A_TCE                  (0x40000000)
-+#define RX_CMD_A_IPV                  (0x20000000)
-+#define RX_CMD_A_PID                  (0x18000000)
-+#define RX_CMD_A_PID_NIP              (0x00000000)
-+#define RX_CMD_A_PID_TCP              (0x08000000)
-+#define RX_CMD_A_PID_UDP              (0x10000000)
-+#define RX_CMD_A_PID_PP                       (0x18000000)
-+#define RX_CMD_A_PFF                  (0x04000000)
-+#define RX_CMD_A_BAM                  (0x02000000)
-+#define RX_CMD_A_MAM                  (0x01000000)
-+#define RX_CMD_A_FVTG                 (0x00800000)
-+#define RX_CMD_A_RED                  (0x00400000)
-+#define RX_CMD_A_RWT                  (0x00200000)
-+#define RX_CMD_A_RUNT                 (0x00100000)
-+#define RX_CMD_A_LONG                 (0x00080000)
-+#define RX_CMD_A_RXE                  (0x00040000)
-+#define RX_CMD_A_DRB                  (0x00020000)
-+#define RX_CMD_A_FCS                  (0x00010000)
-+#define RX_CMD_A_UAM                  (0x00008000)
-+#define RX_CMD_A_LCSM                 (0x00004000)
-+#define RX_CMD_A_LEN                  (0x00003FFF)
-+
-+#define RX_CMD_B_CSUM                 (0xFFFF0000)
-+#define RX_CMD_B_CSUM_SHIFT           (16)
-+#define RX_CMD_B_VTAG                 (0x0000FFFF)
-+
-+/* SCSRs */
-+#define ID_REV                                (0x0000)
-+
-+#define FPGA_REV                      (0x0004)
-+
-+#define BOND_CTL                      (0x0008)
-+
-+#define INT_STS                               (0x000C)
-+#define INT_STS_RDFO_INT              (0x00400000)
-+#define INT_STS_TXE_INT                       (0x00200000)
-+#define INT_STS_MACRTO_INT            (0x00100000)
-+#define INT_STS_TX_DIS_INT            (0x00080000)
-+#define INT_STS_RX_DIS_INT            (0x00040000)
-+#define INT_STS_PHY_INT_              (0x00020000)
-+#define INT_STS_MAC_ERR_INT           (0x00008000)
-+#define INT_STS_TDFU                  (0x00004000)
-+#define INT_STS_TDFO                  (0x00002000)
-+#define INT_STS_GPIOS                 (0x00000FFF)
-+#define INT_STS_CLEAR_ALL             (0xFFFFFFFF)
-+
-+#define HW_CFG                                (0x0010)
-+#define HW_CFG_SMDET_STS              (0x00008000)
-+#define HW_CFG_SMDET_EN                       (0x00004000)
-+#define HW_CFG_EEM                    (0x00002000)
-+#define HW_CFG_RST_PROTECT            (0x00001000)
-+#define HW_CFG_PORT_SWAP              (0x00000800)
-+#define HW_CFG_PHY_BOOST              (0x00000600)
-+#define HW_CFG_PHY_BOOST_NORMAL               (0x00000000)
-+#define HW_CFG_PHY_BOOST_4            (0x00002000)
-+#define HW_CFG_PHY_BOOST_8            (0x00004000)
-+#define HW_CFG_PHY_BOOST_12           (0x00006000)
-+#define HW_CFG_LEDB                   (0x00000100)
-+#define HW_CFG_BIR                    (0x00000080)
-+#define HW_CFG_SBP                    (0x00000040)
-+#define HW_CFG_IME                    (0x00000020)
-+#define HW_CFG_MEF                    (0x00000010)
-+#define HW_CFG_ETC                    (0x00000008)
-+#define HW_CFG_BCE                    (0x00000004)
-+#define HW_CFG_LRST                   (0x00000002)
-+#define HW_CFG_SRST                   (0x00000001)
-+
-+#define PMT_CTL                               (0x0014)
-+#define PMT_CTL_PHY_PWRUP             (0x00000400)
-+#define PMT_CTL_RES_CLR_WKP_EN                (0x00000100)
-+#define PMT_CTL_DEV_RDY                       (0x00000080)
-+#define PMT_CTL_SUS_MODE              (0x00000060)
-+#define PMT_CTL_SUS_MODE_0            (0x00000000)
-+#define PMT_CTL_SUS_MODE_1            (0x00000020)
-+#define PMT_CTL_SUS_MODE_2            (0x00000040)
-+#define PMT_CTL_SUS_MODE_3            (0x00000060)
-+#define PMT_CTL_PHY_RST                       (0x00000010)
-+#define PMT_CTL_WOL_EN                        (0x00000008)
-+#define PMT_CTL_ED_EN                 (0x00000004)
-+#define PMT_CTL_WUPS                  (0x00000003)
-+#define PMT_CTL_WUPS_NO                       (0x00000000)
-+#define PMT_CTL_WUPS_ED                       (0x00000001)
-+#define PMT_CTL_WUPS_WOL              (0x00000002)
-+#define PMT_CTL_WUPS_MULTI            (0x00000003)
-+
-+#define LED_GPIO_CFG                  (0x0018)
-+#define LED_GPIO_CFG_LED2_FUN_SEL     (0x80000000)
-+#define LED_GPIO_CFG_LED10_FUN_SEL    (0x40000000)
-+#define LED_GPIO_CFG_LEDGPIO_EN               (0x0000F000)
-+#define LED_GPIO_CFG_LEDGPIO_EN_0     (0x00001000)
-+#define LED_GPIO_CFG_LEDGPIO_EN_1     (0x00002000)
-+#define LED_GPIO_CFG_LEDGPIO_EN_2     (0x00004000)
-+#define LED_GPIO_CFG_LEDGPIO_EN_3     (0x00008000)
-+#define LED_GPIO_CFG_GPBUF            (0x00000F00)
-+#define LED_GPIO_CFG_GPBUF_0          (0x00000100)
-+#define LED_GPIO_CFG_GPBUF_1          (0x00000200)
-+#define LED_GPIO_CFG_GPBUF_2          (0x00000400)
-+#define LED_GPIO_CFG_GPBUF_3          (0x00000800)
-+#define LED_GPIO_CFG_GPDIR            (0x000000F0)
-+#define LED_GPIO_CFG_GPDIR_0          (0x00000010)
-+#define LED_GPIO_CFG_GPDIR_1          (0x00000020)
-+#define LED_GPIO_CFG_GPDIR_2          (0x00000040)
-+#define LED_GPIO_CFG_GPDIR_3          (0x00000080)
-+#define LED_GPIO_CFG_GPDATA           (0x0000000F)
-+#define LED_GPIO_CFG_GPDATA_0         (0x00000001)
-+#define LED_GPIO_CFG_GPDATA_1         (0x00000002)
-+#define LED_GPIO_CFG_GPDATA_2         (0x00000004)
-+#define LED_GPIO_CFG_GPDATA_3         (0x00000008)
-+
-+#define GPIO_CFG                      (0x001C)
-+#define GPIO_CFG_SHIFT                        (24)
-+#define GPIO_CFG_GPEN                 (0xFF000000)
-+#define GPIO_CFG_GPBUF                        (0x00FF0000)
-+#define GPIO_CFG_GPDIR                        (0x0000FF00)
-+#define GPIO_CFG_GPDATA                       (0x000000FF)
-+
-+#define GPIO_WAKE                     (0x0020)
-+#define GPIO_WAKE_PHY_LINKUP_EN               (0x80000000)
-+#define GPIO_WAKE_POL                 (0x0FFF0000)
-+#define GPIO_WAKE_POL_SHIFT           (16)
-+#define GPIO_WAKE_WK                  (0x00000FFF)
-+
-+#define DP_SEL                                (0x0024)
-+#define DP_SEL_DPRDY                  (0x80000000)
-+#define DP_SEL_RSEL                   (0x0000000F)
-+#define DP_SEL_URX                    (0x00000000)
-+#define DP_SEL_VHF                    (0x00000001)
-+#define DP_SEL_VHF_HASH_LEN           (16)
-+#define DP_SEL_VHF_VLAN_LEN           (128)
-+#define DP_SEL_LSO_HEAD                       (0x00000002)
-+#define DP_SEL_FCT_RX                 (0x00000003)
-+#define DP_SEL_FCT_TX                 (0x00000004)
-+#define DP_SEL_DESCRIPTOR             (0x00000005)
-+#define DP_SEL_WOL                    (0x00000006)
-+
-+#define DP_CMD                                (0x0028)
-+#define DP_CMD_WRITE                  (0x01)
-+#define DP_CMD_READ                   (0x00)
-+
-+#define DP_ADDR                               (0x002C)
-+
-+#define DP_DATA                               (0x0030)
-+
-+#define BURST_CAP                     (0x0034)
-+#define BURST_CAP_MASK                        (0x0000000F)
-+
-+#define INT_EP_CTL                    (0x0038)
-+#define INT_EP_CTL_INTEP_ON           (0x80000000)
-+#define INT_EP_CTL_RDFO_EN            (0x00400000)
-+#define INT_EP_CTL_TXE_EN             (0x00200000)
-+#define INT_EP_CTL_MACROTO_EN         (0x00100000)
-+#define INT_EP_CTL_TX_DIS_EN          (0x00080000)
-+#define INT_EP_CTL_RX_DIS_EN          (0x00040000)
-+#define INT_EP_CTL_PHY_EN_            (0x00020000)
-+#define INT_EP_CTL_MAC_ERR_EN         (0x00008000)
-+#define INT_EP_CTL_TDFU_EN            (0x00004000)
-+#define INT_EP_CTL_TDFO_EN            (0x00002000)
-+#define INT_EP_CTL_RX_FIFO_EN         (0x00001000)
-+#define INT_EP_CTL_GPIOX_EN           (0x00000FFF)
-+
-+#define BULK_IN_DLY                   (0x003C)
-+#define BULK_IN_DLY_MASK              (0xFFFF)
-+
-+#define E2P_CMD                               (0x0040)
-+#define E2P_CMD_BUSY                  (0x80000000)
-+#define E2P_CMD_MASK                  (0x70000000)
-+#define E2P_CMD_READ                  (0x00000000)
-+#define E2P_CMD_EWDS                  (0x10000000)
-+#define E2P_CMD_EWEN                  (0x20000000)
-+#define E2P_CMD_WRITE                 (0x30000000)
-+#define E2P_CMD_WRAL                  (0x40000000)
-+#define E2P_CMD_ERASE                 (0x50000000)
-+#define E2P_CMD_ERAL                  (0x60000000)
-+#define E2P_CMD_RELOAD                        (0x70000000)
-+#define E2P_CMD_TIMEOUT                       (0x00000400)
-+#define E2P_CMD_LOADED                        (0x00000200)
-+#define E2P_CMD_ADDR                  (0x000001FF)
-+
-+#define MAX_EEPROM_SIZE                       (512)
-+
-+#define E2P_DATA                      (0x0044)
-+#define E2P_DATA_MASK_                        (0x000000FF)
-+
-+#define RFE_CTL                               (0x0060)
-+#define RFE_CTL_TCPUDP_CKM            (0x00001000)
-+#define RFE_CTL_IP_CKM                        (0x00000800)
-+#define RFE_CTL_AB                    (0x00000400)
-+#define RFE_CTL_AM                    (0x00000200)
-+#define RFE_CTL_AU                    (0x00000100)
-+#define RFE_CTL_VS                    (0x00000080)
-+#define RFE_CTL_UF                    (0x00000040)
-+#define RFE_CTL_VF                    (0x00000020)
-+#define RFE_CTL_SPF                   (0x00000010)
-+#define RFE_CTL_MHF                   (0x00000008)
-+#define RFE_CTL_DHF                   (0x00000004)
-+#define RFE_CTL_DPF                   (0x00000002)
-+#define RFE_CTL_RST_RF                        (0x00000001)
-+
-+#define VLAN_TYPE                     (0x0064)
-+#define VLAN_TYPE_MASK                        (0x0000FFFF)
-+
-+#define FCT_RX_CTL                    (0x0090)
-+#define FCT_RX_CTL_EN                 (0x80000000)
-+#define FCT_RX_CTL_RST                        (0x40000000)
-+#define FCT_RX_CTL_SBF                        (0x02000000)
-+#define FCT_RX_CTL_OVERFLOW           (0x01000000)
-+#define FCT_RX_CTL_FRM_DROP           (0x00800000)
-+#define FCT_RX_CTL_RX_NOT_EMPTY               (0x00400000)
-+#define FCT_RX_CTL_RX_EMPTY           (0x00200000)
-+#define FCT_RX_CTL_RX_DISABLED                (0x00100000)
-+#define FCT_RX_CTL_RXUSED             (0x0000FFFF)
-+
-+#define FCT_TX_CTL                    (0x0094)
-+#define FCT_TX_CTL_EN                 (0x80000000)
-+#define FCT_TX_CTL_RST                        (0x40000000)
-+#define FCT_TX_CTL_TX_NOT_EMPTY               (0x00400000)
-+#define FCT_TX_CTL_TX_EMPTY           (0x00200000)
-+#define FCT_TX_CTL_TX_DISABLED                (0x00100000)
-+#define FCT_TX_CTL_TXUSED             (0x0000FFFF)
-+
-+#define FCT_RX_FIFO_END                       (0x0098)
-+#define FCT_RX_FIFO_END_MASK          (0x0000007F)
-+
-+#define FCT_TX_FIFO_END                       (0x009C)
-+#define FCT_TX_FIFO_END_MASK          (0x0000003F)
-+
-+#define FCT_FLOW                      (0x00A0)
-+#define FCT_FLOW_THRESHOLD_OFF                (0x00007F00)
-+#define FCT_FLOW_THRESHOLD_OFF_SHIFT  (8)
-+#define FCT_FLOW_THRESHOLD_ON         (0x0000007F)
-+
-+/* MAC CSRs */
-+#define MAC_CR                                (0x100)
-+#define MAC_CR_ADP                    (0x00002000)
-+#define MAC_CR_ADD                    (0x00001000)
-+#define MAC_CR_ASD                    (0x00000800)
-+#define MAC_CR_INT_LOOP                       (0x00000400)
-+#define MAC_CR_BOLMT                  (0x000000C0)
-+#define MAC_CR_FDPX                   (0x00000008)
-+#define MAC_CR_CFG                    (0x00000006)
-+#define MAC_CR_CFG_10                 (0x00000000)
-+#define MAC_CR_CFG_100                        (0x00000002)
-+#define MAC_CR_CFG_1000                       (0x00000004)
-+#define MAC_CR_RST                    (0x00000001)
-+
-+#define MAC_RX                                (0x104)
-+#define MAC_RX_MAX_SIZE                       (0x3FFF0000)
-+#define MAC_RX_MAX_SIZE_SHIFT         (16)
-+#define MAC_RX_FCS_STRIP              (0x00000010)
-+#define MAC_RX_FSE                    (0x00000004)
-+#define MAC_RX_RXD                    (0x00000002)
-+#define MAC_RX_RXEN                   (0x00000001)
-+
-+#define MAC_TX                                (0x108)
-+#define MAC_TX_BFCS                   (0x00000004)
-+#define MAC_TX_TXD                    (0x00000002)
-+#define MAC_TX_TXEN                   (0x00000001)
-+
-+#define FLOW                          (0x10C)
-+#define FLOW_FORCE_FC                 (0x80000000)
-+#define FLOW_TX_FCEN                  (0x40000000)
-+#define FLOW_RX_FCEN                  (0x20000000)
-+#define FLOW_FPF                      (0x10000000)
-+#define FLOW_PAUSE_TIME                       (0x0000FFFF)
-+
-+#define RAND_SEED                     (0x110)
-+#define RAND_SEED_MASK                        (0x0000FFFF)
-+
-+#define ERR_STS                               (0x114)
-+#define ERR_STS_FCS_ERR                       (0x00000100)
-+#define ERR_STS_LFRM_ERR              (0x00000080)
-+#define ERR_STS_RUNT_ERR              (0x00000040)
-+#define ERR_STS_COLLISION_ERR         (0x00000010)
-+#define ERR_STS_ALIGN_ERR             (0x00000008)
-+#define ERR_STS_URUN_ERR              (0x00000004)
-+
-+#define RX_ADDRH                      (0x118)
-+#define RX_ADDRH_MASK                 (0x0000FFFF)
-+
-+#define RX_ADDRL                      (0x11C)
-+
-+#define MII_ACCESS                    (0x120)
-+#define MII_ACCESS_PHY_ADDR           (0x0000F800)
-+#define MII_ACCESS_PHY_ADDR_SHIFT     (11)
-+#define MII_ACCESS_REG_ADDR           (0x000007C0)
-+#define MII_ACCESS_REG_ADDR_SHIFT     (6)
-+#define MII_ACCESS_READ                       (0x00000000)
-+#define MII_ACCESS_WRITE              (0x00000002)
-+#define MII_ACCESS_BUSY                       (0x00000001)
-+
-+#define MII_DATA                      (0x124)
-+#define MII_DATA_MASK                 (0x0000FFFF)
-+
-+#define WUCSR                         (0x140)
-+#define WUCSR_PFDA_FR                 (0x00000080)
-+#define WUCSR_WUFR                    (0x00000040)
-+#define WUCSR_MPR                     (0x00000020)
-+#define WUCSR_BCAST_FR                        (0x00000010)
-+#define WUCSR_PFDA_EN                 (0x00000008)
-+#define WUCSR_WUEN                    (0x00000004)
-+#define WUCSR_MPEN                    (0x00000002)
-+#define WUCSR_BCST_EN                 (0x00000001)
-+
-+#define WUF_CFGX                      (0x144)
-+#define WUF_CFGX_EN                   (0x80000000)
-+#define WUF_CFGX_ATYPE                        (0x03000000)
-+#define WUF_CFGX_ATYPE_UNICAST                (0x00000000)
-+#define WUF_CFGX_ATYPE_MULTICAST      (0x02000000)
-+#define WUF_CFGX_ATYPE_ALL            (0x03000000)
-+#define WUF_CFGX_PATTERN_OFFSET               (0x007F0000)
-+#define WUF_CFGX_PATTERN_OFFSET_SHIFT (16)
-+#define WUF_CFGX_CRC16                        (0x0000FFFF)
-+#define WUF_NUM                               (8)
-+
-+#define WUF_MASKX                     (0x170)
-+#define WUF_MASKX_AVALID              (0x80000000)
-+#define WUF_MASKX_ATYPE                       (0x40000000)
-+
-+#define ADDR_FILTX                    (0x300)
-+#define ADDR_FILTX_FB_VALID           (0x80000000)
-+#define ADDR_FILTX_FB_TYPE            (0x40000000)
-+#define ADDR_FILTX_FB_ADDRHI          (0x0000FFFF)
-+#define ADDR_FILTX_SB_ADDRLO          (0xFFFFFFFF)
-+
-+#define WUCSR2                                (0x500)
-+#define WUCSR2_NS_RCD                 (0x00000040)
-+#define WUCSR2_ARP_RCD                        (0x00000020)
-+#define WUCSR2_TCPSYN_RCD             (0x00000010)
-+#define WUCSR2_NS_OFFLOAD             (0x00000004)
-+#define WUCSR2_ARP_OFFLOAD            (0x00000002)
-+#define WUCSR2_TCPSYN_OFFLOAD         (0x00000001)
-+
-+#define WOL_FIFO_STS                  (0x504)
-+
-+#define IPV6_ADDRX                    (0x510)
-+
-+#define IPV4_ADDRX                    (0x590)
-+
-+
-+/* Vendor-specific PHY Definitions */
-+
-+/* Mode Control/Status Register */
-+#define PHY_MODE_CTRL_STS             (17)
-+#define MODE_CTRL_STS_EDPWRDOWN               ((u16)0x2000)
-+#define MODE_CTRL_STS_ENERGYON                ((u16)0x0002)
-+
-+#define PHY_INT_SRC                   (29)
-+#define PHY_INT_SRC_ENERGY_ON         ((u16)0x0080)
-+#define PHY_INT_SRC_ANEG_COMP         ((u16)0x0040)
-+#define PHY_INT_SRC_REMOTE_FAULT      ((u16)0x0020)
-+#define PHY_INT_SRC_LINK_DOWN         ((u16)0x0010)
-+#define PHY_INT_SRC_CLEAR_ALL         ((u16)0xffff)
-+
-+#define PHY_INT_MASK                  (30)
-+#define PHY_INT_MASK_ENERGY_ON                ((u16)0x0080)
-+#define PHY_INT_MASK_ANEG_COMP                ((u16)0x0040)
-+#define PHY_INT_MASK_REMOTE_FAULT     ((u16)0x0020)
-+#define PHY_INT_MASK_LINK_DOWN                ((u16)0x0010)
-+#define PHY_INT_MASK_DEFAULT          (PHY_INT_MASK_ANEG_COMP | \
-+                                       PHY_INT_MASK_LINK_DOWN)
-+
-+#define PHY_SPECIAL                   (31)
-+#define PHY_SPECIAL_SPD                       ((u16)0x001C)
-+#define PHY_SPECIAL_SPD_10HALF                ((u16)0x0004)
-+#define PHY_SPECIAL_SPD_10FULL                ((u16)0x0014)
-+#define PHY_SPECIAL_SPD_100HALF               ((u16)0x0008)
-+#define PHY_SPECIAL_SPD_100FULL               ((u16)0x0018)
-+
-+/* USB Vendor Requests */
-+#define USB_VENDOR_REQUEST_WRITE_REGISTER     0xA0
-+#define USB_VENDOR_REQUEST_READ_REGISTER      0xA1
-+#define USB_VENDOR_REQUEST_GET_STATS          0xA2
-+
-+/* Interrupt Endpoint status word bitfields */
-+#define INT_ENP_RDFO_INT              ((u32)BIT(22))
-+#define INT_ENP_TXE_INT                       ((u32)BIT(21))
-+#define INT_ENP_TX_DIS_INT            ((u32)BIT(19))
-+#define INT_ENP_RX_DIS_INT            ((u32)BIT(18))
-+#define INT_ENP_PHY_INT                       ((u32)BIT(17))
-+#define INT_ENP_MAC_ERR_INT           ((u32)BIT(15))
-+#define INT_ENP_RX_FIFO_DATA_INT      ((u32)BIT(12))
-+
-+#endif /* _SMSC75XX_H */
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/smsc95xx.c backports-4.2.6-1/drivers/net/usb/smsc95xx.c
---- backports-4.2.6-1.org/drivers/net/usb/smsc95xx.c   1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/smsc95xx.c       2016-06-28 14:35:18.011973884 +0200
-@@ -0,0 +1,2032 @@
-+ /***************************************************************************
-+ *
-+ * Copyright (C) 2007-2008 SMSC
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ *
-+ *****************************************************************************/
-+
-+#include <linux/module.h>
-+#include <linux/kmod.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/bitrev.h>
-+#include <linux/crc16.h>
-+#include <linux/crc32.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/slab.h>
-+#include "smsc95xx.h"
-+
-+#define SMSC_CHIPNAME                 "smsc95xx"
-+#define SMSC_DRIVER_VERSION           "1.0.4"
-+#define HS_USB_PKT_SIZE                       (512)
-+#define FS_USB_PKT_SIZE                       (64)
-+#define DEFAULT_HS_BURST_CAP_SIZE     (16 * 1024 + 5 * HS_USB_PKT_SIZE)
-+#define DEFAULT_FS_BURST_CAP_SIZE     (6 * 1024 + 33 * FS_USB_PKT_SIZE)
-+#define DEFAULT_BULK_IN_DELAY         (0x00002000)
-+#define MAX_SINGLE_PACKET_SIZE                (2048)
-+#define LAN95XX_EEPROM_MAGIC          (0x9500)
-+#define EEPROM_MAC_OFFSET             (0x01)
-+#define DEFAULT_TX_CSUM_ENABLE                (true)
-+#define DEFAULT_RX_CSUM_ENABLE                (true)
-+#define SMSC95XX_INTERNAL_PHY_ID      (1)
-+#define SMSC95XX_TX_OVERHEAD          (8)
-+#define SMSC95XX_TX_OVERHEAD_CSUM     (12)
-+#define SUPPORTED_WAKE                        (WAKE_PHY | WAKE_UCAST | WAKE_BCAST | \
-+                                       WAKE_MCAST | WAKE_ARP | WAKE_MAGIC)
-+
-+#define FEATURE_8_WAKEUP_FILTERS      (0x01)
-+#define FEATURE_PHY_NLP_CROSSOVER     (0x02)
-+#define FEATURE_REMOTE_WAKEUP         (0x04)
-+
-+#define SUSPEND_SUSPEND0              (0x01)
-+#define SUSPEND_SUSPEND1              (0x02)
-+#define SUSPEND_SUSPEND2              (0x04)
-+#define SUSPEND_SUSPEND3              (0x08)
-+#define SUSPEND_ALLMODES              (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
-+                                       SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3)
-+
-+struct smsc95xx_priv {
-+      u32 mac_cr;
-+      u32 hash_hi;
-+      u32 hash_lo;
-+      u32 wolopts;
-+      spinlock_t mac_cr_lock;
-+      u8 features;
-+      u8 suspend_flags;
-+};
-+
-+static bool turbo_mode = true;
-+module_param(turbo_mode, bool, 0644);
-+MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
-+
-+static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
-+                                          u32 *data, int in_pm)
-+{
-+      u32 buf;
-+      int ret;
-+      int (*fn)(struct usbnet *, u8, u8, u16, u16, void *, u16);
-+
-+      BUG_ON(!dev);
-+
-+      if (!in_pm)
-+              fn = usbnet_read_cmd;
-+      else
-+              fn = usbnet_read_cmd_nopm;
-+
-+      ret = fn(dev, USB_VENDOR_REQUEST_READ_REGISTER, USB_DIR_IN
-+               | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+               0, index, &buf, 4);
-+      if (unlikely(ret < 0))
-+              netdev_warn(dev->net, "Failed to read reg index 0x%08x: %d\n",
-+                          index, ret);
-+
-+      le32_to_cpus(&buf);
-+      *data = buf;
-+
-+      return ret;
-+}
-+
-+static int __must_check __smsc95xx_write_reg(struct usbnet *dev, u32 index,
-+                                           u32 data, int in_pm)
-+{
-+      u32 buf;
-+      int ret;
-+      int (*fn)(struct usbnet *, u8, u8, u16, u16, const void *, u16);
-+
-+      BUG_ON(!dev);
-+
-+      if (!in_pm)
-+              fn = usbnet_write_cmd;
-+      else
-+              fn = usbnet_write_cmd_nopm;
-+
-+      buf = data;
-+      cpu_to_le32s(&buf);
-+
-+      ret = fn(dev, USB_VENDOR_REQUEST_WRITE_REGISTER, USB_DIR_OUT
-+               | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-+               0, index, &buf, 4);
-+      if (unlikely(ret < 0))
-+              netdev_warn(dev->net, "Failed to write reg index 0x%08x: %d\n",
-+                          index, ret);
-+
-+      return ret;
-+}
-+
-+static int __must_check smsc95xx_read_reg_nopm(struct usbnet *dev, u32 index,
-+                                             u32 *data)
-+{
-+      return __smsc95xx_read_reg(dev, index, data, 1);
-+}
-+
-+static int __must_check smsc95xx_write_reg_nopm(struct usbnet *dev, u32 index,
-+                                              u32 data)
-+{
-+      return __smsc95xx_write_reg(dev, index, data, 1);
-+}
-+
-+static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index,
-+                                        u32 *data)
-+{
-+      return __smsc95xx_read_reg(dev, index, data, 0);
-+}
-+
-+static int __must_check smsc95xx_write_reg(struct usbnet *dev, u32 index,
-+                                         u32 data)
-+{
-+      return __smsc95xx_write_reg(dev, index, data, 0);
-+}
-+
-+/* Loop until the read is completed with timeout
-+ * called with phy_mutex held */
-+static int __must_check __smsc95xx_phy_wait_not_busy(struct usbnet *dev,
-+                                                   int in_pm)
-+{
-+      unsigned long start_time = jiffies;
-+      u32 val;
-+      int ret;
-+
-+      do {
-+              ret = __smsc95xx_read_reg(dev, MII_ADDR, &val, in_pm);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading MII_ACCESS\n");
-+                      return ret;
-+              }
-+
-+              if (!(val & MII_BUSY_))
-+                      return 0;
-+      } while (!time_after(jiffies, start_time + HZ));
-+
-+      return -EIO;
-+}
-+
-+static int __smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx,
-+                              int in_pm)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      u32 val, addr;
-+      int ret;
-+
-+      mutex_lock(&dev->phy_mutex);
-+
-+      /* confirm MII not busy */
-+      ret = __smsc95xx_phy_wait_not_busy(dev, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "MII is busy in smsc95xx_mdio_read\n");
-+              goto done;
-+      }
-+
-+      /* set the address, index & direction (read from PHY) */
-+      phy_id &= dev->mii.phy_id_mask;
-+      idx &= dev->mii.reg_num_mask;
-+      addr = (phy_id << 11) | (idx << 6) | MII_READ_ | MII_BUSY_;
-+      ret = __smsc95xx_write_reg(dev, MII_ADDR, addr, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing MII_ADDR\n");
-+              goto done;
-+      }
-+
-+      ret = __smsc95xx_phy_wait_not_busy(dev, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Timed out reading MII reg %02X\n", idx);
-+              goto done;
-+      }
-+
-+      ret = __smsc95xx_read_reg(dev, MII_DATA, &val, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error reading MII_DATA\n");
-+              goto done;
-+      }
-+
-+      ret = (u16)(val & 0xFFFF);
-+
-+done:
-+      mutex_unlock(&dev->phy_mutex);
-+      return ret;
-+}
-+
-+static void __smsc95xx_mdio_write(struct net_device *netdev, int phy_id,
-+                                int idx, int regval, int in_pm)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      u32 val, addr;
-+      int ret;
-+
-+      mutex_lock(&dev->phy_mutex);
-+
-+      /* confirm MII not busy */
-+      ret = __smsc95xx_phy_wait_not_busy(dev, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "MII is busy in smsc95xx_mdio_write\n");
-+              goto done;
-+      }
-+
-+      val = regval;
-+      ret = __smsc95xx_write_reg(dev, MII_DATA, val, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing MII_DATA\n");
-+              goto done;
-+      }
-+
-+      /* set the address, index & direction (write to PHY) */
-+      phy_id &= dev->mii.phy_id_mask;
-+      idx &= dev->mii.reg_num_mask;
-+      addr = (phy_id << 11) | (idx << 6) | MII_WRITE_ | MII_BUSY_;
-+      ret = __smsc95xx_write_reg(dev, MII_ADDR, addr, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing MII_ADDR\n");
-+              goto done;
-+      }
-+
-+      ret = __smsc95xx_phy_wait_not_busy(dev, in_pm);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Timed out writing MII reg %02X\n", idx);
-+              goto done;
-+      }
-+
-+done:
-+      mutex_unlock(&dev->phy_mutex);
-+}
-+
-+static int smsc95xx_mdio_read_nopm(struct net_device *netdev, int phy_id,
-+                                 int idx)
-+{
-+      return __smsc95xx_mdio_read(netdev, phy_id, idx, 1);
-+}
-+
-+static void smsc95xx_mdio_write_nopm(struct net_device *netdev, int phy_id,
-+                                   int idx, int regval)
-+{
-+      __smsc95xx_mdio_write(netdev, phy_id, idx, regval, 1);
-+}
-+
-+static int smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx)
-+{
-+      return __smsc95xx_mdio_read(netdev, phy_id, idx, 0);
-+}
-+
-+static void smsc95xx_mdio_write(struct net_device *netdev, int phy_id, int idx,
-+                              int regval)
-+{
-+      __smsc95xx_mdio_write(netdev, phy_id, idx, regval, 0);
-+}
-+
-+static int __must_check smsc95xx_wait_eeprom(struct usbnet *dev)
-+{
-+      unsigned long start_time = jiffies;
-+      u32 val;
-+      int ret;
-+
-+      do {
-+              ret = smsc95xx_read_reg(dev, E2P_CMD, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading E2P_CMD\n");
-+                      return ret;
-+              }
-+
-+              if (!(val & E2P_CMD_BUSY_) || (val & E2P_CMD_TIMEOUT_))
-+                      break;
-+              udelay(40);
-+      } while (!time_after(jiffies, start_time + HZ));
-+
-+      if (val & (E2P_CMD_TIMEOUT_ | E2P_CMD_BUSY_)) {
-+              netdev_warn(dev->net, "EEPROM read operation timeout\n");
-+              return -EIO;
-+      }
-+
-+      return 0;
-+}
-+
-+static int __must_check smsc95xx_eeprom_confirm_not_busy(struct usbnet *dev)
-+{
-+      unsigned long start_time = jiffies;
-+      u32 val;
-+      int ret;
-+
-+      do {
-+              ret = smsc95xx_read_reg(dev, E2P_CMD, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading E2P_CMD\n");
-+                      return ret;
-+              }
-+
-+              if (!(val & E2P_CMD_BUSY_))
-+                      return 0;
-+
-+              udelay(40);
-+      } while (!time_after(jiffies, start_time + HZ));
-+
-+      netdev_warn(dev->net, "EEPROM is busy\n");
-+      return -EIO;
-+}
-+
-+static int smsc95xx_read_eeprom(struct usbnet *dev, u32 offset, u32 length,
-+                              u8 *data)
-+{
-+      u32 val;
-+      int i, ret;
-+
-+      BUG_ON(!dev);
-+      BUG_ON(!data);
-+
-+      ret = smsc95xx_eeprom_confirm_not_busy(dev);
-+      if (ret)
-+              return ret;
-+
-+      for (i = 0; i < length; i++) {
-+              val = E2P_CMD_BUSY_ | E2P_CMD_READ_ | (offset & E2P_CMD_ADDR_);
-+              ret = smsc95xx_write_reg(dev, E2P_CMD, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing E2P_CMD\n");
-+                      return ret;
-+              }
-+
-+              ret = smsc95xx_wait_eeprom(dev);
-+              if (ret < 0)
-+                      return ret;
-+
-+              ret = smsc95xx_read_reg(dev, E2P_DATA, &val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error reading E2P_DATA\n");
-+                      return ret;
-+              }
-+
-+              data[i] = val & 0xFF;
-+              offset++;
-+      }
-+
-+      return 0;
-+}
-+
-+static int smsc95xx_write_eeprom(struct usbnet *dev, u32 offset, u32 length,
-+                               u8 *data)
-+{
-+      u32 val;
-+      int i, ret;
-+
-+      BUG_ON(!dev);
-+      BUG_ON(!data);
-+
-+      ret = smsc95xx_eeprom_confirm_not_busy(dev);
-+      if (ret)
-+              return ret;
-+
-+      /* Issue write/erase enable command */
-+      val = E2P_CMD_BUSY_ | E2P_CMD_EWEN_;
-+      ret = smsc95xx_write_reg(dev, E2P_CMD, val);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Error writing E2P_DATA\n");
-+              return ret;
-+      }
-+
-+      ret = smsc95xx_wait_eeprom(dev);
-+      if (ret < 0)
-+              return ret;
-+
-+      for (i = 0; i < length; i++) {
-+
-+              /* Fill data register */
-+              val = data[i];
-+              ret = smsc95xx_write_reg(dev, E2P_DATA, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing E2P_DATA\n");
-+                      return ret;
-+              }
-+
-+              /* Send "write" command */
-+              val = E2P_CMD_BUSY_ | E2P_CMD_WRITE_ | (offset & E2P_CMD_ADDR_);
-+              ret = smsc95xx_write_reg(dev, E2P_CMD, val);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "Error writing E2P_CMD\n");
-+                      return ret;
-+              }
-+
-+              ret = smsc95xx_wait_eeprom(dev);
-+              if (ret < 0)
-+                      return ret;
-+
-+              offset++;
-+      }
-+
-+      return 0;
-+}
-+
-+static int __must_check smsc95xx_write_reg_async(struct usbnet *dev, u16 index,
-+                                               u32 data)
-+{
-+      const u16 size = 4;
-+      u32 buf;
-+      int ret;
-+
-+      buf = data;
-+      cpu_to_le32s(&buf);
-+
-+      ret = usbnet_write_cmd_async(dev, USB_VENDOR_REQUEST_WRITE_REGISTER,
-+                                   USB_DIR_OUT | USB_TYPE_VENDOR |
-+                                   USB_RECIP_DEVICE,
-+                                   0, index, &buf, size);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "Error write async cmd, sts=%d\n",
-+                          ret);
-+      return ret;
-+}
-+
-+/* returns hash bit number for given MAC address
-+ * example:
-+ * 01 00 5E 00 00 01 -> returns bit number 31 */
-+static unsigned int smsc95xx_hash(char addr[ETH_ALEN])
-+{
-+      return (ether_crc(ETH_ALEN, addr) >> 26) & 0x3f;
-+}
-+
-+static void smsc95xx_set_multicast(struct net_device *netdev)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      unsigned long flags;
-+      int ret;
-+
-+      pdata->hash_hi = 0;
-+      pdata->hash_lo = 0;
-+
-+      spin_lock_irqsave(&pdata->mac_cr_lock, flags);
-+
-+      if (dev->net->flags & IFF_PROMISC) {
-+              netif_dbg(dev, drv, dev->net, "promiscuous mode enabled\n");
-+              pdata->mac_cr |= MAC_CR_PRMS_;
-+              pdata->mac_cr &= ~(MAC_CR_MCPAS_ | MAC_CR_HPFILT_);
-+      } else if (dev->net->flags & IFF_ALLMULTI) {
-+              netif_dbg(dev, drv, dev->net, "receive all multicast enabled\n");
-+              pdata->mac_cr |= MAC_CR_MCPAS_;
-+              pdata->mac_cr &= ~(MAC_CR_PRMS_ | MAC_CR_HPFILT_);
-+      } else if (!netdev_mc_empty(dev->net)) {
-+              struct netdev_hw_addr *ha;
-+
-+              pdata->mac_cr |= MAC_CR_HPFILT_;
-+              pdata->mac_cr &= ~(MAC_CR_PRMS_ | MAC_CR_MCPAS_);
-+
-+              netdev_for_each_mc_addr(ha, netdev) {
-+                      u32 bitnum = smsc95xx_hash(ha->addr);
-+                      u32 mask = 0x01 << (bitnum & 0x1F);
-+                      if (bitnum & 0x20)
-+                              pdata->hash_hi |= mask;
-+                      else
-+                              pdata->hash_lo |= mask;
-+              }
-+
-+              netif_dbg(dev, drv, dev->net, "HASHH=0x%08X, HASHL=0x%08X\n",
-+                                 pdata->hash_hi, pdata->hash_lo);
-+      } else {
-+              netif_dbg(dev, drv, dev->net, "receive own packets only\n");
-+              pdata->mac_cr &=
-+                      ~(MAC_CR_PRMS_ | MAC_CR_MCPAS_ | MAC_CR_HPFILT_);
-+      }
-+
-+      spin_unlock_irqrestore(&pdata->mac_cr_lock, flags);
-+
-+      /* Initiate async writes, as we can't wait for completion here */
-+      ret = smsc95xx_write_reg_async(dev, HASHH, pdata->hash_hi);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "failed to initiate async write to HASHH\n");
-+
-+      ret = smsc95xx_write_reg_async(dev, HASHL, pdata->hash_lo);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "failed to initiate async write to HASHL\n");
-+
-+      ret = smsc95xx_write_reg_async(dev, MAC_CR, pdata->mac_cr);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "failed to initiate async write to MAC_CR\n");
-+}
-+
-+static int smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
-+                                         u16 lcladv, u16 rmtadv)
-+{
-+      u32 flow, afc_cfg = 0;
-+
-+      int ret = smsc95xx_read_reg(dev, AFC_CFG, &afc_cfg);
-+      if (ret < 0)
-+              return ret;
-+
-+      if (duplex == DUPLEX_FULL) {
-+              u8 cap = mii_resolve_flowctrl_fdx(lcladv, rmtadv);
-+
-+              if (cap & FLOW_CTRL_RX)
-+                      flow = 0xFFFF0002;
-+              else
-+                      flow = 0;
-+
-+              if (cap & FLOW_CTRL_TX)
-+                      afc_cfg |= 0xF;
-+              else
-+                      afc_cfg &= ~0xF;
-+
-+              netif_dbg(dev, link, dev->net, "rx pause %s, tx pause %s\n",
-+                                 cap & FLOW_CTRL_RX ? "enabled" : "disabled",
-+                                 cap & FLOW_CTRL_TX ? "enabled" : "disabled");
-+      } else {
-+              netif_dbg(dev, link, dev->net, "half duplex\n");
-+              flow = 0;
-+              afc_cfg |= 0xF;
-+      }
-+
-+      ret = smsc95xx_write_reg(dev, FLOW, flow);
-+      if (ret < 0)
-+              return ret;
-+
-+      return smsc95xx_write_reg(dev, AFC_CFG, afc_cfg);
-+}
-+
-+static int smsc95xx_link_reset(struct usbnet *dev)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      struct mii_if_info *mii = &dev->mii;
-+      struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
-+      unsigned long flags;
-+      u16 lcladv, rmtadv;
-+      int ret;
-+
-+      /* clear interrupt status */
-+      ret = smsc95xx_mdio_read(dev->net, mii->phy_id, PHY_INT_SRC);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL_);
-+      if (ret < 0)
-+              return ret;
-+
-+      mii_check_media(mii, 1, 1);
-+      mii_ethtool_gset(&dev->mii, &ecmd);
-+      lcladv = smsc95xx_mdio_read(dev->net, mii->phy_id, MII_ADVERTISE);
-+      rmtadv = smsc95xx_mdio_read(dev->net, mii->phy_id, MII_LPA);
-+
-+      netif_dbg(dev, link, dev->net,
-+                "speed: %u duplex: %d lcladv: %04x rmtadv: %04x\n",
-+                ethtool_cmd_speed(&ecmd), ecmd.duplex, lcladv, rmtadv);
-+
-+      spin_lock_irqsave(&pdata->mac_cr_lock, flags);
-+      if (ecmd.duplex != DUPLEX_FULL) {
-+              pdata->mac_cr &= ~MAC_CR_FDPX_;
-+              pdata->mac_cr |= MAC_CR_RCVOWN_;
-+      } else {
-+              pdata->mac_cr &= ~MAC_CR_RCVOWN_;
-+              pdata->mac_cr |= MAC_CR_FDPX_;
-+      }
-+      spin_unlock_irqrestore(&pdata->mac_cr_lock, flags);
-+
-+      ret = smsc95xx_write_reg(dev, MAC_CR, pdata->mac_cr);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_phy_update_flowcontrol(dev, ecmd.duplex, lcladv, rmtadv);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "Error updating PHY flow control\n");
-+
-+      return ret;
-+}
-+
-+static void smsc95xx_status(struct usbnet *dev, struct urb *urb)
-+{
-+      u32 intdata;
-+
-+      if (urb->actual_length != 4) {
-+              netdev_warn(dev->net, "unexpected urb length %d\n",
-+                          urb->actual_length);
-+              return;
-+      }
-+
-+      memcpy(&intdata, urb->transfer_buffer, 4);
-+      le32_to_cpus(&intdata);
-+
-+      netif_dbg(dev, link, dev->net, "intdata: 0x%08X\n", intdata);
-+
-+      if (intdata & INT_ENP_PHY_INT_)
-+              usbnet_defer_kevent(dev, EVENT_LINK_RESET);
-+      else
-+              netdev_warn(dev->net, "unexpected interrupt, intdata=0x%08X\n",
-+                          intdata);
-+}
-+
-+/* Enable or disable Tx & Rx checksum offload engines */
-+static int smsc95xx_set_features(struct net_device *netdev,
-+      netdev_features_t features)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      u32 read_buf;
-+      int ret;
-+
-+      ret = smsc95xx_read_reg(dev, COE_CR, &read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      if (features & NETIF_F_HW_CSUM)
-+              read_buf |= Tx_COE_EN_;
-+      else
-+              read_buf &= ~Tx_COE_EN_;
-+
-+      if (features & NETIF_F_RXCSUM)
-+              read_buf |= Rx_COE_EN_;
-+      else
-+              read_buf &= ~Rx_COE_EN_;
-+
-+      ret = smsc95xx_write_reg(dev, COE_CR, read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      netif_dbg(dev, hw, dev->net, "COE_CR = 0x%08x\n", read_buf);
-+      return 0;
-+}
-+
-+static int smsc95xx_ethtool_get_eeprom_len(struct net_device *net)
-+{
-+      return MAX_EEPROM_SIZE;
-+}
-+
-+static int smsc95xx_ethtool_get_eeprom(struct net_device *netdev,
-+                                     struct ethtool_eeprom *ee, u8 *data)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+
-+      ee->magic = LAN95XX_EEPROM_MAGIC;
-+
-+      return smsc95xx_read_eeprom(dev, ee->offset, ee->len, data);
-+}
-+
-+static int smsc95xx_ethtool_set_eeprom(struct net_device *netdev,
-+                                     struct ethtool_eeprom *ee, u8 *data)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+
-+      if (ee->magic != LAN95XX_EEPROM_MAGIC) {
-+              netdev_warn(dev->net, "EEPROM: magic value mismatch, magic = 0x%x\n",
-+                          ee->magic);
-+              return -EINVAL;
-+      }
-+
-+      return smsc95xx_write_eeprom(dev, ee->offset, ee->len, data);
-+}
-+
-+static int smsc95xx_ethtool_getregslen(struct net_device *netdev)
-+{
-+      /* all smsc95xx registers */
-+      return COE_CR - ID_REV + sizeof(u32);
-+}
-+
-+static void
-+smsc95xx_ethtool_getregs(struct net_device *netdev, struct ethtool_regs *regs,
-+                       void *buf)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      unsigned int i, j;
-+      int retval;
-+      u32 *data = buf;
-+
-+      retval = smsc95xx_read_reg(dev, ID_REV, &regs->version);
-+      if (retval < 0) {
-+              netdev_warn(netdev, "REGS: cannot read ID_REV\n");
-+              return;
-+      }
-+
-+      for (i = ID_REV, j = 0; i <= COE_CR; i += (sizeof(u32)), j++) {
-+              retval = smsc95xx_read_reg(dev, i, &data[j]);
-+              if (retval < 0) {
-+                      netdev_warn(netdev, "REGS: cannot read reg[%x]\n", i);
-+                      return;
-+              }
-+      }
-+}
-+
-+static void smsc95xx_ethtool_get_wol(struct net_device *net,
-+                                   struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+
-+      wolinfo->supported = SUPPORTED_WAKE;
-+      wolinfo->wolopts = pdata->wolopts;
-+}
-+
-+static int smsc95xx_ethtool_set_wol(struct net_device *net,
-+                                  struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      int ret;
-+
-+      pdata->wolopts = wolinfo->wolopts & SUPPORTED_WAKE;
-+
-+      ret = device_set_wakeup_enable(&dev->udev->dev, pdata->wolopts);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "device_set_wakeup_enable error %d\n", ret);
-+
-+      return ret;
-+}
-+
-+static const struct ethtool_ops smsc95xx_ethtool_ops = {
-+      .get_link       = usbnet_get_link,
-+      .nway_reset     = usbnet_nway_reset,
-+      .get_drvinfo    = usbnet_get_drvinfo,
-+      .get_msglevel   = usbnet_get_msglevel,
-+      .set_msglevel   = usbnet_set_msglevel,
-+      .get_settings   = usbnet_get_settings,
-+      .set_settings   = usbnet_set_settings,
-+      .get_eeprom_len = smsc95xx_ethtool_get_eeprom_len,
-+      .get_eeprom     = smsc95xx_ethtool_get_eeprom,
-+      .set_eeprom     = smsc95xx_ethtool_set_eeprom,
-+      .get_regs_len   = smsc95xx_ethtool_getregslen,
-+      .get_regs       = smsc95xx_ethtool_getregs,
-+      .get_wol        = smsc95xx_ethtool_get_wol,
-+      .set_wol        = smsc95xx_ethtool_set_wol,
-+};
-+
-+static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+
-+      if (!netif_running(netdev))
-+              return -EINVAL;
-+
-+      return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
-+}
-+
-+static void smsc95xx_init_mac_address(struct usbnet *dev)
-+{
-+      /* try reading mac address from EEPROM */
-+      if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
-+                      dev->net->dev_addr) == 0) {
-+              if (is_valid_ether_addr(dev->net->dev_addr)) {
-+                      /* eeprom values are valid so use them */
-+                      netif_dbg(dev, ifup, dev->net, "MAC address read from EEPROM\n");
-+                      return;
-+              }
-+      }
-+
-+      /* no eeprom, or eeprom values are invalid. generate random MAC */
-+      eth_hw_addr_random(dev->net);
-+      netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n");
-+}
-+
-+static int smsc95xx_set_mac_address(struct usbnet *dev)
-+{
-+      u32 addr_lo = dev->net->dev_addr[0] | dev->net->dev_addr[1] << 8 |
-+              dev->net->dev_addr[2] << 16 | dev->net->dev_addr[3] << 24;
-+      u32 addr_hi = dev->net->dev_addr[4] | dev->net->dev_addr[5] << 8;
-+      int ret;
-+
-+      ret = smsc95xx_write_reg(dev, ADDRL, addr_lo);
-+      if (ret < 0)
-+              return ret;
-+
-+      return smsc95xx_write_reg(dev, ADDRH, addr_hi);
-+}
-+
-+/* starts the TX path */
-+static int smsc95xx_start_tx_path(struct usbnet *dev)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      unsigned long flags;
-+      int ret;
-+
-+      /* Enable Tx at MAC */
-+      spin_lock_irqsave(&pdata->mac_cr_lock, flags);
-+      pdata->mac_cr |= MAC_CR_TXEN_;
-+      spin_unlock_irqrestore(&pdata->mac_cr_lock, flags);
-+
-+      ret = smsc95xx_write_reg(dev, MAC_CR, pdata->mac_cr);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* Enable Tx at SCSRs */
-+      return smsc95xx_write_reg(dev, TX_CFG, TX_CFG_ON_);
-+}
-+
-+/* Starts the Receive path */
-+static int smsc95xx_start_rx_path(struct usbnet *dev, int in_pm)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      unsigned long flags;
-+
-+      spin_lock_irqsave(&pdata->mac_cr_lock, flags);
-+      pdata->mac_cr |= MAC_CR_RXEN_;
-+      spin_unlock_irqrestore(&pdata->mac_cr_lock, flags);
-+
-+      return __smsc95xx_write_reg(dev, MAC_CR, pdata->mac_cr, in_pm);
-+}
-+
-+static int smsc95xx_phy_initialize(struct usbnet *dev)
-+{
-+      int bmcr, ret, timeout = 0;
-+
-+      /* Initialize MII structure */
-+      dev->mii.dev = dev->net;
-+      dev->mii.mdio_read = smsc95xx_mdio_read;
-+      dev->mii.mdio_write = smsc95xx_mdio_write;
-+      dev->mii.phy_id_mask = 0x1f;
-+      dev->mii.reg_num_mask = 0x1f;
-+      dev->mii.phy_id = SMSC95XX_INTERNAL_PHY_ID;
-+
-+      /* reset phy and wait for reset to complete */
-+      smsc95xx_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET);
-+
-+      do {
-+              msleep(10);
-+              bmcr = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, MII_BMCR);
-+              timeout++;
-+      } while ((bmcr & BMCR_RESET) && (timeout < 100));
-+
-+      if (timeout >= 100) {
-+              netdev_warn(dev->net, "timeout on PHY Reset");
-+              return -EIO;
-+      }
-+
-+      smsc95xx_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE,
-+              ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP |
-+              ADVERTISE_PAUSE_ASYM);
-+
-+      /* read to clear */
-+      ret = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, PHY_INT_SRC);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to read PHY_INT_SRC during init\n");
-+              return ret;
-+      }
-+
-+      smsc95xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_MASK,
-+              PHY_INT_MASK_DEFAULT_);
-+      mii_nway_restart(&dev->mii);
-+
-+      netif_dbg(dev, ifup, dev->net, "phy initialised successfully\n");
-+      return 0;
-+}
-+
-+static int smsc95xx_reset(struct usbnet *dev)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      u32 read_buf, write_buf, burst_cap;
-+      int ret = 0, timeout;
-+
-+      netif_dbg(dev, ifup, dev->net, "entering smsc95xx_reset\n");
-+
-+      ret = smsc95xx_write_reg(dev, HW_CFG, HW_CFG_LRST_);
-+      if (ret < 0)
-+              return ret;
-+
-+      timeout = 0;
-+      do {
-+              msleep(10);
-+              ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
-+              if (ret < 0)
-+                      return ret;
-+              timeout++;
-+      } while ((read_buf & HW_CFG_LRST_) && (timeout < 100));
-+
-+      if (timeout >= 100) {
-+              netdev_warn(dev->net, "timeout waiting for completion of Lite Reset\n");
-+              return ret;
-+      }
-+
-+      ret = smsc95xx_write_reg(dev, PM_CTRL, PM_CTL_PHY_RST_);
-+      if (ret < 0)
-+              return ret;
-+
-+      timeout = 0;
-+      do {
-+              msleep(10);
-+              ret = smsc95xx_read_reg(dev, PM_CTRL, &read_buf);
-+              if (ret < 0)
-+                      return ret;
-+              timeout++;
-+      } while ((read_buf & PM_CTL_PHY_RST_) && (timeout < 100));
-+
-+      if (timeout >= 100) {
-+              netdev_warn(dev->net, "timeout waiting for PHY Reset\n");
-+              return ret;
-+      }
-+
-+      ret = smsc95xx_set_mac_address(dev);
-+      if (ret < 0)
-+              return ret;
-+
-+      netif_dbg(dev, ifup, dev->net, "MAC Address: %pM\n",
-+                dev->net->dev_addr);
-+
-+      ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      netif_dbg(dev, ifup, dev->net, "Read Value from HW_CFG : 0x%08x\n",
-+                read_buf);
-+
-+      read_buf |= HW_CFG_BIR_;
-+
-+      ret = smsc95xx_write_reg(dev, HW_CFG, read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      netif_dbg(dev, ifup, dev->net,
-+                "Read Value from HW_CFG after writing HW_CFG_BIR_: 0x%08x\n",
-+                read_buf);
-+
-+      if (!turbo_mode) {
-+              burst_cap = 0;
-+              dev->rx_urb_size = MAX_SINGLE_PACKET_SIZE;
-+      } else if (dev->udev->speed == USB_SPEED_HIGH) {
-+              burst_cap = DEFAULT_HS_BURST_CAP_SIZE / HS_USB_PKT_SIZE;
-+              dev->rx_urb_size = DEFAULT_HS_BURST_CAP_SIZE;
-+      } else {
-+              burst_cap = DEFAULT_FS_BURST_CAP_SIZE / FS_USB_PKT_SIZE;
-+              dev->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n",
-+                (ulong)dev->rx_urb_size);
-+
-+      ret = smsc95xx_write_reg(dev, BURST_CAP, burst_cap);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_read_reg(dev, BURST_CAP, &read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      netif_dbg(dev, ifup, dev->net,
-+                "Read Value from BURST_CAP after writing: 0x%08x\n",
-+                read_buf);
-+
-+      ret = smsc95xx_write_reg(dev, BULK_IN_DLY, DEFAULT_BULK_IN_DELAY);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_read_reg(dev, BULK_IN_DLY, &read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      netif_dbg(dev, ifup, dev->net,
-+                "Read Value from BULK_IN_DLY after writing: 0x%08x\n",
-+                read_buf);
-+
-+      ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      netif_dbg(dev, ifup, dev->net, "Read Value from HW_CFG: 0x%08x\n",
-+                read_buf);
-+
-+      if (turbo_mode)
-+              read_buf |= (HW_CFG_MEF_ | HW_CFG_BCE_);
-+
-+      read_buf &= ~HW_CFG_RXDOFF_;
-+
-+      /* set Rx data offset=2, Make IP header aligns on word boundary. */
-+      read_buf |= NET_IP_ALIGN << 9;
-+
-+      ret = smsc95xx_write_reg(dev, HW_CFG, read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      netif_dbg(dev, ifup, dev->net,
-+                "Read Value from HW_CFG after writing: 0x%08x\n", read_buf);
-+
-+      ret = smsc95xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL_);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_read_reg(dev, ID_REV, &read_buf);
-+      if (ret < 0)
-+              return ret;
-+      netif_dbg(dev, ifup, dev->net, "ID_REV = 0x%08x\n", read_buf);
-+
-+      /* Configure GPIO pins as LED outputs */
-+      write_buf = LED_GPIO_CFG_SPD_LED | LED_GPIO_CFG_LNK_LED |
-+              LED_GPIO_CFG_FDX_LED;
-+      ret = smsc95xx_write_reg(dev, LED_GPIO_CFG, write_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* Init Tx */
-+      ret = smsc95xx_write_reg(dev, FLOW, 0);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_write_reg(dev, AFC_CFG, AFC_CFG_DEFAULT);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* Don't need mac_cr_lock during initialisation */
-+      ret = smsc95xx_read_reg(dev, MAC_CR, &pdata->mac_cr);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* Init Rx */
-+      /* Set Vlan */
-+      ret = smsc95xx_write_reg(dev, VLAN1, (u32)ETH_P_8021Q);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* Enable or disable checksum offload engines */
-+      ret = smsc95xx_set_features(dev->net, dev->net->features);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to set checksum offload features\n");
-+              return ret;
-+      }
-+
-+      smsc95xx_set_multicast(dev->net);
-+
-+      ret = smsc95xx_phy_initialize(dev);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to init PHY\n");
-+              return ret;
-+      }
-+
-+      ret = smsc95xx_read_reg(dev, INT_EP_CTL, &read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* enable PHY interrupts */
-+      read_buf |= INT_EP_CTL_PHY_INT_;
-+
-+      ret = smsc95xx_write_reg(dev, INT_EP_CTL, read_buf);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_start_tx_path(dev);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to start TX path\n");
-+              return ret;
-+      }
-+
-+      ret = smsc95xx_start_rx_path(dev, 0);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "Failed to start RX path\n");
-+              return ret;
-+      }
-+
-+      netif_dbg(dev, ifup, dev->net, "smsc95xx_reset, return 0\n");
-+      return 0;
-+}
-+
-+static const struct net_device_ops smsc95xx_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = usbnet_change_mtu,
-+      .ndo_set_mac_address    = eth_mac_addr,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = smsc95xx_ioctl,
-+      .ndo_set_rx_mode        = smsc95xx_set_multicast,
-+      .ndo_set_features       = smsc95xx_set_features,
-+};
-+
-+static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      struct smsc95xx_priv *pdata = NULL;
-+      u32 val;
-+      int ret;
-+
-+      printk(KERN_INFO SMSC_CHIPNAME " v" SMSC_DRIVER_VERSION "\n");
-+
-+      ret = usbnet_get_endpoints(dev, intf);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "usbnet_get_endpoints failed: %d\n", ret);
-+              return ret;
-+      }
-+
-+      dev->data[0] = (unsigned long)kzalloc(sizeof(struct smsc95xx_priv),
-+                                            GFP_KERNEL);
-+
-+      pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      if (!pdata)
-+              return -ENOMEM;
-+
-+      spin_lock_init(&pdata->mac_cr_lock);
-+
-+      if (DEFAULT_TX_CSUM_ENABLE)
-+              dev->net->features |= NETIF_F_HW_CSUM;
-+      if (DEFAULT_RX_CSUM_ENABLE)
-+              dev->net->features |= NETIF_F_RXCSUM;
-+
-+      dev->net->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
-+
-+      smsc95xx_init_mac_address(dev);
-+
-+      /* Init all registers */
-+      ret = smsc95xx_reset(dev);
-+
-+      /* detect device revision as different features may be available */
-+      ret = smsc95xx_read_reg(dev, ID_REV, &val);
-+      if (ret < 0)
-+              return ret;
-+      val >>= 16;
-+
-+      if ((val == ID_REV_CHIP_ID_9500A_) || (val == ID_REV_CHIP_ID_9530_) ||
-+          (val == ID_REV_CHIP_ID_89530_) || (val == ID_REV_CHIP_ID_9730_))
-+              pdata->features = (FEATURE_8_WAKEUP_FILTERS |
-+                      FEATURE_PHY_NLP_CROSSOVER |
-+                      FEATURE_REMOTE_WAKEUP);
-+      else if (val == ID_REV_CHIP_ID_9512_)
-+              pdata->features = FEATURE_8_WAKEUP_FILTERS;
-+
-+      dev->net->netdev_ops = &smsc95xx_netdev_ops;
-+      dev->net->ethtool_ops = &smsc95xx_ethtool_ops;
-+      dev->net->flags |= IFF_MULTICAST;
-+      dev->net->hard_header_len += SMSC95XX_TX_OVERHEAD_CSUM;
-+      dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
-+      return 0;
-+}
-+
-+static void smsc95xx_unbind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      if (pdata) {
-+              netif_dbg(dev, ifdown, dev->net, "free pdata\n");
-+              kfree(pdata);
-+              pdata = NULL;
-+              dev->data[0] = 0;
-+      }
-+}
-+
-+static u32 smsc_crc(const u8 *buffer, size_t len, int filter)
-+{
-+      u32 crc = bitrev16(crc16(0xFFFF, buffer, len));
-+      return crc << ((filter % 2) * 16);
-+}
-+
-+static int smsc95xx_enable_phy_wakeup_interrupts(struct usbnet *dev, u16 mask)
-+{
-+      struct mii_if_info *mii = &dev->mii;
-+      int ret;
-+
-+      netdev_dbg(dev->net, "enabling PHY wakeup interrupts\n");
-+
-+      /* read to clear */
-+      ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_SRC);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* enable interrupt source */
-+      ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_MASK);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret |= mask;
-+
-+      smsc95xx_mdio_write_nopm(dev->net, mii->phy_id, PHY_INT_MASK, ret);
-+
-+      return 0;
-+}
-+
-+static int smsc95xx_link_ok_nopm(struct usbnet *dev)
-+{
-+      struct mii_if_info *mii = &dev->mii;
-+      int ret;
-+
-+      /* first, a dummy read, needed to latch some MII phys */
-+      ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR);
-+      if (ret < 0)
-+              return ret;
-+
-+      return !!(ret & BMSR_LSTATUS);
-+}
-+
-+static int smsc95xx_enter_suspend0(struct usbnet *dev)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      u32 val;
-+      int ret;
-+
-+      ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
-+      if (ret < 0)
-+              return ret;
-+
-+      val &= (~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_));
-+      val |= PM_CTL_SUS_MODE_0;
-+
-+      ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* clear wol status */
-+      val &= ~PM_CTL_WUPS_;
-+      val |= PM_CTL_WUPS_WOL_;
-+
-+      /* enable energy detection */
-+      if (pdata->wolopts & WAKE_PHY)
-+              val |= PM_CTL_WUPS_ED_;
-+
-+      ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* read back PM_CTRL */
-+      ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
-+      if (ret < 0)
-+              return ret;
-+
-+      pdata->suspend_flags |= SUSPEND_SUSPEND0;
-+
-+      return 0;
-+}
-+
-+static int smsc95xx_enter_suspend1(struct usbnet *dev)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      struct mii_if_info *mii = &dev->mii;
-+      u32 val;
-+      int ret;
-+
-+      /* reconfigure link pulse detection timing for
-+       * compatibility with non-standard link partners
-+       */
-+      if (pdata->features & FEATURE_PHY_NLP_CROSSOVER)
-+              smsc95xx_mdio_write_nopm(dev->net, mii->phy_id, PHY_EDPD_CONFIG,
-+                      PHY_EDPD_CONFIG_DEFAULT);
-+
-+      /* enable energy detect power-down mode */
-+      ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_MODE_CTRL_STS);
-+      if (ret < 0)
-+              return ret;
-+
-+      ret |= MODE_CTRL_STS_EDPWRDOWN_;
-+
-+      smsc95xx_mdio_write_nopm(dev->net, mii->phy_id, PHY_MODE_CTRL_STS, ret);
-+
-+      /* enter SUSPEND1 mode */
-+      ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
-+      if (ret < 0)
-+              return ret;
-+
-+      val &= ~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_);
-+      val |= PM_CTL_SUS_MODE_1;
-+
-+      ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* clear wol status, enable energy detection */
-+      val &= ~PM_CTL_WUPS_;
-+      val |= (PM_CTL_WUPS_ED_ | PM_CTL_ED_EN_);
-+
-+      ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+      if (ret < 0)
-+              return ret;
-+
-+      pdata->suspend_flags |= SUSPEND_SUSPEND1;
-+
-+      return 0;
-+}
-+
-+static int smsc95xx_enter_suspend2(struct usbnet *dev)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      u32 val;
-+      int ret;
-+
-+      ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
-+      if (ret < 0)
-+              return ret;
-+
-+      val &= ~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_);
-+      val |= PM_CTL_SUS_MODE_2;
-+
-+      ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+      if (ret < 0)
-+              return ret;
-+
-+      pdata->suspend_flags |= SUSPEND_SUSPEND2;
-+
-+      return 0;
-+}
-+
-+static int smsc95xx_enter_suspend3(struct usbnet *dev)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      u32 val;
-+      int ret;
-+
-+      ret = smsc95xx_read_reg_nopm(dev, RX_FIFO_INF, &val);
-+      if (ret < 0)
-+              return ret;
-+
-+      if (val & 0xFFFF) {
-+              netdev_info(dev->net, "rx fifo not empty in autosuspend\n");
-+              return -EBUSY;
-+      }
-+
-+      ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
-+      if (ret < 0)
-+              return ret;
-+
-+      val &= ~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_);
-+      val |= PM_CTL_SUS_MODE_3 | PM_CTL_RES_CLR_WKP_STS;
-+
-+      ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+      if (ret < 0)
-+              return ret;
-+
-+      /* clear wol status */
-+      val &= ~PM_CTL_WUPS_;
-+      val |= PM_CTL_WUPS_WOL_;
-+
-+      ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+      if (ret < 0)
-+              return ret;
-+
-+      pdata->suspend_flags |= SUSPEND_SUSPEND3;
-+
-+      return 0;
-+}
-+
-+static int smsc95xx_autosuspend(struct usbnet *dev, u32 link_up)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      int ret;
-+
-+      if (!netif_running(dev->net)) {
-+              /* interface is ifconfig down so fully power down hw */
-+              netdev_dbg(dev->net, "autosuspend entering SUSPEND2\n");
-+              return smsc95xx_enter_suspend2(dev);
-+      }
-+
-+      if (!link_up) {
-+              /* link is down so enter EDPD mode, but only if device can
-+               * reliably resume from it.  This check should be redundant
-+               * as current FEATURE_REMOTE_WAKEUP parts also support
-+               * FEATURE_PHY_NLP_CROSSOVER but it's included for clarity */
-+              if (!(pdata->features & FEATURE_PHY_NLP_CROSSOVER)) {
-+                      netdev_warn(dev->net, "EDPD not supported\n");
-+                      return -EBUSY;
-+              }
-+
-+              netdev_dbg(dev->net, "autosuspend entering SUSPEND1\n");
-+
-+              /* enable PHY wakeup events for if cable is attached */
-+              ret = smsc95xx_enable_phy_wakeup_interrupts(dev,
-+                      PHY_INT_MASK_ANEG_COMP_);
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "error enabling PHY wakeup ints\n");
-+                      return ret;
-+              }
-+
-+              netdev_info(dev->net, "entering SUSPEND1 mode\n");
-+              return smsc95xx_enter_suspend1(dev);
-+      }
-+
-+      /* enable PHY wakeup events so we remote wakeup if cable is pulled */
-+      ret = smsc95xx_enable_phy_wakeup_interrupts(dev,
-+              PHY_INT_MASK_LINK_DOWN_);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "error enabling PHY wakeup ints\n");
-+              return ret;
-+      }
-+
-+      netdev_dbg(dev->net, "autosuspend entering SUSPEND3\n");
-+      return smsc95xx_enter_suspend3(dev);
-+}
-+
-+static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
-+{
-+      struct usbnet *dev = usb_get_intfdata(intf);
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      u32 val, link_up;
-+      int ret;
-+
-+      ret = usbnet_suspend(intf, message);
-+      if (ret < 0) {
-+              netdev_warn(dev->net, "usbnet_suspend error\n");
-+              return ret;
-+      }
-+
-+      if (pdata->suspend_flags) {
-+              netdev_warn(dev->net, "error during last resume\n");
-+              pdata->suspend_flags = 0;
-+      }
-+
-+      /* determine if link is up using only _nopm functions */
-+      link_up = smsc95xx_link_ok_nopm(dev);
-+
-+      if (message.event == PM_EVENT_AUTO_SUSPEND &&
-+          (pdata->features & FEATURE_REMOTE_WAKEUP)) {
-+              ret = smsc95xx_autosuspend(dev, link_up);
-+              goto done;
-+      }
-+
-+      /* if we get this far we're not autosuspending */
-+      /* if no wol options set, or if link is down and we're not waking on
-+       * PHY activity, enter lowest power SUSPEND2 mode
-+       */
-+      if (!(pdata->wolopts & SUPPORTED_WAKE) ||
-+              !(link_up || (pdata->wolopts & WAKE_PHY))) {
-+              netdev_info(dev->net, "entering SUSPEND2 mode\n");
-+
-+              /* disable energy detect (link up) & wake up events */
-+              ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0)
-+                      goto done;
-+
-+              val &= ~(WUCSR_MPEN_ | WUCSR_WAKE_EN_);
-+
-+              ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0)
-+                      goto done;
-+
-+              ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
-+              if (ret < 0)
-+                      goto done;
-+
-+              val &= ~(PM_CTL_ED_EN_ | PM_CTL_WOL_EN_);
-+
-+              ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+              if (ret < 0)
-+                      goto done;
-+
-+              ret = smsc95xx_enter_suspend2(dev);
-+              goto done;
-+      }
-+
-+      if (pdata->wolopts & WAKE_PHY) {
-+              ret = smsc95xx_enable_phy_wakeup_interrupts(dev,
-+                      (PHY_INT_MASK_ANEG_COMP_ | PHY_INT_MASK_LINK_DOWN_));
-+              if (ret < 0) {
-+                      netdev_warn(dev->net, "error enabling PHY wakeup ints\n");
-+                      goto done;
-+              }
-+
-+              /* if link is down then configure EDPD and enter SUSPEND1,
-+               * otherwise enter SUSPEND0 below
-+               */
-+              if (!link_up) {
-+                      netdev_info(dev->net, "entering SUSPEND1 mode\n");
-+                      ret = smsc95xx_enter_suspend1(dev);
-+                      goto done;
-+              }
-+      }
-+
-+      if (pdata->wolopts & (WAKE_BCAST | WAKE_MCAST | WAKE_ARP | WAKE_UCAST)) {
-+              u32 *filter_mask = kzalloc(sizeof(u32) * 32, GFP_KERNEL);
-+              u32 command[2];
-+              u32 offset[2];
-+              u32 crc[4];
-+              int wuff_filter_count =
-+                      (pdata->features & FEATURE_8_WAKEUP_FILTERS) ?
-+                      LAN9500A_WUFF_NUM : LAN9500_WUFF_NUM;
-+              int i, filter = 0;
-+
-+              if (!filter_mask) {
-+                      netdev_warn(dev->net, "Unable to allocate filter_mask\n");
-+                      ret = -ENOMEM;
-+                      goto done;
-+              }
-+
-+              memset(command, 0, sizeof(command));
-+              memset(offset, 0, sizeof(offset));
-+              memset(crc, 0, sizeof(crc));
-+
-+              if (pdata->wolopts & WAKE_BCAST) {
-+                      const u8 bcast[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
-+                      netdev_info(dev->net, "enabling broadcast detection\n");
-+                      filter_mask[filter * 4] = 0x003F;
-+                      filter_mask[filter * 4 + 1] = 0x00;
-+                      filter_mask[filter * 4 + 2] = 0x00;
-+                      filter_mask[filter * 4 + 3] = 0x00;
-+                      command[filter/4] |= 0x05UL << ((filter % 4) * 8);
-+                      offset[filter/4] |= 0x00 << ((filter % 4) * 8);
-+                      crc[filter/2] |= smsc_crc(bcast, 6, filter);
-+                      filter++;
-+              }
-+
-+              if (pdata->wolopts & WAKE_MCAST) {
-+                      const u8 mcast[] = {0x01, 0x00, 0x5E};
-+                      netdev_info(dev->net, "enabling multicast detection\n");
-+                      filter_mask[filter * 4] = 0x0007;
-+                      filter_mask[filter * 4 + 1] = 0x00;
-+                      filter_mask[filter * 4 + 2] = 0x00;
-+                      filter_mask[filter * 4 + 3] = 0x00;
-+                      command[filter/4] |= 0x09UL << ((filter % 4) * 8);
-+                      offset[filter/4] |= 0x00  << ((filter % 4) * 8);
-+                      crc[filter/2] |= smsc_crc(mcast, 3, filter);
-+                      filter++;
-+              }
-+
-+              if (pdata->wolopts & WAKE_ARP) {
-+                      const u8 arp[] = {0x08, 0x06};
-+                      netdev_info(dev->net, "enabling ARP detection\n");
-+                      filter_mask[filter * 4] = 0x0003;
-+                      filter_mask[filter * 4 + 1] = 0x00;
-+                      filter_mask[filter * 4 + 2] = 0x00;
-+                      filter_mask[filter * 4 + 3] = 0x00;
-+                      command[filter/4] |= 0x05UL << ((filter % 4) * 8);
-+                      offset[filter/4] |= 0x0C << ((filter % 4) * 8);
-+                      crc[filter/2] |= smsc_crc(arp, 2, filter);
-+                      filter++;
-+              }
-+
-+              if (pdata->wolopts & WAKE_UCAST) {
-+                      netdev_info(dev->net, "enabling unicast detection\n");
-+                      filter_mask[filter * 4] = 0x003F;
-+                      filter_mask[filter * 4 + 1] = 0x00;
-+                      filter_mask[filter * 4 + 2] = 0x00;
-+                      filter_mask[filter * 4 + 3] = 0x00;
-+                      command[filter/4] |= 0x01UL << ((filter % 4) * 8);
-+                      offset[filter/4] |= 0x00 << ((filter % 4) * 8);
-+                      crc[filter/2] |= smsc_crc(dev->net->dev_addr, ETH_ALEN, filter);
-+                      filter++;
-+              }
-+
-+              for (i = 0; i < (wuff_filter_count * 4); i++) {
-+                      ret = smsc95xx_write_reg_nopm(dev, WUFF, filter_mask[i]);
-+                      if (ret < 0) {
-+                              kfree(filter_mask);
-+                              goto done;
-+                      }
-+              }
-+              kfree(filter_mask);
-+
-+              for (i = 0; i < (wuff_filter_count / 4); i++) {
-+                      ret = smsc95xx_write_reg_nopm(dev, WUFF, command[i]);
-+                      if (ret < 0)
-+                              goto done;
-+              }
-+
-+              for (i = 0; i < (wuff_filter_count / 4); i++) {
-+                      ret = smsc95xx_write_reg_nopm(dev, WUFF, offset[i]);
-+                      if (ret < 0)
-+                              goto done;
-+              }
-+
-+              for (i = 0; i < (wuff_filter_count / 2); i++) {
-+                      ret = smsc95xx_write_reg_nopm(dev, WUFF, crc[i]);
-+                      if (ret < 0)
-+                              goto done;
-+              }
-+
-+              /* clear any pending pattern match packet status */
-+              ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0)
-+                      goto done;
-+
-+              val |= WUCSR_WUFR_;
-+
-+              ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0)
-+                      goto done;
-+      }
-+
-+      if (pdata->wolopts & WAKE_MAGIC) {
-+              /* clear any pending magic packet status */
-+              ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0)
-+                      goto done;
-+
-+              val |= WUCSR_MPR_;
-+
-+              ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0)
-+                      goto done;
-+      }
-+
-+      /* enable/disable wakeup sources */
-+      ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
-+      if (ret < 0)
-+              goto done;
-+
-+      if (pdata->wolopts & (WAKE_BCAST | WAKE_MCAST | WAKE_ARP | WAKE_UCAST)) {
-+              netdev_info(dev->net, "enabling pattern match wakeup\n");
-+              val |= WUCSR_WAKE_EN_;
-+      } else {
-+              netdev_info(dev->net, "disabling pattern match wakeup\n");
-+              val &= ~WUCSR_WAKE_EN_;
-+      }
-+
-+      if (pdata->wolopts & WAKE_MAGIC) {
-+              netdev_info(dev->net, "enabling magic packet wakeup\n");
-+              val |= WUCSR_MPEN_;
-+      } else {
-+              netdev_info(dev->net, "disabling magic packet wakeup\n");
-+              val &= ~WUCSR_MPEN_;
-+      }
-+
-+      ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
-+      if (ret < 0)
-+              goto done;
-+
-+      /* enable wol wakeup source */
-+      ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
-+      if (ret < 0)
-+              goto done;
-+
-+      val |= PM_CTL_WOL_EN_;
-+
-+      /* phy energy detect wakeup source */
-+      if (pdata->wolopts & WAKE_PHY)
-+              val |= PM_CTL_ED_EN_;
-+
-+      ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+      if (ret < 0)
-+              goto done;
-+
-+      /* enable receiver to enable frame reception */
-+      smsc95xx_start_rx_path(dev, 1);
-+
-+      /* some wol options are enabled, so enter SUSPEND0 */
-+      netdev_info(dev->net, "entering SUSPEND0 mode\n");
-+      ret = smsc95xx_enter_suspend0(dev);
-+
-+done:
-+      /*
-+       * TODO: resume() might need to handle the suspend failure
-+       * in system sleep
-+       */
-+      if (ret && PMSG_IS_AUTO(message))
-+              usbnet_resume(intf);
-+      return ret;
-+}
-+
-+static int smsc95xx_resume(struct usb_interface *intf)
-+{
-+      struct usbnet *dev = usb_get_intfdata(intf);
-+      struct smsc95xx_priv *pdata;
-+      u8 suspend_flags;
-+      int ret;
-+      u32 val;
-+
-+      BUG_ON(!dev);
-+      pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+      suspend_flags = pdata->suspend_flags;
-+
-+      netdev_dbg(dev->net, "resume suspend_flags=0x%02x\n", suspend_flags);
-+
-+      /* do this first to ensure it's cleared even in error case */
-+      pdata->suspend_flags = 0;
-+
-+      if (suspend_flags & SUSPEND_ALLMODES) {
-+              /* clear wake-up sources */
-+              ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
-+              if (ret < 0)
-+                      return ret;
-+
-+              val &= ~(WUCSR_WAKE_EN_ | WUCSR_MPEN_);
-+
-+              ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
-+              if (ret < 0)
-+                      return ret;
-+
-+              /* clear wake-up status */
-+              ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
-+              if (ret < 0)
-+                      return ret;
-+
-+              val &= ~PM_CTL_WOL_EN_;
-+              val |= PM_CTL_WUPS_;
-+
-+              ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
-+              if (ret < 0)
-+                      return ret;
-+      }
-+
-+      ret = usbnet_resume(intf);
-+      if (ret < 0)
-+              netdev_warn(dev->net, "usbnet_resume error\n");
-+
-+      return ret;
-+}
-+
-+static int smsc95xx_reset_resume(struct usb_interface *intf)
-+{
-+      struct usbnet *dev = usb_get_intfdata(intf);
-+      int ret;
-+
-+      ret = smsc95xx_reset(dev);
-+      if (ret < 0)
-+              return ret;
-+
-+      return smsc95xx_resume(intf);
-+}
-+
-+static void smsc95xx_rx_csum_offload(struct sk_buff *skb)
-+{
-+      skb->csum = *(u16 *)(skb_tail_pointer(skb) - 2);
-+      skb->ip_summed = CHECKSUM_COMPLETE;
-+      skb_trim(skb, skb->len - 2);
-+}
-+
-+static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      /* This check is no longer done by usbnet */
-+      if (skb->len < dev->net->hard_header_len)
-+              return 0;
-+
-+      while (skb->len > 0) {
-+              u32 header, align_count;
-+              struct sk_buff *ax_skb;
-+              unsigned char *packet;
-+              u16 size;
-+
-+              memcpy(&header, skb->data, sizeof(header));
-+              le32_to_cpus(&header);
-+              skb_pull(skb, 4 + NET_IP_ALIGN);
-+              packet = skb->data;
-+
-+              /* get the packet length */
-+              size = (u16)((header & RX_STS_FL_) >> 16);
-+              align_count = (4 - ((size + NET_IP_ALIGN) % 4)) % 4;
-+
-+              if (unlikely(header & RX_STS_ES_)) {
-+                      netif_dbg(dev, rx_err, dev->net,
-+                                "Error header=0x%08x\n", header);
-+                      dev->net->stats.rx_errors++;
-+                      dev->net->stats.rx_dropped++;
-+
-+                      if (header & RX_STS_CRC_) {
-+                              dev->net->stats.rx_crc_errors++;
-+                      } else {
-+                              if (header & (RX_STS_TL_ | RX_STS_RF_))
-+                                      dev->net->stats.rx_frame_errors++;
-+
-+                              if ((header & RX_STS_LE_) &&
-+                                      (!(header & RX_STS_FT_)))
-+                                      dev->net->stats.rx_length_errors++;
-+                      }
-+              } else {
-+                      /* ETH_FRAME_LEN + 4(CRC) + 2(COE) + 4(Vlan) */
-+                      if (unlikely(size > (ETH_FRAME_LEN + 12))) {
-+                              netif_dbg(dev, rx_err, dev->net,
-+                                        "size err header=0x%08x\n", header);
-+                              return 0;
-+                      }
-+
-+                      /* last frame in this batch */
-+                      if (skb->len == size) {
-+                              if (dev->net->features & NETIF_F_RXCSUM)
-+                                      smsc95xx_rx_csum_offload(skb);
-+                              skb_trim(skb, skb->len - 4); /* remove fcs */
-+                              skb->truesize = size + sizeof(struct sk_buff);
-+
-+                              return 1;
-+                      }
-+
-+                      ax_skb = skb_clone(skb, GFP_ATOMIC);
-+                      if (unlikely(!ax_skb)) {
-+                              netdev_warn(dev->net, "Error allocating skb\n");
-+                              return 0;
-+                      }
-+
-+                      ax_skb->len = size;
-+                      ax_skb->data = packet;
-+                      skb_set_tail_pointer(ax_skb, size);
-+
-+                      if (dev->net->features & NETIF_F_RXCSUM)
-+                              smsc95xx_rx_csum_offload(ax_skb);
-+                      skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
-+                      ax_skb->truesize = size + sizeof(struct sk_buff);
-+
-+                      usbnet_skb_return(dev, ax_skb);
-+              }
-+
-+              skb_pull(skb, size);
-+
-+              /* padding bytes before the next frame starts */
-+              if (skb->len)
-+                      skb_pull(skb, align_count);
-+      }
-+
-+      if (unlikely(skb->len < 0)) {
-+              netdev_warn(dev->net, "invalid rx length<0 %d\n", skb->len);
-+              return 0;
-+      }
-+
-+      return 1;
-+}
-+
-+static u32 smsc95xx_calc_csum_preamble(struct sk_buff *skb)
-+{
-+      u16 low_16 = (u16)skb_checksum_start_offset(skb);
-+      u16 high_16 = low_16 + skb->csum_offset;
-+      return (high_16 << 16) | low_16;
-+}
-+
-+static struct sk_buff *smsc95xx_tx_fixup(struct usbnet *dev,
-+                                       struct sk_buff *skb, gfp_t flags)
-+{
-+      bool csum = skb->ip_summed == CHECKSUM_PARTIAL;
-+      int overhead = csum ? SMSC95XX_TX_OVERHEAD_CSUM : SMSC95XX_TX_OVERHEAD;
-+      u32 tx_cmd_a, tx_cmd_b;
-+
-+      /* We do not advertise SG, so skbs should be already linearized */
-+      BUG_ON(skb_shinfo(skb)->nr_frags);
-+
-+      if (skb_headroom(skb) < overhead) {
-+              struct sk_buff *skb2 = skb_copy_expand(skb,
-+                      overhead, 0, flags);
-+              dev_kfree_skb_any(skb);
-+              skb = skb2;
-+              if (!skb)
-+                      return NULL;
-+      }
-+
-+      if (csum) {
-+              if (skb->len <= 45) {
-+                      /* workaround - hardware tx checksum does not work
-+                       * properly with extremely small packets */
-+                      long csstart = skb_checksum_start_offset(skb);
-+                      __wsum calc = csum_partial(skb->data + csstart,
-+                              skb->len - csstart, 0);
-+                      *((__sum16 *)(skb->data + csstart
-+                              + skb->csum_offset)) = csum_fold(calc);
-+
-+                      csum = false;
-+              } else {
-+                      u32 csum_preamble = smsc95xx_calc_csum_preamble(skb);
-+                      skb_push(skb, 4);
-+                      cpu_to_le32s(&csum_preamble);
-+                      memcpy(skb->data, &csum_preamble, 4);
-+              }
-+      }
-+
-+      skb_push(skb, 4);
-+      tx_cmd_b = (u32)(skb->len - 4);
-+      if (csum)
-+              tx_cmd_b |= TX_CMD_B_CSUM_ENABLE;
-+      cpu_to_le32s(&tx_cmd_b);
-+      memcpy(skb->data, &tx_cmd_b, 4);
-+
-+      skb_push(skb, 4);
-+      tx_cmd_a = (u32)(skb->len - 8) | TX_CMD_A_FIRST_SEG_ |
-+              TX_CMD_A_LAST_SEG_;
-+      cpu_to_le32s(&tx_cmd_a);
-+      memcpy(skb->data, &tx_cmd_a, 4);
-+
-+      return skb;
-+}
-+
-+static int smsc95xx_manage_power(struct usbnet *dev, int on)
-+{
-+      struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
-+
-+      dev->intf->needs_remote_wakeup = on;
-+
-+      if (pdata->features & FEATURE_REMOTE_WAKEUP)
-+              return 0;
-+
-+      /* this chip revision isn't capable of remote wakeup */
-+      netdev_info(dev->net, "hardware isn't capable of remote wakeup\n");
-+
-+      if (on)
-+              usb_autopm_get_interface_no_resume(dev->intf);
-+      else
-+              usb_autopm_put_interface(dev->intf);
-+
-+      return 0;
-+}
-+
-+static const struct driver_info smsc95xx_info = {
-+      .description    = "smsc95xx USB 2.0 Ethernet",
-+      .bind           = smsc95xx_bind,
-+      .unbind         = smsc95xx_unbind,
-+      .link_reset     = smsc95xx_link_reset,
-+      .reset          = smsc95xx_reset,
-+      .rx_fixup       = smsc95xx_rx_fixup,
-+      .tx_fixup       = smsc95xx_tx_fixup,
-+      .status         = smsc95xx_status,
-+      .manage_power   = smsc95xx_manage_power,
-+      .flags          = FLAG_ETHER | FLAG_SEND_ZLP | FLAG_LINK_INTR,
-+};
-+
-+static const struct usb_device_id products[] = {
-+      {
-+              /* SMSC9500 USB Ethernet Device */
-+              USB_DEVICE(0x0424, 0x9500),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9505 USB Ethernet Device */
-+              USB_DEVICE(0x0424, 0x9505),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9500A USB Ethernet Device */
-+              USB_DEVICE(0x0424, 0x9E00),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9505A USB Ethernet Device */
-+              USB_DEVICE(0x0424, 0x9E01),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9512/9514 USB Hub & Ethernet Device */
-+              USB_DEVICE(0x0424, 0xec00),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9500 USB Ethernet Device (SAL10) */
-+              USB_DEVICE(0x0424, 0x9900),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9505 USB Ethernet Device (SAL10) */
-+              USB_DEVICE(0x0424, 0x9901),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9500A USB Ethernet Device (SAL10) */
-+              USB_DEVICE(0x0424, 0x9902),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9505A USB Ethernet Device (SAL10) */
-+              USB_DEVICE(0x0424, 0x9903),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9512/9514 USB Hub & Ethernet Device (SAL10) */
-+              USB_DEVICE(0x0424, 0x9904),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9500A USB Ethernet Device (HAL) */
-+              USB_DEVICE(0x0424, 0x9905),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9505A USB Ethernet Device (HAL) */
-+              USB_DEVICE(0x0424, 0x9906),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9500 USB Ethernet Device (Alternate ID) */
-+              USB_DEVICE(0x0424, 0x9907),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9500A USB Ethernet Device (Alternate ID) */
-+              USB_DEVICE(0x0424, 0x9908),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC9512/9514 USB Hub & Ethernet Device (Alternate ID) */
-+              USB_DEVICE(0x0424, 0x9909),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC LAN9530 USB Ethernet Device */
-+              USB_DEVICE(0x0424, 0x9530),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC LAN9730 USB Ethernet Device */
-+              USB_DEVICE(0x0424, 0x9730),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      {
-+              /* SMSC LAN89530 USB Ethernet Device */
-+              USB_DEVICE(0x0424, 0x9E08),
-+              .driver_info = (unsigned long) &smsc95xx_info,
-+      },
-+      { },            /* END */
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver smsc95xx_driver = {
-+      .name           = "smsc95xx",
-+      .id_table       = products,
-+      .probe          = usbnet_probe,
-+      .suspend        = smsc95xx_suspend,
-+      .resume         = smsc95xx_resume,
-+      .reset_resume   = smsc95xx_reset_resume,
-+      .disconnect     = usbnet_disconnect,
-+      .disable_hub_initiated_lpm = 1,
-+      .supports_autosuspend = 1,
-+};
-+
-+module_usb_driver(smsc95xx_driver);
-+
-+MODULE_AUTHOR("Nancy Lin");
-+MODULE_AUTHOR("Steve Glendinning <steve.glendinning@shawell.net>");
-+MODULE_DESCRIPTION("SMSC95XX USB 2.0 Ethernet Devices");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/smsc95xx.h backports-4.2.6-1/drivers/net/usb/smsc95xx.h
---- backports-4.2.6-1.org/drivers/net/usb/smsc95xx.h   1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/smsc95xx.h       2016-06-28 14:35:18.011973884 +0200
-@@ -0,0 +1,290 @@
-+ /***************************************************************************
-+ *
-+ * Copyright (C) 2007-2008 SMSC
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ *
-+ *****************************************************************************/
-+
-+#ifndef _SMSC95XX_H
-+#define _SMSC95XX_H
-+
-+/* Tx command words */
-+#define TX_CMD_A_DATA_OFFSET_         (0x001F0000)
-+#define TX_CMD_A_FIRST_SEG_           (0x00002000)
-+#define TX_CMD_A_LAST_SEG_            (0x00001000)
-+#define TX_CMD_A_BUF_SIZE_            (0x000007FF)
-+
-+#define TX_CMD_B_CSUM_ENABLE          (0x00004000)
-+#define TX_CMD_B_ADD_CRC_DISABLE_     (0x00002000)
-+#define TX_CMD_B_DISABLE_PADDING_     (0x00001000)
-+#define TX_CMD_B_PKT_BYTE_LENGTH_     (0x000007FF)
-+
-+/* Rx status word */
-+#define RX_STS_FF_                    (0x40000000)    /* Filter Fail */
-+#define RX_STS_FL_                    (0x3FFF0000)    /* Frame Length */
-+#define RX_STS_ES_                    (0x00008000)    /* Error Summary */
-+#define RX_STS_BF_                    (0x00002000)    /* Broadcast Frame */
-+#define RX_STS_LE_                    (0x00001000)    /* Length Error */
-+#define RX_STS_RF_                    (0x00000800)    /* Runt Frame */
-+#define RX_STS_MF_                    (0x00000400)    /* Multicast Frame */
-+#define RX_STS_TL_                    (0x00000080)    /* Frame too long */
-+#define RX_STS_CS_                    (0x00000040)    /* Collision Seen */
-+#define RX_STS_FT_                    (0x00000020)    /* Frame Type */
-+#define RX_STS_RW_                    (0x00000010)    /* Receive Watchdog */
-+#define RX_STS_ME_                    (0x00000008)    /* Mii Error */
-+#define RX_STS_DB_                    (0x00000004)    /* Dribbling */
-+#define RX_STS_CRC_                   (0x00000002)    /* CRC Error */
-+
-+/* SCSRs */
-+#define ID_REV                                (0x00)
-+#define ID_REV_CHIP_ID_MASK_          (0xFFFF0000)
-+#define ID_REV_CHIP_REV_MASK_         (0x0000FFFF)
-+#define ID_REV_CHIP_ID_9500_          (0x9500)
-+#define ID_REV_CHIP_ID_9500A_         (0x9E00)
-+#define ID_REV_CHIP_ID_9512_          (0xEC00)
-+#define ID_REV_CHIP_ID_9530_          (0x9530)
-+#define ID_REV_CHIP_ID_89530_         (0x9E08)
-+#define ID_REV_CHIP_ID_9730_          (0x9730)
-+
-+#define INT_STS                               (0x08)
-+#define INT_STS_TX_STOP_              (0x00020000)
-+#define INT_STS_RX_STOP_              (0x00010000)
-+#define INT_STS_PHY_INT_              (0x00008000)
-+#define INT_STS_TXE_                  (0x00004000)
-+#define INT_STS_TDFU_                 (0x00002000)
-+#define INT_STS_TDFO_                 (0x00001000)
-+#define INT_STS_RXDF_                 (0x00000800)
-+#define INT_STS_GPIOS_                        (0x000007FF)
-+#define INT_STS_CLEAR_ALL_            (0xFFFFFFFF)
-+
-+#define RX_CFG                                (0x0C)
-+#define RX_FIFO_FLUSH_                        (0x00000001)
-+
-+#define TX_CFG                                (0x10)
-+#define TX_CFG_ON_                    (0x00000004)
-+#define TX_CFG_STOP_                  (0x00000002)
-+#define TX_CFG_FIFO_FLUSH_            (0x00000001)
-+
-+#define HW_CFG                                (0x14)
-+#define HW_CFG_BIR_                   (0x00001000)
-+#define HW_CFG_LEDB_                  (0x00000800)
-+#define HW_CFG_RXDOFF_                        (0x00000600)
-+#define HW_CFG_DRP_                   (0x00000040)
-+#define HW_CFG_MEF_                   (0x00000020)
-+#define HW_CFG_LRST_                  (0x00000008)
-+#define HW_CFG_PSEL_                  (0x00000004)
-+#define HW_CFG_BCE_                   (0x00000002)
-+#define HW_CFG_SRST_                  (0x00000001)
-+
-+#define RX_FIFO_INF                   (0x18)
-+
-+#define PM_CTRL                               (0x20)
-+#define PM_CTL_RES_CLR_WKP_STS                (0x00000200)
-+#define PM_CTL_DEV_RDY_                       (0x00000080)
-+#define PM_CTL_SUS_MODE_              (0x00000060)
-+#define PM_CTL_SUS_MODE_0             (0x00000000)
-+#define PM_CTL_SUS_MODE_1             (0x00000020)
-+#define PM_CTL_SUS_MODE_2             (0x00000040)
-+#define PM_CTL_SUS_MODE_3             (0x00000060)
-+#define PM_CTL_PHY_RST_                       (0x00000010)
-+#define PM_CTL_WOL_EN_                        (0x00000008)
-+#define PM_CTL_ED_EN_                 (0x00000004)
-+#define PM_CTL_WUPS_                  (0x00000003)
-+#define PM_CTL_WUPS_NO_                       (0x00000000)
-+#define PM_CTL_WUPS_ED_                       (0x00000001)
-+#define PM_CTL_WUPS_WOL_              (0x00000002)
-+#define PM_CTL_WUPS_MULTI_            (0x00000003)
-+
-+#define LED_GPIO_CFG                  (0x24)
-+#define LED_GPIO_CFG_SPD_LED          (0x01000000)
-+#define LED_GPIO_CFG_LNK_LED          (0x00100000)
-+#define LED_GPIO_CFG_FDX_LED          (0x00010000)
-+
-+#define GPIO_CFG                      (0x28)
-+
-+#define AFC_CFG                               (0x2C)
-+
-+/* Hi watermark = 15.5Kb (~10 mtu pkts) */
-+/* low watermark = 3k (~2 mtu pkts) */
-+/* backpressure duration = ~ 350us */
-+/* Apply FC on any frame. */
-+#define AFC_CFG_DEFAULT                       (0x00F830A1)
-+
-+#define E2P_CMD                               (0x30)
-+#define E2P_CMD_BUSY_                 (0x80000000)
-+#define E2P_CMD_MASK_                 (0x70000000)
-+#define E2P_CMD_READ_                 (0x00000000)
-+#define E2P_CMD_EWDS_                 (0x10000000)
-+#define E2P_CMD_EWEN_                 (0x20000000)
-+#define E2P_CMD_WRITE_                        (0x30000000)
-+#define E2P_CMD_WRAL_                 (0x40000000)
-+#define E2P_CMD_ERASE_                        (0x50000000)
-+#define E2P_CMD_ERAL_                 (0x60000000)
-+#define E2P_CMD_RELOAD_                       (0x70000000)
-+#define E2P_CMD_TIMEOUT_              (0x00000400)
-+#define E2P_CMD_LOADED_                       (0x00000200)
-+#define E2P_CMD_ADDR_                 (0x000001FF)
-+
-+#define MAX_EEPROM_SIZE                       (512)
-+
-+#define E2P_DATA                      (0x34)
-+#define E2P_DATA_MASK_                        (0x000000FF)
-+
-+#define BURST_CAP                     (0x38)
-+
-+#define GPIO_WAKE                     (0x64)
-+
-+#define INT_EP_CTL                    (0x68)
-+#define INT_EP_CTL_INTEP_             (0x80000000)
-+#define INT_EP_CTL_MACRTO_            (0x00080000)
-+#define INT_EP_CTL_TX_STOP_           (0x00020000)
-+#define INT_EP_CTL_RX_STOP_           (0x00010000)
-+#define INT_EP_CTL_PHY_INT_           (0x00008000)
-+#define INT_EP_CTL_TXE_                       (0x00004000)
-+#define INT_EP_CTL_TDFU_              (0x00002000)
-+#define INT_EP_CTL_TDFO_              (0x00001000)
-+#define INT_EP_CTL_RXDF_              (0x00000800)
-+#define INT_EP_CTL_GPIOS_             (0x000007FF)
-+
-+#define BULK_IN_DLY                   (0x6C)
-+
-+/* MAC CSRs */
-+#define MAC_CR                                (0x100)
-+#define MAC_CR_RXALL_                 (0x80000000)
-+#define MAC_CR_RCVOWN_                        (0x00800000)
-+#define MAC_CR_LOOPBK_                        (0x00200000)
-+#define MAC_CR_FDPX_                  (0x00100000)
-+#define MAC_CR_MCPAS_                 (0x00080000)
-+#define MAC_CR_PRMS_                  (0x00040000)
-+#define MAC_CR_INVFILT_                       (0x00020000)
-+#define MAC_CR_PASSBAD_                       (0x00010000)
-+#define MAC_CR_HFILT_                 (0x00008000)
-+#define MAC_CR_HPFILT_                        (0x00002000)
-+#define MAC_CR_LCOLL_                 (0x00001000)
-+#define MAC_CR_BCAST_                 (0x00000800)
-+#define MAC_CR_DISRTY_                        (0x00000400)
-+#define MAC_CR_PADSTR_                        (0x00000100)
-+#define MAC_CR_BOLMT_MASK             (0x000000C0)
-+#define MAC_CR_DFCHK_                 (0x00000020)
-+#define MAC_CR_TXEN_                  (0x00000008)
-+#define MAC_CR_RXEN_                  (0x00000004)
-+
-+#define ADDRH                         (0x104)
-+
-+#define ADDRL                         (0x108)
-+
-+#define HASHH                         (0x10C)
-+
-+#define HASHL                         (0x110)
-+
-+#define MII_ADDR                      (0x114)
-+#define MII_WRITE_                    (0x02)
-+#define MII_BUSY_                     (0x01)
-+#define MII_READ_                     (0x00) /* ~of MII Write bit */
-+
-+#define MII_DATA                      (0x118)
-+
-+#define FLOW                          (0x11C)
-+#define FLOW_FCPT_                    (0xFFFF0000)
-+#define FLOW_FCPASS_                  (0x00000004)
-+#define FLOW_FCEN_                    (0x00000002)
-+#define FLOW_FCBSY_                   (0x00000001)
-+
-+#define VLAN1                         (0x120)
-+
-+#define VLAN2                         (0x124)
-+
-+#define WUFF                          (0x128)
-+#define LAN9500_WUFF_NUM              (4)
-+#define LAN9500A_WUFF_NUM             (8)
-+
-+#define WUCSR                         (0x12C)
-+#define WUCSR_WFF_PTR_RST_            (0x80000000)
-+#define WUCSR_GUE_                    (0x00000200)
-+#define WUCSR_WUFR_                   (0x00000040)
-+#define WUCSR_MPR_                    (0x00000020)
-+#define WUCSR_WAKE_EN_                        (0x00000004)
-+#define WUCSR_MPEN_                   (0x00000002)
-+
-+#define COE_CR                                (0x130)
-+#define Tx_COE_EN_                    (0x00010000)
-+#define Rx_COE_MODE_                  (0x00000002)
-+#define Rx_COE_EN_                    (0x00000001)
-+
-+/* Vendor-specific PHY Definitions */
-+
-+/* EDPD NLP / crossover time configuration (LAN9500A only) */
-+#define PHY_EDPD_CONFIG                       (16)
-+#define PHY_EDPD_CONFIG_TX_NLP_EN_    ((u16)0x8000)
-+#define PHY_EDPD_CONFIG_TX_NLP_1000_  ((u16)0x0000)
-+#define PHY_EDPD_CONFIG_TX_NLP_768_   ((u16)0x2000)
-+#define PHY_EDPD_CONFIG_TX_NLP_512_   ((u16)0x4000)
-+#define PHY_EDPD_CONFIG_TX_NLP_256_   ((u16)0x6000)
-+#define PHY_EDPD_CONFIG_RX_1_NLP_     ((u16)0x1000)
-+#define PHY_EDPD_CONFIG_RX_NLP_64_    ((u16)0x0000)
-+#define PHY_EDPD_CONFIG_RX_NLP_256_   ((u16)0x0400)
-+#define PHY_EDPD_CONFIG_RX_NLP_512_   ((u16)0x0800)
-+#define PHY_EDPD_CONFIG_RX_NLP_1000_  ((u16)0x0C00)
-+#define PHY_EDPD_CONFIG_EXT_CROSSOVER_        ((u16)0x0001)
-+#define PHY_EDPD_CONFIG_DEFAULT               (PHY_EDPD_CONFIG_TX_NLP_EN_ | \
-+                                       PHY_EDPD_CONFIG_TX_NLP_768_ | \
-+                                       PHY_EDPD_CONFIG_RX_1_NLP_)
-+
-+/* Mode Control/Status Register */
-+#define PHY_MODE_CTRL_STS             (17)
-+#define MODE_CTRL_STS_EDPWRDOWN_      ((u16)0x2000)
-+#define MODE_CTRL_STS_ENERGYON_               ((u16)0x0002)
-+
-+#define SPECIAL_CTRL_STS              (27)
-+#define SPECIAL_CTRL_STS_OVRRD_AMDIX_ ((u16)0x8000)
-+#define SPECIAL_CTRL_STS_AMDIX_ENABLE_        ((u16)0x4000)
-+#define SPECIAL_CTRL_STS_AMDIX_STATE_ ((u16)0x2000)
-+
-+#define PHY_INT_SRC                   (29)
-+#define PHY_INT_SRC_ENERGY_ON_                ((u16)0x0080)
-+#define PHY_INT_SRC_ANEG_COMP_                ((u16)0x0040)
-+#define PHY_INT_SRC_REMOTE_FAULT_     ((u16)0x0020)
-+#define PHY_INT_SRC_LINK_DOWN_                ((u16)0x0010)
-+
-+#define PHY_INT_MASK                  (30)
-+#define PHY_INT_MASK_ENERGY_ON_               ((u16)0x0080)
-+#define PHY_INT_MASK_ANEG_COMP_               ((u16)0x0040)
-+#define PHY_INT_MASK_REMOTE_FAULT_    ((u16)0x0020)
-+#define PHY_INT_MASK_LINK_DOWN_               ((u16)0x0010)
-+#define PHY_INT_MASK_DEFAULT_         (PHY_INT_MASK_ANEG_COMP_ | \
-+                                       PHY_INT_MASK_LINK_DOWN_)
-+
-+#define PHY_SPECIAL                   (31)
-+#define PHY_SPECIAL_SPD_              ((u16)0x001C)
-+#define PHY_SPECIAL_SPD_10HALF_               ((u16)0x0004)
-+#define PHY_SPECIAL_SPD_10FULL_               ((u16)0x0014)
-+#define PHY_SPECIAL_SPD_100HALF_      ((u16)0x0008)
-+#define PHY_SPECIAL_SPD_100FULL_      ((u16)0x0018)
-+
-+/* USB Vendor Requests */
-+#define USB_VENDOR_REQUEST_WRITE_REGISTER     0xA0
-+#define USB_VENDOR_REQUEST_READ_REGISTER      0xA1
-+#define USB_VENDOR_REQUEST_GET_STATS          0xA2
-+
-+/* Interrupt Endpoint status word bitfields */
-+#define INT_ENP_TX_STOP_              ((u32)BIT(17))
-+#define INT_ENP_RX_STOP_              ((u32)BIT(16))
-+#define INT_ENP_PHY_INT_              ((u32)BIT(15))
-+#define INT_ENP_TXE_                  ((u32)BIT(14))
-+#define INT_ENP_TDFU_                 ((u32)BIT(13))
-+#define INT_ENP_TDFO_                 ((u32)BIT(12))
-+#define INT_ENP_RXDF_                 ((u32)BIT(11))
-+
-+#endif /* _SMSC95XX_H */
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/sr9700.c backports-4.2.6-1/drivers/net/usb/sr9700.c
---- backports-4.2.6-1.org/drivers/net/usb/sr9700.c     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/sr9700.c 2016-06-28 14:35:18.011973884 +0200
-@@ -0,0 +1,559 @@
-+/*
-+ * CoreChip-sz SR9700 one chip USB 1.1 Ethernet Devices
-+ *
-+ * Author : Liu Junliang <liujunliang_ljl@163.com>
-+ *
-+ * Based on dm9601.c
-+ *
-+ * This file is licensed under the terms of the GNU General Public License
-+ * version 2.  This program is licensed "as is" without any warranty of any
-+ * kind, whether express or implied.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/sched.h>
-+#include <linux/stddef.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/crc32.h>
-+#include <linux/usb/usbnet.h>
-+
-+#include "sr9700.h"
-+
-+static int sr_read(struct usbnet *dev, u8 reg, u16 length, void *data)
-+{
-+      int err;
-+
-+      err = usbnet_read_cmd(dev, SR_RD_REGS, SR_REQ_RD_REG, 0, reg, data,
-+                            length);
-+      if ((err != length) && (err >= 0))
-+              err = -EINVAL;
-+      return err;
-+}
-+
-+static int sr_write(struct usbnet *dev, u8 reg, u16 length, void *data)
-+{
-+      int err;
-+
-+      err = usbnet_write_cmd(dev, SR_WR_REGS, SR_REQ_WR_REG, 0, reg, data,
-+                             length);
-+      if ((err >= 0) && (err < length))
-+              err = -EINVAL;
-+      return err;
-+}
-+
-+static int sr_read_reg(struct usbnet *dev, u8 reg, u8 *value)
-+{
-+      return sr_read(dev, reg, 1, value);
-+}
-+
-+static int sr_write_reg(struct usbnet *dev, u8 reg, u8 value)
-+{
-+      return usbnet_write_cmd(dev, SR_WR_REGS, SR_REQ_WR_REG,
-+                              value, reg, NULL, 0);
-+}
-+
-+static void sr_write_async(struct usbnet *dev, u8 reg, u16 length, void *data)
-+{
-+      usbnet_write_cmd_async(dev, SR_WR_REGS, SR_REQ_WR_REG,
-+                             0, reg, data, length);
-+}
-+
-+static void sr_write_reg_async(struct usbnet *dev, u8 reg, u8 value)
-+{
-+      usbnet_write_cmd_async(dev, SR_WR_REGS, SR_REQ_WR_REG,
-+                             value, reg, NULL, 0);
-+}
-+
-+static int wait_phy_eeprom_ready(struct usbnet *dev, int phy)
-+{
-+      int i;
-+
-+      for (i = 0; i < SR_SHARE_TIMEOUT; i++) {
-+              u8 tmp = 0;
-+              int ret;
-+
-+              udelay(1);
-+              ret = sr_read_reg(dev, SR_EPCR, &tmp);
-+              if (ret < 0)
-+                      return ret;
-+
-+              /* ready */
-+              if (!(tmp & EPCR_ERRE))
-+                      return 0;
-+      }
-+
-+      netdev_err(dev->net, "%s write timed out!\n", phy ? "phy" : "eeprom");
-+
-+      return -EIO;
-+}
-+
-+static int sr_share_read_word(struct usbnet *dev, int phy, u8 reg,
-+                            __le16 *value)
-+{
-+      int ret;
-+
-+      mutex_lock(&dev->phy_mutex);
-+
-+      sr_write_reg(dev, SR_EPAR, phy ? (reg | EPAR_PHY_ADR) : reg);
-+      sr_write_reg(dev, SR_EPCR, phy ? (EPCR_EPOS | EPCR_ERPRR) : EPCR_ERPRR);
-+
-+      ret = wait_phy_eeprom_ready(dev, phy);
-+      if (ret < 0)
-+              goto out_unlock;
-+
-+      sr_write_reg(dev, SR_EPCR, 0x0);
-+      ret = sr_read(dev, SR_EPDR, 2, value);
-+
-+      netdev_dbg(dev->net, "read shared %d 0x%02x returned 0x%04x, %d\n",
-+                 phy, reg, *value, ret);
-+
-+out_unlock:
-+      mutex_unlock(&dev->phy_mutex);
-+      return ret;
-+}
-+
-+static int sr_share_write_word(struct usbnet *dev, int phy, u8 reg,
-+                             __le16 value)
-+{
-+      int ret;
-+
-+      mutex_lock(&dev->phy_mutex);
-+
-+      ret = sr_write(dev, SR_EPDR, 2, &value);
-+      if (ret < 0)
-+              goto out_unlock;
-+
-+      sr_write_reg(dev, SR_EPAR, phy ? (reg | EPAR_PHY_ADR) : reg);
-+      sr_write_reg(dev, SR_EPCR, phy ? (EPCR_WEP | EPCR_EPOS | EPCR_ERPRW) :
-+                  (EPCR_WEP | EPCR_ERPRW));
-+
-+      ret = wait_phy_eeprom_ready(dev, phy);
-+      if (ret < 0)
-+              goto out_unlock;
-+
-+      sr_write_reg(dev, SR_EPCR, 0x0);
-+
-+out_unlock:
-+      mutex_unlock(&dev->phy_mutex);
-+      return ret;
-+}
-+
-+static int sr_read_eeprom_word(struct usbnet *dev, u8 offset, void *value)
-+{
-+      return sr_share_read_word(dev, 0, offset, value);
-+}
-+
-+static int sr9700_get_eeprom_len(struct net_device *netdev)
-+{
-+      return SR_EEPROM_LEN;
-+}
-+
-+static int sr9700_get_eeprom(struct net_device *netdev,
-+                           struct ethtool_eeprom *eeprom, u8 *data)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      __le16 *buf = (__le16 *)data;
-+      int ret = 0;
-+      int i;
-+
-+      /* access is 16bit */
-+      if ((eeprom->offset & 0x01) || (eeprom->len & 0x01))
-+              return -EINVAL;
-+
-+      for (i = 0; i < eeprom->len / 2; i++) {
-+              ret = sr_read_eeprom_word(dev, eeprom->offset / 2 + i, buf + i);
-+              if (ret < 0)
-+                      break;
-+      }
-+
-+      return ret;
-+}
-+
-+static int sr_mdio_read(struct net_device *netdev, int phy_id, int loc)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      __le16 res;
-+      int rc = 0;
-+
-+      if (phy_id) {
-+              netdev_dbg(netdev, "Only internal phy supported\n");
-+              return 0;
-+      }
-+
-+      /* Access NSR_LINKST bit for link status instead of MII_BMSR */
-+      if (loc == MII_BMSR) {
-+              u8 value;
-+
-+              sr_read_reg(dev, SR_NSR, &value);
-+              if (value & NSR_LINKST)
-+                      rc = 1;
-+      }
-+      sr_share_read_word(dev, 1, loc, &res);
-+      if (rc == 1)
-+              res = le16_to_cpu(res) | BMSR_LSTATUS;
-+      else
-+              res = le16_to_cpu(res) & ~BMSR_LSTATUS;
-+
-+      netdev_dbg(netdev, "sr_mdio_read() phy_id=0x%02x, loc=0x%02x, returns=0x%04x\n",
-+                 phy_id, loc, res);
-+
-+      return res;
-+}
-+
-+static void sr_mdio_write(struct net_device *netdev, int phy_id, int loc,
-+                        int val)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      __le16 res = cpu_to_le16(val);
-+
-+      if (phy_id) {
-+              netdev_dbg(netdev, "Only internal phy supported\n");
-+              return;
-+      }
-+
-+      netdev_dbg(netdev, "sr_mdio_write() phy_id=0x%02x, loc=0x%02x, val=0x%04x\n",
-+                 phy_id, loc, val);
-+
-+      sr_share_write_word(dev, 1, loc, res);
-+}
-+
-+static u32 sr9700_get_link(struct net_device *netdev)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      u8 value = 0;
-+      int rc = 0;
-+
-+      /* Get the Link Status directly */
-+      sr_read_reg(dev, SR_NSR, &value);
-+      if (value & NSR_LINKST)
-+              rc = 1;
-+
-+      return rc;
-+}
-+
-+static int sr9700_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+
-+      return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
-+}
-+
-+static const struct ethtool_ops sr9700_ethtool_ops = {
-+      .get_drvinfo    = usbnet_get_drvinfo,
-+      .get_link       = sr9700_get_link,
-+      .get_msglevel   = usbnet_get_msglevel,
-+      .set_msglevel   = usbnet_set_msglevel,
-+      .get_eeprom_len = sr9700_get_eeprom_len,
-+      .get_eeprom     = sr9700_get_eeprom,
-+      .get_settings   = usbnet_get_settings,
-+      .set_settings   = usbnet_set_settings,
-+      .nway_reset     = usbnet_nway_reset,
-+};
-+
-+static void sr9700_set_multicast(struct net_device *netdev)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      /* We use the 20 byte dev->data for our 8 byte filter buffer
-+       * to avoid allocating memory that is tricky to free later
-+       */
-+      u8 *hashes = (u8 *)&dev->data;
-+      /* rx_ctl setting : enable, disable_long, disable_crc */
-+      u8 rx_ctl = RCR_RXEN | RCR_DIS_CRC | RCR_DIS_LONG;
-+
-+      memset(hashes, 0x00, SR_MCAST_SIZE);
-+      /* broadcast address */
-+      hashes[SR_MCAST_SIZE - 1] |= SR_MCAST_ADDR_FLAG;
-+      if (netdev->flags & IFF_PROMISC) {
-+              rx_ctl |= RCR_PRMSC;
-+      } else if (netdev->flags & IFF_ALLMULTI ||
-+                 netdev_mc_count(netdev) > SR_MCAST_MAX) {
-+              rx_ctl |= RCR_RUNT;
-+      } else if (!netdev_mc_empty(netdev)) {
-+              struct netdev_hw_addr *ha;
-+
-+              netdev_for_each_mc_addr(ha, netdev) {
-+                      u32 crc = ether_crc(ETH_ALEN, ha->addr) >> 26;
-+                      hashes[crc >> 3] |= 1 << (crc & 0x7);
-+              }
-+      }
-+
-+      sr_write_async(dev, SR_MAR, SR_MCAST_SIZE, hashes);
-+      sr_write_reg_async(dev, SR_RCR, rx_ctl);
-+}
-+
-+static int sr9700_set_mac_address(struct net_device *netdev, void *p)
-+{
-+      struct usbnet *dev = netdev_priv(netdev);
-+      struct sockaddr *addr = p;
-+
-+      if (!is_valid_ether_addr(addr->sa_data)) {
-+              netdev_err(netdev, "not setting invalid mac address %pM\n",
-+                         addr->sa_data);
-+              return -EINVAL;
-+      }
-+
-+      memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
-+      sr_write_async(dev, SR_PAR, 6, netdev->dev_addr);
-+
-+      return 0;
-+}
-+
-+static const struct net_device_ops sr9700_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = usbnet_change_mtu,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = sr9700_ioctl,
-+      .ndo_set_rx_mode        = sr9700_set_multicast,
-+      .ndo_set_mac_address    = sr9700_set_mac_address,
-+};
-+
-+static int sr9700_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      struct net_device *netdev;
-+      struct mii_if_info *mii;
-+      int ret;
-+
-+      ret = usbnet_get_endpoints(dev, intf);
-+      if (ret)
-+              goto out;
-+
-+      netdev = dev->net;
-+
-+      netdev->netdev_ops = &sr9700_netdev_ops;
-+      netdev->ethtool_ops = &sr9700_ethtool_ops;
-+      netdev->hard_header_len += SR_TX_OVERHEAD;
-+      dev->hard_mtu = netdev->mtu + netdev->hard_header_len;
-+      /* bulkin buffer is preferably not less than 3K */
-+      dev->rx_urb_size = 3072;
-+
-+      mii = &dev->mii;
-+      mii->dev = netdev;
-+      mii->mdio_read = sr_mdio_read;
-+      mii->mdio_write = sr_mdio_write;
-+      mii->phy_id_mask = 0x1f;
-+      mii->reg_num_mask = 0x1f;
-+
-+      sr_write_reg(dev, SR_NCR, NCR_RST);
-+      udelay(20);
-+
-+      /* read MAC
-+       * After Chip Power on, the Chip will reload the MAC from
-+       * EEPROM automatically to PAR. In case there is no EEPROM externally,
-+       * a default MAC address is stored in PAR for making chip work properly.
-+       */
-+      if (sr_read(dev, SR_PAR, ETH_ALEN, netdev->dev_addr) < 0) {
-+              netdev_err(netdev, "Error reading MAC address\n");
-+              ret = -ENODEV;
-+              goto out;
-+      }
-+
-+      /* power up and reset phy */
-+      sr_write_reg(dev, SR_PRR, PRR_PHY_RST);
-+      /* at least 10ms, here 20ms for safe */
-+      mdelay(20);
-+      sr_write_reg(dev, SR_PRR, 0);
-+      /* at least 1ms, here 2ms for reading right register */
-+      udelay(2 * 1000);
-+
-+      /* receive broadcast packets */
-+      sr9700_set_multicast(netdev);
-+
-+      sr_mdio_write(netdev, mii->phy_id, MII_BMCR, BMCR_RESET);
-+      sr_mdio_write(netdev, mii->phy_id, MII_ADVERTISE, ADVERTISE_ALL |
-+                    ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP);
-+      mii_nway_restart(mii);
-+
-+out:
-+      return ret;
-+}
-+
-+static int sr9700_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      struct sk_buff *sr_skb;
-+      int len;
-+
-+      /* skb content (packets) format :
-+       *                    p0            p1            p2    ......    pm
-+       *                 /      \
-+       *            /                \
-+       *        /                            \
-+       *  /                                        \
-+       * p0b0 p0b1 p0b2 p0b3 ...... p0b(n-4) p0b(n-3)...p0bn
-+       *
-+       * p0 : packet 0
-+       * p0b0 : packet 0 byte 0
-+       *
-+       * b0: rx status
-+       * b1: packet length (incl crc) low
-+       * b2: packet length (incl crc) high
-+       * b3..n-4: packet data
-+       * bn-3..bn: ethernet packet crc
-+       */
-+      if (unlikely(skb->len < SR_RX_OVERHEAD)) {
-+              netdev_err(dev->net, "unexpected tiny rx frame\n");
-+              return 0;
-+      }
-+
-+      /* one skb may contains multiple packets */
-+      while (skb->len > SR_RX_OVERHEAD) {
-+              if (skb->data[0] != 0x40)
-+                      return 0;
-+
-+              /* ignore the CRC length */
-+              len = (skb->data[1] | (skb->data[2] << 8)) - 4;
-+
-+              if (len > ETH_FRAME_LEN)
-+                      return 0;
-+
-+              /* the last packet of current skb */
-+              if (skb->len == (len + SR_RX_OVERHEAD)) {
-+                      skb_pull(skb, 3);
-+                      skb->len = len;
-+                      skb_set_tail_pointer(skb, len);
-+                      skb->truesize = len + sizeof(struct sk_buff);
-+                      return 2;
-+              }
-+
-+              /* skb_clone is used for address align */
-+              sr_skb = skb_clone(skb, GFP_ATOMIC);
-+              if (!sr_skb)
-+                      return 0;
-+
-+              sr_skb->len = len;
-+              sr_skb->data = skb->data + 3;
-+              skb_set_tail_pointer(sr_skb, len);
-+              sr_skb->truesize = len + sizeof(struct sk_buff);
-+              usbnet_skb_return(dev, sr_skb);
-+
-+              skb_pull(skb, len + SR_RX_OVERHEAD);
-+      };
-+
-+      return 0;
-+}
-+
-+static struct sk_buff *sr9700_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
-+                                     gfp_t flags)
-+{
-+      int len;
-+
-+      /* SR9700 can only send out one ethernet packet at once.
-+       *
-+       * b0 b1 b2 b3 ...... b(n-4) b(n-3)...bn
-+       *
-+       * b0: rx status
-+       * b1: packet length (incl crc) low
-+       * b2: packet length (incl crc) high
-+       * b3..n-4: packet data
-+       * bn-3..bn: ethernet packet crc
-+       */
-+
-+      len = skb->len;
-+
-+      if (skb_headroom(skb) < SR_TX_OVERHEAD) {
-+              struct sk_buff *skb2;
-+
-+              skb2 = skb_copy_expand(skb, SR_TX_OVERHEAD, 0, flags);
-+              dev_kfree_skb_any(skb);
-+              skb = skb2;
-+              if (!skb)
-+                      return NULL;
-+      }
-+
-+      __skb_push(skb, SR_TX_OVERHEAD);
-+
-+      /* usbnet adds padding if length is a multiple of packet size
-+       * if so, adjust length value in header
-+       */
-+      if ((skb->len % dev->maxpacket) == 0)
-+              len++;
-+
-+      skb->data[0] = len;
-+      skb->data[1] = len >> 8;
-+
-+      return skb;
-+}
-+
-+static void sr9700_status(struct usbnet *dev, struct urb *urb)
-+{
-+      int link;
-+      u8 *buf;
-+
-+      /* format:
-+         b0: net status
-+         b1: tx status 1
-+         b2: tx status 2
-+         b3: rx status
-+         b4: rx overflow
-+         b5: rx count
-+         b6: tx count
-+         b7: gpr
-+      */
-+
-+      if (urb->actual_length < 8)
-+              return;
-+
-+      buf = urb->transfer_buffer;
-+
-+      link = !!(buf[0] & 0x40);
-+      if (netif_carrier_ok(dev->net) != link) {
-+              usbnet_link_change(dev, link, 1);
-+              netdev_dbg(dev->net, "Link Status is: %d\n", link);
-+      }
-+}
-+
-+static int sr9700_link_reset(struct usbnet *dev)
-+{
-+      struct ethtool_cmd ecmd;
-+
-+      mii_check_media(&dev->mii, 1, 1);
-+      mii_ethtool_gset(&dev->mii, &ecmd);
-+
-+      netdev_dbg(dev->net, "link_reset() speed: %d duplex: %d\n",
-+                 ecmd.speed, ecmd.duplex);
-+
-+      return 0;
-+}
-+
-+static const struct driver_info sr9700_driver_info = {
-+      .description    = "CoreChip SR9700 USB Ethernet",
-+      .flags          = FLAG_ETHER,
-+      .bind           = sr9700_bind,
-+      .rx_fixup       = sr9700_rx_fixup,
-+      .tx_fixup       = sr9700_tx_fixup,
-+      .status         = sr9700_status,
-+      .link_reset     = sr9700_link_reset,
-+      .reset          = sr9700_link_reset,
-+};
-+
-+static const struct usb_device_id products[] = {
-+      {
-+              USB_DEVICE(0x0fe6, 0x9700),     /* SR9700 device */
-+              .driver_info = (unsigned long)&sr9700_driver_info,
-+      },
-+      {},                     /* END */
-+};
-+
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver sr9700_usb_driver = {
-+      .name           = "sr9700",
-+      .id_table       = products,
-+      .probe          = usbnet_probe,
-+      .disconnect     = usbnet_disconnect,
-+      .suspend        = usbnet_suspend,
-+      .resume         = usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(sr9700_usb_driver);
-+
-+MODULE_AUTHOR("liujl <liujunliang_ljl@163.com>");
-+MODULE_DESCRIPTION("SR9700 one chip USB 1.1 USB to Ethernet device from http://www.corechip-sz.com/");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/sr9700.h backports-4.2.6-1/drivers/net/usb/sr9700.h
---- backports-4.2.6-1.org/drivers/net/usb/sr9700.h     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/sr9700.h 2016-06-28 14:35:18.011973884 +0200
-@@ -0,0 +1,173 @@
-+/*
-+ * CoreChip-sz SR9700 one chip USB 1.1 Ethernet Devices
-+ *
-+ * Author : Liu Junliang <liujunliang_ljl@163.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ */
-+
-+#ifndef _SR9700_H
-+#define       _SR9700_H
-+
-+/* sr9700 spec. register table on Linux platform */
-+
-+/* Network Control Reg */
-+#define       SR_NCR                  0x00
-+#define               NCR_RST                 (1 << 0)
-+#define               NCR_LBK                 (3 << 1)
-+#define               NCR_FDX                 (1 << 3)
-+#define               NCR_WAKEEN              (1 << 6)
-+/* Network Status Reg */
-+#define       SR_NSR                  0x01
-+#define               NSR_RXRDY               (1 << 0)
-+#define               NSR_RXOV                (1 << 1)
-+#define               NSR_TX1END              (1 << 2)
-+#define               NSR_TX2END              (1 << 3)
-+#define               NSR_TXFULL              (1 << 4)
-+#define               NSR_WAKEST              (1 << 5)
-+#define               NSR_LINKST              (1 << 6)
-+#define               NSR_SPEED               (1 << 7)
-+/* Tx Control Reg */
-+#define       SR_TCR                  0x02
-+#define               TCR_CRC_DIS             (1 << 1)
-+#define               TCR_PAD_DIS             (1 << 2)
-+#define               TCR_LC_CARE             (1 << 3)
-+#define               TCR_CRS_CARE    (1 << 4)
-+#define               TCR_EXCECM              (1 << 5)
-+#define               TCR_LF_EN               (1 << 6)
-+/* Tx Status Reg for Packet Index 1 */
-+#define       SR_TSR1         0x03
-+#define               TSR1_EC                 (1 << 2)
-+#define               TSR1_COL                (1 << 3)
-+#define               TSR1_LC                 (1 << 4)
-+#define               TSR1_NC                 (1 << 5)
-+#define               TSR1_LOC                (1 << 6)
-+#define               TSR1_TLF                (1 << 7)
-+/* Tx Status Reg for Packet Index 2 */
-+#define       SR_TSR2         0x04
-+#define               TSR2_EC                 (1 << 2)
-+#define               TSR2_COL                (1 << 3)
-+#define               TSR2_LC                 (1 << 4)
-+#define               TSR2_NC                 (1 << 5)
-+#define               TSR2_LOC                (1 << 6)
-+#define               TSR2_TLF                (1 << 7)
-+/* Rx Control Reg*/
-+#define       SR_RCR                  0x05
-+#define               RCR_RXEN                (1 << 0)
-+#define               RCR_PRMSC               (1 << 1)
-+#define               RCR_RUNT                (1 << 2)
-+#define               RCR_ALL                 (1 << 3)
-+#define               RCR_DIS_CRC             (1 << 4)
-+#define               RCR_DIS_LONG    (1 << 5)
-+/* Rx Status Reg */
-+#define       SR_RSR                  0x06
-+#define               RSR_AE                  (1 << 2)
-+#define               RSR_MF                  (1 << 6)
-+#define               RSR_RF                  (1 << 7)
-+/* Rx Overflow Counter Reg */
-+#define       SR_ROCR         0x07
-+#define               ROCR_ROC                (0x7F << 0)
-+#define               ROCR_RXFU               (1 << 7)
-+/* Back Pressure Threshold Reg */
-+#define       SR_BPTR         0x08
-+#define               BPTR_JPT                (0x0F << 0)
-+#define               BPTR_BPHW               (0x0F << 4)
-+/* Flow Control Threshold Reg */
-+#define       SR_FCTR         0x09
-+#define               FCTR_LWOT               (0x0F << 0)
-+#define               FCTR_HWOT               (0x0F << 4)
-+/* rx/tx Flow Control Reg */
-+#define       SR_FCR                  0x0A
-+#define               FCR_FLCE                (1 << 0)
-+#define               FCR_BKPA                (1 << 4)
-+#define               FCR_TXPEN               (1 << 5)
-+#define               FCR_TXPF                (1 << 6)
-+#define               FCR_TXP0                (1 << 7)
-+/* Eeprom & Phy Control Reg */
-+#define       SR_EPCR         0x0B
-+#define               EPCR_ERRE               (1 << 0)
-+#define               EPCR_ERPRW              (1 << 1)
-+#define               EPCR_ERPRR              (1 << 2)
-+#define               EPCR_EPOS               (1 << 3)
-+#define               EPCR_WEP                (1 << 4)
-+/* Eeprom & Phy Address Reg */
-+#define       SR_EPAR         0x0C
-+#define               EPAR_EROA               (0x3F << 0)
-+#define               EPAR_PHY_ADR_MASK       (0x03 << 6)
-+#define               EPAR_PHY_ADR            (0x01 << 6)
-+/* Eeprom &   Phy Data Reg */
-+#define       SR_EPDR         0x0D    /* 0x0D ~ 0x0E for Data Reg Low & High */
-+/* Wakeup Control Reg */
-+#define       SR_WCR                  0x0F
-+#define               WCR_MAGICST             (1 << 0)
-+#define               WCR_LINKST              (1 << 2)
-+#define               WCR_MAGICEN             (1 << 3)
-+#define               WCR_LINKEN              (1 << 5)
-+/* Physical Address Reg */
-+#define       SR_PAR                  0x10    /* 0x10 ~ 0x15 6 bytes for PAR */
-+/* Multicast Address Reg */
-+#define       SR_MAR                  0x16    /* 0x16 ~ 0x1D 8 bytes for MAR */
-+/* 0x1e unused */
-+/* Phy Reset Reg */
-+#define       SR_PRR                  0x1F
-+#define               PRR_PHY_RST             (1 << 0)
-+/* Tx sdram Write Pointer Address Low */
-+#define       SR_TWPAL                0x20
-+/* Tx sdram Write Pointer Address High */
-+#define       SR_TWPAH                0x21
-+/* Tx sdram Read Pointer Address Low */
-+#define       SR_TRPAL                0x22
-+/* Tx sdram Read Pointer Address High */
-+#define       SR_TRPAH                0x23
-+/* Rx sdram Write Pointer Address Low */
-+#define       SR_RWPAL                0x24
-+/* Rx sdram Write Pointer Address High */
-+#define       SR_RWPAH                0x25
-+/* Rx sdram Read Pointer Address Low */
-+#define       SR_RRPAL                0x26
-+/* Rx sdram Read Pointer Address High */
-+#define       SR_RRPAH                0x27
-+/* Vendor ID register */
-+#define       SR_VID                  0x28    /* 0x28 ~ 0x29 2 bytes for VID */
-+/* Product ID register */
-+#define       SR_PID                  0x2A    /* 0x2A ~ 0x2B 2 bytes for PID */
-+/* CHIP Revision register */
-+#define       SR_CHIPR                0x2C
-+/* 0x2D --> 0xEF unused */
-+/* USB Device Address */
-+#define       SR_USBDA                0xF0
-+#define               USBDA_USBFA             (0x7F << 0)
-+/* RX packet Counter Reg */
-+#define       SR_RXC                  0xF1
-+/* Tx packet Counter & USB Status Reg */
-+#define       SR_TXC_USBS             0xF2
-+#define               TXC_USBS_TXC0           (1 << 0)
-+#define               TXC_USBS_TXC1           (1 << 1)
-+#define               TXC_USBS_TXC2           (1 << 2)
-+#define               TXC_USBS_EP1RDY         (1 << 5)
-+#define               TXC_USBS_SUSFLAG        (1 << 6)
-+#define               TXC_USBS_RXFAULT        (1 << 7)
-+/* USB Control register */
-+#define       SR_USBC                 0xF4
-+#define               USBC_EP3NAK             (1 << 4)
-+#define               USBC_EP3ACK             (1 << 5)
-+
-+/* Register access commands and flags */
-+#define       SR_RD_REGS              0x00
-+#define       SR_WR_REGS              0x01
-+#define       SR_WR_REG               0x03
-+#define       SR_REQ_RD_REG   (USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE)
-+#define       SR_REQ_WR_REG   (USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE)
-+
-+/* parameters */
-+#define       SR_SHARE_TIMEOUT        1000
-+#define       SR_EEPROM_LEN           256
-+#define       SR_MCAST_SIZE           8
-+#define       SR_MCAST_ADDR_FLAG      0x80
-+#define       SR_MCAST_MAX            64
-+#define       SR_TX_OVERHEAD          2       /* 2bytes header */
-+#define       SR_RX_OVERHEAD          7       /* 3bytes header + 4crc tail */
-+
-+#endif        /* _SR9700_H */
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/sr9800.c backports-4.2.6-1/drivers/net/usb/sr9800.c
---- backports-4.2.6-1.org/drivers/net/usb/sr9800.c     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/sr9800.c 2016-06-28 14:35:18.015307217 +0200
-@@ -0,0 +1,875 @@
-+/* CoreChip-sz SR9800 one chip USB 2.0 Ethernet Devices
-+ *
-+ * Author : Liu Junliang <liujunliang_ljl@163.com>
-+ *
-+ * Based on asix_common.c, asix_devices.c
-+ *
-+ * This file is licensed under the terms of the GNU General Public License
-+ * version 2.  This program is licensed "as is" without any warranty of any
-+ * kind, whether express or implied.*
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kmod.h>
-+#include <linux/init.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/usb.h>
-+#include <linux/crc32.h>
-+#include <linux/usb/usbnet.h>
-+#include <linux/slab.h>
-+#include <linux/if_vlan.h>
-+
-+#include "sr9800.h"
-+
-+static int sr_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                          u16 size, void *data)
-+{
-+      int err;
-+
-+      err = usbnet_read_cmd(dev, cmd, SR_REQ_RD_REG, value, index,
-+                            data, size);
-+      if ((err != size) && (err >= 0))
-+              err = -EINVAL;
-+
-+      return err;
-+}
-+
-+static int sr_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                           u16 size, void *data)
-+{
-+      int err;
-+
-+      err = usbnet_write_cmd(dev, cmd, SR_REQ_WR_REG, value, index,
-+                            data, size);
-+      if ((err != size) && (err >= 0))
-+              err = -EINVAL;
-+
-+      return err;
-+}
-+
-+static void
-+sr_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-+                 u16 size, void *data)
-+{
-+      usbnet_write_cmd_async(dev, cmd, SR_REQ_WR_REG, value, index, data,
-+                             size);
-+}
-+
-+static int sr_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-+{
-+      int offset = 0;
-+
-+      /* This check is no longer done by usbnet */
-+      if (skb->len < dev->net->hard_header_len)
-+              return 0;
-+
-+      while (offset + sizeof(u32) < skb->len) {
-+              struct sk_buff *sr_skb;
-+              u16 size;
-+              u32 header = get_unaligned_le32(skb->data + offset);
-+
-+              offset += sizeof(u32);
-+              /* get the packet length */
-+              size = (u16) (header & 0x7ff);
-+              if (size != ((~header >> 16) & 0x07ff)) {
-+                      netdev_err(dev->net, "%s : Bad Header Length\n",
-+                                 __func__);
-+                      return 0;
-+              }
-+
-+              if ((size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) ||
-+                  (size + offset > skb->len)) {
-+                      netdev_err(dev->net, "%s : Bad RX Length %d\n",
-+                                 __func__, size);
-+                      return 0;
-+              }
-+              sr_skb = netdev_alloc_skb_ip_align(dev->net, size);
-+              if (!sr_skb)
-+                      return 0;
-+
-+              skb_put(sr_skb, size);
-+              memcpy(sr_skb->data, skb->data + offset, size);
-+              usbnet_skb_return(dev, sr_skb);
-+
-+              offset += (size + 1) & 0xfffe;
-+      }
-+
-+      if (skb->len != offset) {
-+              netdev_err(dev->net, "%s : Bad SKB Length %d\n", __func__,
-+                         skb->len);
-+              return 0;
-+      }
-+
-+      return 1;
-+}
-+
-+static struct sk_buff *sr_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
-+                                      gfp_t flags)
-+{
-+      int headroom = skb_headroom(skb);
-+      int tailroom = skb_tailroom(skb);
-+      u32 padbytes = 0xffff0000;
-+      u32 packet_len;
-+      int padlen;
-+
-+      padlen = ((skb->len + 4) % (dev->maxpacket - 1)) ? 0 : 4;
-+
-+      if ((!skb_cloned(skb)) && ((headroom + tailroom) >= (4 + padlen))) {
-+              if ((headroom < 4) || (tailroom < padlen)) {
-+                      skb->data = memmove(skb->head + 4, skb->data,
-+                                          skb->len);
-+                      skb_set_tail_pointer(skb, skb->len);
-+              }
-+      } else {
-+              struct sk_buff *skb2;
-+              skb2 = skb_copy_expand(skb, 4, padlen, flags);
-+              dev_kfree_skb_any(skb);
-+              skb = skb2;
-+              if (!skb)
-+                      return NULL;
-+      }
-+
-+      skb_push(skb, 4);
-+      packet_len = (((skb->len - 4) ^ 0x0000ffff) << 16) + (skb->len - 4);
-+      cpu_to_le32s(&packet_len);
-+      skb_copy_to_linear_data(skb, &packet_len, sizeof(packet_len));
-+
-+      if (padlen) {
-+              cpu_to_le32s(&padbytes);
-+              memcpy(skb_tail_pointer(skb), &padbytes, sizeof(padbytes));
-+              skb_put(skb, sizeof(padbytes));
-+      }
-+
-+      usbnet_set_skb_tx_stats(skb, 1, 0);
-+      return skb;
-+}
-+
-+static void sr_status(struct usbnet *dev, struct urb *urb)
-+{
-+      struct sr9800_int_data *event;
-+      int link;
-+
-+      if (urb->actual_length < 8)
-+              return;
-+
-+      event = urb->transfer_buffer;
-+      link = event->link & 0x01;
-+      if (netif_carrier_ok(dev->net) != link) {
-+              usbnet_link_change(dev, link, 1);
-+              netdev_dbg(dev->net, "Link Status is: %d\n", link);
-+      }
-+
-+      return;
-+}
-+
-+static inline int sr_set_sw_mii(struct usbnet *dev)
-+{
-+      int ret;
-+
-+      ret = sr_write_cmd(dev, SR_CMD_SET_SW_MII, 0x0000, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to enable software MII access\n");
-+      return ret;
-+}
-+
-+static inline int sr_set_hw_mii(struct usbnet *dev)
-+{
-+      int ret;
-+
-+      ret = sr_write_cmd(dev, SR_CMD_SET_HW_MII, 0x0000, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to enable hardware MII access\n");
-+      return ret;
-+}
-+
-+static inline int sr_get_phy_addr(struct usbnet *dev)
-+{
-+      u8 buf[2];
-+      int ret;
-+
-+      ret = sr_read_cmd(dev, SR_CMD_READ_PHY_ID, 0, 0, 2, buf);
-+      if (ret < 0) {
-+              netdev_err(dev->net, "%s : Error reading PHYID register:%02x\n",
-+                         __func__, ret);
-+              goto out;
-+      }
-+      netdev_dbg(dev->net, "%s : returning 0x%04x\n", __func__,
-+                 *((__le16 *)buf));
-+
-+      ret = buf[1];
-+
-+out:
-+      return ret;
-+}
-+
-+static int sr_sw_reset(struct usbnet *dev, u8 flags)
-+{
-+      int ret;
-+
-+      ret = sr_write_cmd(dev, SR_CMD_SW_RESET, flags, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to send software reset:%02x\n",
-+                         ret);
-+
-+      return ret;
-+}
-+
-+static u16 sr_read_rx_ctl(struct usbnet *dev)
-+{
-+      __le16 v;
-+      int ret;
-+
-+      ret = sr_read_cmd(dev, SR_CMD_READ_RX_CTL, 0, 0, 2, &v);
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Error reading RX_CTL register:%02x\n",
-+                         ret);
-+              goto out;
-+      }
-+
-+      ret = le16_to_cpu(v);
-+out:
-+      return ret;
-+}
-+
-+static int sr_write_rx_ctl(struct usbnet *dev, u16 mode)
-+{
-+      int ret;
-+
-+      netdev_dbg(dev->net, "%s : mode = 0x%04x\n", __func__, mode);
-+      ret = sr_write_cmd(dev, SR_CMD_WRITE_RX_CTL, mode, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net,
-+                         "Failed to write RX_CTL mode to 0x%04x:%02x\n",
-+                         mode, ret);
-+
-+      return ret;
-+}
-+
-+static u16 sr_read_medium_status(struct usbnet *dev)
-+{
-+      __le16 v;
-+      int ret;
-+
-+      ret = sr_read_cmd(dev, SR_CMD_READ_MEDIUM_STATUS, 0, 0, 2, &v);
-+      if (ret < 0) {
-+              netdev_err(dev->net,
-+                         "Error reading Medium Status register:%02x\n", ret);
-+              return ret;     /* TODO: callers not checking for error ret */
-+      }
-+
-+      return le16_to_cpu(v);
-+}
-+
-+static int sr_write_medium_mode(struct usbnet *dev, u16 mode)
-+{
-+      int ret;
-+
-+      netdev_dbg(dev->net, "%s : mode = 0x%04x\n", __func__, mode);
-+      ret = sr_write_cmd(dev, SR_CMD_WRITE_MEDIUM_MODE, mode, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net,
-+                         "Failed to write Medium Mode mode to 0x%04x:%02x\n",
-+                         mode, ret);
-+      return ret;
-+}
-+
-+static int sr_write_gpio(struct usbnet *dev, u16 value, int sleep)
-+{
-+      int ret;
-+
-+      netdev_dbg(dev->net, "%s : value = 0x%04x\n", __func__, value);
-+      ret = sr_write_cmd(dev, SR_CMD_WRITE_GPIOS, value, 0, 0, NULL);
-+      if (ret < 0)
-+              netdev_err(dev->net, "Failed to write GPIO value 0x%04x:%02x\n",
-+                         value, ret);
-+      if (sleep)
-+              msleep(sleep);
-+
-+      return ret;
-+}
-+
-+/* SR9800 have a 16-bit RX_CTL value */
-+static void sr_set_multicast(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct sr_data *data = (struct sr_data *)&dev->data;
-+      u16 rx_ctl = SR_DEFAULT_RX_CTL;
-+
-+      if (net->flags & IFF_PROMISC) {
-+              rx_ctl |= SR_RX_CTL_PRO;
-+      } else if (net->flags & IFF_ALLMULTI ||
-+                 netdev_mc_count(net) > SR_MAX_MCAST) {
-+              rx_ctl |= SR_RX_CTL_AMALL;
-+      } else if (netdev_mc_empty(net)) {
-+              /* just broadcast and directed */
-+      } else {
-+              /* We use the 20 byte dev->data
-+               * for our 8 byte filter buffer
-+               * to avoid allocating memory that
-+               * is tricky to free later
-+               */
-+              struct netdev_hw_addr *ha;
-+              u32 crc_bits;
-+
-+              memset(data->multi_filter, 0, SR_MCAST_FILTER_SIZE);
-+
-+              /* Build the multicast hash filter. */
-+              netdev_for_each_mc_addr(ha, net) {
-+                      crc_bits = ether_crc(ETH_ALEN, ha->addr) >> 26;
-+                      data->multi_filter[crc_bits >> 3] |=
-+                          1 << (crc_bits & 7);
-+              }
-+
-+              sr_write_cmd_async(dev, SR_CMD_WRITE_MULTI_FILTER, 0, 0,
-+                                 SR_MCAST_FILTER_SIZE, data->multi_filter);
-+
-+              rx_ctl |= SR_RX_CTL_AM;
-+      }
-+
-+      sr_write_cmd_async(dev, SR_CMD_WRITE_RX_CTL, rx_ctl, 0, 0, NULL);
-+}
-+
-+static int sr_mdio_read(struct net_device *net, int phy_id, int loc)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      __le16 res;
-+
-+      mutex_lock(&dev->phy_mutex);
-+      sr_set_sw_mii(dev);
-+      sr_read_cmd(dev, SR_CMD_READ_MII_REG, phy_id, (__u16)loc, 2, &res);
-+      sr_set_hw_mii(dev);
-+      mutex_unlock(&dev->phy_mutex);
-+
-+      netdev_dbg(dev->net,
-+                 "%s : phy_id=0x%02x, loc=0x%02x, returns=0x%04x\n", __func__,
-+                 phy_id, loc, le16_to_cpu(res));
-+
-+      return le16_to_cpu(res);
-+}
-+
-+static void
-+sr_mdio_write(struct net_device *net, int phy_id, int loc, int val)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      __le16 res = cpu_to_le16(val);
-+
-+      netdev_dbg(dev->net,
-+                 "%s : phy_id=0x%02x, loc=0x%02x, val=0x%04x\n", __func__,
-+                 phy_id, loc, val);
-+      mutex_lock(&dev->phy_mutex);
-+      sr_set_sw_mii(dev);
-+      sr_write_cmd(dev, SR_CMD_WRITE_MII_REG, phy_id, (__u16)loc, 2, &res);
-+      sr_set_hw_mii(dev);
-+      mutex_unlock(&dev->phy_mutex);
-+}
-+
-+/* Get the PHY Identifier from the PHYSID1 & PHYSID2 MII registers */
-+static u32 sr_get_phyid(struct usbnet *dev)
-+{
-+      int phy_reg;
-+      u32 phy_id;
-+      int i;
-+
-+      /* Poll for the rare case the FW or phy isn't ready yet.  */
-+      for (i = 0; i < 100; i++) {
-+              phy_reg = sr_mdio_read(dev->net, dev->mii.phy_id, MII_PHYSID1);
-+              if (phy_reg != 0 && phy_reg != 0xFFFF)
-+                      break;
-+              mdelay(1);
-+      }
-+
-+      if (phy_reg <= 0 || phy_reg == 0xFFFF)
-+              return 0;
-+
-+      phy_id = (phy_reg & 0xffff) << 16;
-+
-+      phy_reg = sr_mdio_read(dev->net, dev->mii.phy_id, MII_PHYSID2);
-+      if (phy_reg < 0)
-+              return 0;
-+
-+      phy_id |= (phy_reg & 0xffff);
-+
-+      return phy_id;
-+}
-+
-+static void
-+sr_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u8 opt;
-+
-+      if (sr_read_cmd(dev, SR_CMD_READ_MONITOR_MODE, 0, 0, 1, &opt) < 0) {
-+              wolinfo->supported = 0;
-+              wolinfo->wolopts = 0;
-+              return;
-+      }
-+      wolinfo->supported = WAKE_PHY | WAKE_MAGIC;
-+      wolinfo->wolopts = 0;
-+      if (opt & SR_MONITOR_LINK)
-+              wolinfo->wolopts |= WAKE_PHY;
-+      if (opt & SR_MONITOR_MAGIC)
-+              wolinfo->wolopts |= WAKE_MAGIC;
-+}
-+
-+static int
-+sr_set_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      u8 opt = 0;
-+
-+      if (wolinfo->wolopts & WAKE_PHY)
-+              opt |= SR_MONITOR_LINK;
-+      if (wolinfo->wolopts & WAKE_MAGIC)
-+              opt |= SR_MONITOR_MAGIC;
-+
-+      if (sr_write_cmd(dev, SR_CMD_WRITE_MONITOR_MODE,
-+                       opt, 0, 0, NULL) < 0)
-+              return -EINVAL;
-+
-+      return 0;
-+}
-+
-+static int sr_get_eeprom_len(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct sr_data *data = (struct sr_data *)&dev->data;
-+
-+      return data->eeprom_len;
-+}
-+
-+static int sr_get_eeprom(struct net_device *net,
-+                            struct ethtool_eeprom *eeprom, u8 *data)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      __le16 *ebuf = (__le16 *)data;
-+      int ret;
-+      int i;
-+
-+      /* Crude hack to ensure that we don't overwrite memory
-+       * if an odd length is supplied
-+       */
-+      if (eeprom->len % 2)
-+              return -EINVAL;
-+
-+      eeprom->magic = SR_EEPROM_MAGIC;
-+
-+      /* sr9800 returns 2 bytes from eeprom on read */
-+      for (i = 0; i < eeprom->len / 2; i++) {
-+              ret = sr_read_cmd(dev, SR_CMD_READ_EEPROM, eeprom->offset + i,
-+                                0, 2, &ebuf[i]);
-+              if (ret < 0)
-+                      return -EINVAL;
-+      }
-+      return 0;
-+}
-+
-+static void sr_get_drvinfo(struct net_device *net,
-+                               struct ethtool_drvinfo *info)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct sr_data *data = (struct sr_data *)&dev->data;
-+
-+      /* Inherit standard device info */
-+      usbnet_get_drvinfo(net, info);
-+      strncpy(info->driver, DRIVER_NAME, sizeof(info->driver));
-+      strncpy(info->version, DRIVER_VERSION, sizeof(info->version));
-+      info->eedump_len = data->eeprom_len;
-+}
-+
-+static u32 sr_get_link(struct net_device *net)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      return mii_link_ok(&dev->mii);
-+}
-+
-+static int sr_ioctl(struct net_device *net, struct ifreq *rq, int cmd)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+
-+      return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
-+}
-+
-+static int sr_set_mac_address(struct net_device *net, void *p)
-+{
-+      struct usbnet *dev = netdev_priv(net);
-+      struct sr_data *data = (struct sr_data *)&dev->data;
-+      struct sockaddr *addr = p;
-+
-+      if (netif_running(net))
-+              return -EBUSY;
-+      if (!is_valid_ether_addr(addr->sa_data))
-+              return -EADDRNOTAVAIL;
-+
-+      memcpy(net->dev_addr, addr->sa_data, ETH_ALEN);
-+
-+      /* We use the 20 byte dev->data
-+       * for our 6 byte mac buffer
-+       * to avoid allocating memory that
-+       * is tricky to free later
-+       */
-+      memcpy(data->mac_addr, addr->sa_data, ETH_ALEN);
-+      sr_write_cmd_async(dev, SR_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN,
-+                         data->mac_addr);
-+
-+      return 0;
-+}
-+
-+static const struct ethtool_ops sr9800_ethtool_ops = {
-+      .get_drvinfo    = sr_get_drvinfo,
-+      .get_link       = sr_get_link,
-+      .get_msglevel   = usbnet_get_msglevel,
-+      .set_msglevel   = usbnet_set_msglevel,
-+      .get_wol        = sr_get_wol,
-+      .set_wol        = sr_set_wol,
-+      .get_eeprom_len = sr_get_eeprom_len,
-+      .get_eeprom     = sr_get_eeprom,
-+      .get_settings   = usbnet_get_settings,
-+      .set_settings   = usbnet_set_settings,
-+      .nway_reset     = usbnet_nway_reset,
-+};
-+
-+static int sr9800_link_reset(struct usbnet *dev)
-+{
-+      struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
-+      u16 mode;
-+
-+      mii_check_media(&dev->mii, 1, 1);
-+      mii_ethtool_gset(&dev->mii, &ecmd);
-+      mode = SR9800_MEDIUM_DEFAULT;
-+
-+      if (ethtool_cmd_speed(&ecmd) != SPEED_100)
-+              mode &= ~SR_MEDIUM_PS;
-+
-+      if (ecmd.duplex != DUPLEX_FULL)
-+              mode &= ~SR_MEDIUM_FD;
-+
-+      netdev_dbg(dev->net, "%s : speed: %u duplex: %d mode: 0x%04x\n",
-+                 __func__, ethtool_cmd_speed(&ecmd), ecmd.duplex, mode);
-+
-+      sr_write_medium_mode(dev, mode);
-+
-+      return 0;
-+}
-+
-+
-+static int sr9800_set_default_mode(struct usbnet *dev)
-+{
-+      u16 rx_ctl;
-+      int ret;
-+
-+      sr_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET);
-+      sr_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE,
-+                    ADVERTISE_ALL | ADVERTISE_CSMA);
-+      mii_nway_restart(&dev->mii);
-+
-+      ret = sr_write_medium_mode(dev, SR9800_MEDIUM_DEFAULT);
-+      if (ret < 0)
-+              goto out;
-+
-+      ret = sr_write_cmd(dev, SR_CMD_WRITE_IPG012,
-+                              SR9800_IPG0_DEFAULT | SR9800_IPG1_DEFAULT,
-+                              SR9800_IPG2_DEFAULT, 0, NULL);
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "Write IPG,IPG1,IPG2 failed: %d\n", ret);
-+              goto out;
-+      }
-+
-+      /* Set RX_CTL to default values with 2k buffer, and enable cactus */
-+      ret = sr_write_rx_ctl(dev, SR_DEFAULT_RX_CTL);
-+      if (ret < 0)
-+              goto out;
-+
-+      rx_ctl = sr_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x after all initializations\n",
-+                 rx_ctl);
-+
-+      rx_ctl = sr_read_medium_status(dev);
-+      netdev_dbg(dev->net, "Medium Status:0x%04x after all initializations\n",
-+                 rx_ctl);
-+
-+      return 0;
-+out:
-+      return ret;
-+}
-+
-+static int sr9800_reset(struct usbnet *dev)
-+{
-+      struct sr_data *data = (struct sr_data *)&dev->data;
-+      int ret, embd_phy;
-+      u16 rx_ctl;
-+
-+      ret = sr_write_gpio(dev,
-+                      SR_GPIO_RSE | SR_GPIO_GPO_2 | SR_GPIO_GPO2EN, 5);
-+      if (ret < 0)
-+              goto out;
-+
-+      embd_phy = ((sr_get_phy_addr(dev) & 0x1f) == 0x10 ? 1 : 0);
-+
-+      ret = sr_write_cmd(dev, SR_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL);
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret);
-+              goto out;
-+      }
-+
-+      ret = sr_sw_reset(dev, SR_SWRESET_IPPD | SR_SWRESET_PRL);
-+      if (ret < 0)
-+              goto out;
-+
-+      msleep(150);
-+
-+      ret = sr_sw_reset(dev, SR_SWRESET_CLEAR);
-+      if (ret < 0)
-+              goto out;
-+
-+      msleep(150);
-+
-+      if (embd_phy) {
-+              ret = sr_sw_reset(dev, SR_SWRESET_IPRL);
-+              if (ret < 0)
-+                      goto out;
-+      } else {
-+              ret = sr_sw_reset(dev, SR_SWRESET_PRTE);
-+              if (ret < 0)
-+                      goto out;
-+      }
-+
-+      msleep(150);
-+      rx_ctl = sr_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl);
-+      ret = sr_write_rx_ctl(dev, 0x0000);
-+      if (ret < 0)
-+              goto out;
-+
-+      rx_ctl = sr_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl);
-+
-+      ret = sr_sw_reset(dev, SR_SWRESET_PRL);
-+      if (ret < 0)
-+              goto out;
-+
-+      msleep(150);
-+
-+      ret = sr_sw_reset(dev, SR_SWRESET_IPRL | SR_SWRESET_PRL);
-+      if (ret < 0)
-+              goto out;
-+
-+      msleep(150);
-+
-+      ret = sr9800_set_default_mode(dev);
-+      if (ret < 0)
-+              goto out;
-+
-+      /* Rewrite MAC address */
-+      memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN);
-+      ret = sr_write_cmd(dev, SR_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN,
-+                                                      data->mac_addr);
-+      if (ret < 0)
-+              goto out;
-+
-+      return 0;
-+
-+out:
-+      return ret;
-+}
-+
-+static const struct net_device_ops sr9800_netdev_ops = {
-+      .ndo_open               = usbnet_open,
-+      .ndo_stop               = usbnet_stop,
-+      .ndo_start_xmit         = usbnet_start_xmit,
-+      .ndo_tx_timeout         = usbnet_tx_timeout,
-+      .ndo_change_mtu         = usbnet_change_mtu,
-+      .ndo_set_mac_address    = sr_set_mac_address,
-+      .ndo_validate_addr      = eth_validate_addr,
-+      .ndo_do_ioctl           = sr_ioctl,
-+      .ndo_set_rx_mode        = sr_set_multicast,
-+};
-+
-+static int sr9800_phy_powerup(struct usbnet *dev)
-+{
-+      int ret;
-+
-+      /* set the embedded Ethernet PHY in power-down state */
-+      ret = sr_sw_reset(dev, SR_SWRESET_IPPD | SR_SWRESET_IPRL);
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Failed to power down PHY : %d\n", ret);
-+              return ret;
-+      }
-+      msleep(20);
-+
-+      /* set the embedded Ethernet PHY in power-up state */
-+      ret = sr_sw_reset(dev, SR_SWRESET_IPRL);
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Failed to reset PHY: %d\n", ret);
-+              return ret;
-+      }
-+      msleep(600);
-+
-+      /* set the embedded Ethernet PHY in reset state */
-+      ret = sr_sw_reset(dev, SR_SWRESET_CLEAR);
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Failed to power up PHY: %d\n", ret);
-+              return ret;
-+      }
-+      msleep(20);
-+
-+      /* set the embedded Ethernet PHY in power-up state */
-+      ret = sr_sw_reset(dev, SR_SWRESET_IPRL);
-+      if (ret < 0) {
-+              netdev_err(dev->net, "Failed to reset PHY: %d\n", ret);
-+              return ret;
-+      }
-+
-+      return 0;
-+}
-+
-+static int sr9800_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      struct sr_data *data = (struct sr_data *)&dev->data;
-+      u16 led01_mux, led23_mux;
-+      int ret, embd_phy;
-+      u32 phyid;
-+      u16 rx_ctl;
-+
-+      data->eeprom_len = SR9800_EEPROM_LEN;
-+
-+      usbnet_get_endpoints(dev, intf);
-+
-+      /* LED Setting Rule :
-+       * AABB:CCDD
-+       * AA : MFA0(LED0)
-+       * BB : MFA1(LED1)
-+       * CC : MFA2(LED2), Reserved for SR9800
-+       * DD : MFA3(LED3), Reserved for SR9800
-+       */
-+      led01_mux = (SR_LED_MUX_LINK_ACTIVE << 8) | SR_LED_MUX_LINK;
-+      led23_mux = (SR_LED_MUX_LINK_ACTIVE << 8) | SR_LED_MUX_TX_ACTIVE;
-+      ret = sr_write_cmd(dev, SR_CMD_LED_MUX, led01_mux, led23_mux, 0, NULL);
-+      if (ret < 0) {
-+                      netdev_err(dev->net, "set LINK LED failed : %d\n", ret);
-+                      goto out;
-+      }
-+
-+      /* Get the MAC address */
-+      ret = sr_read_cmd(dev, SR_CMD_READ_NODE_ID, 0, 0, ETH_ALEN,
-+                        dev->net->dev_addr);
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret);
-+              return ret;
-+      }
-+      netdev_dbg(dev->net, "mac addr : %pM\n", dev->net->dev_addr);
-+
-+      /* Initialize MII structure */
-+      dev->mii.dev = dev->net;
-+      dev->mii.mdio_read = sr_mdio_read;
-+      dev->mii.mdio_write = sr_mdio_write;
-+      dev->mii.phy_id_mask = 0x1f;
-+      dev->mii.reg_num_mask = 0x1f;
-+      dev->mii.phy_id = sr_get_phy_addr(dev);
-+
-+      dev->net->netdev_ops = &sr9800_netdev_ops;
-+      dev->net->ethtool_ops = &sr9800_ethtool_ops;
-+
-+      embd_phy = ((dev->mii.phy_id & 0x1f) == 0x10 ? 1 : 0);
-+      /* Reset the PHY to normal operation mode */
-+      ret = sr_write_cmd(dev, SR_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL);
-+      if (ret < 0) {
-+              netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret);
-+              return ret;
-+      }
-+
-+      /* Init PHY routine */
-+      ret = sr9800_phy_powerup(dev);
-+      if (ret < 0)
-+              goto out;
-+
-+      rx_ctl = sr_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl);
-+      ret = sr_write_rx_ctl(dev, 0x0000);
-+      if (ret < 0)
-+              goto out;
-+
-+      rx_ctl = sr_read_rx_ctl(dev);
-+      netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl);
-+
-+      /* Read PHYID register *AFTER* the PHY was reset properly */
-+      phyid = sr_get_phyid(dev);
-+      netdev_dbg(dev->net, "PHYID=0x%08x\n", phyid);
-+
-+      /* medium mode setting */
-+      ret = sr9800_set_default_mode(dev);
-+      if (ret < 0)
-+              goto out;
-+
-+      if (dev->udev->speed == USB_SPEED_HIGH) {
-+              ret = sr_write_cmd(dev, SR_CMD_BULKIN_SIZE,
-+                      SR9800_BULKIN_SIZE[SR9800_MAX_BULKIN_4K].byte_cnt,
-+                      SR9800_BULKIN_SIZE[SR9800_MAX_BULKIN_4K].threshold,
-+                      0, NULL);
-+              if (ret < 0) {
-+                      netdev_err(dev->net, "Reset RX_CTL failed: %d\n", ret);
-+                      goto out;
-+              }
-+              dev->rx_urb_size =
-+                      SR9800_BULKIN_SIZE[SR9800_MAX_BULKIN_4K].size;
-+      } else {
-+              ret = sr_write_cmd(dev, SR_CMD_BULKIN_SIZE,
-+                      SR9800_BULKIN_SIZE[SR9800_MAX_BULKIN_2K].byte_cnt,
-+                      SR9800_BULKIN_SIZE[SR9800_MAX_BULKIN_2K].threshold,
-+                      0, NULL);
-+              if (ret < 0) {
-+                      netdev_err(dev->net, "Reset RX_CTL failed: %d\n", ret);
-+                      goto out;
-+              }
-+              dev->rx_urb_size =
-+                      SR9800_BULKIN_SIZE[SR9800_MAX_BULKIN_2K].size;
-+      }
-+      netdev_dbg(dev->net, "%s : setting rx_urb_size with : %zu\n", __func__,
-+                 dev->rx_urb_size);
-+      return 0;
-+
-+out:
-+      return ret;
-+}
-+
-+static const struct driver_info sr9800_driver_info = {
-+      .description    = "CoreChip SR9800 USB 2.0 Ethernet",
-+      .bind           = sr9800_bind,
-+      .status         = sr_status,
-+      .link_reset     = sr9800_link_reset,
-+      .reset          = sr9800_reset,
-+      .flags          = DRIVER_FLAG,
-+      .rx_fixup       = sr_rx_fixup,
-+      .tx_fixup       = sr_tx_fixup,
-+};
-+
-+static const struct usb_device_id     products[] = {
-+      {
-+              USB_DEVICE(0x0fe6, 0x9800),     /* SR9800 Device  */
-+              .driver_info = (unsigned long) &sr9800_driver_info,
-+      },
-+      {},             /* END */
-+};
-+
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver sr_driver = {
-+      .name           = DRIVER_NAME,
-+      .id_table       = products,
-+      .probe          = usbnet_probe,
-+      .suspend        = usbnet_suspend,
-+      .resume         = usbnet_resume,
-+      .disconnect     = usbnet_disconnect,
-+      .supports_autosuspend = 1,
-+};
-+
-+module_usb_driver(sr_driver);
-+
-+MODULE_AUTHOR("Liu Junliang <liujunliang_ljl@163.com");
-+MODULE_VERSION(DRIVER_VERSION);
-+MODULE_DESCRIPTION("SR9800 USB 2.0 USB2NET Dev : http://www.corechip-sz.com");
-+MODULE_LICENSE("GPL");
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/sr9800.h backports-4.2.6-1/drivers/net/usb/sr9800.h
---- backports-4.2.6-1.org/drivers/net/usb/sr9800.h     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/sr9800.h 2016-06-28 14:35:18.015307217 +0200
-@@ -0,0 +1,202 @@
-+/* CoreChip-sz SR9800 one chip USB 2.0 Ethernet Devices
-+ *
-+ * Author : Liu Junliang <liujunliang_ljl@163.com>
-+ *
-+ * This file is licensed under the terms of the GNU General Public License
-+ * version 2.  This program is licensed "as is" without any warranty of any
-+ * kind, whether express or implied.
-+ */
-+
-+#ifndef       _SR9800_H
-+#define       _SR9800_H
-+
-+/* SR9800 spec. command table on Linux Platform */
-+
-+/* command : Software Station Management Control Reg */
-+#define SR_CMD_SET_SW_MII             0x06
-+/* command : PHY Read Reg */
-+#define SR_CMD_READ_MII_REG           0x07
-+/* command : PHY Write Reg */
-+#define SR_CMD_WRITE_MII_REG          0x08
-+/* command : Hardware Station Management Control Reg */
-+#define SR_CMD_SET_HW_MII             0x0a
-+/* command : SROM Read Reg */
-+#define SR_CMD_READ_EEPROM            0x0b
-+/* command : SROM Write Reg */
-+#define SR_CMD_WRITE_EEPROM           0x0c
-+/* command : SROM Write Enable Reg */
-+#define SR_CMD_WRITE_ENABLE           0x0d
-+/* command : SROM Write Disable Reg */
-+#define SR_CMD_WRITE_DISABLE          0x0e
-+/* command : RX Control Read Reg */
-+#define SR_CMD_READ_RX_CTL            0x0f
-+#define               SR_RX_CTL_PRO                   (1 << 0)
-+#define               SR_RX_CTL_AMALL                 (1 << 1)
-+#define               SR_RX_CTL_SEP                   (1 << 2)
-+#define               SR_RX_CTL_AB                    (1 << 3)
-+#define               SR_RX_CTL_AM                    (1 << 4)
-+#define               SR_RX_CTL_AP                    (1 << 5)
-+#define               SR_RX_CTL_ARP                   (1 << 6)
-+#define               SR_RX_CTL_SO                    (1 << 7)
-+#define               SR_RX_CTL_RH1M                  (1 << 8)
-+#define               SR_RX_CTL_RH2M                  (1 << 9)
-+#define               SR_RX_CTL_RH3M                  (1 << 10)
-+/* command : RX Control Write Reg */
-+#define SR_CMD_WRITE_RX_CTL           0x10
-+/* command : IPG0/IPG1/IPG2 Control Read Reg */
-+#define SR_CMD_READ_IPG012            0x11
-+/* command : IPG0/IPG1/IPG2 Control Write Reg */
-+#define SR_CMD_WRITE_IPG012           0x12
-+/* command : Node ID Read Reg */
-+#define SR_CMD_READ_NODE_ID           0x13
-+/* command : Node ID Write Reg */
-+#define SR_CMD_WRITE_NODE_ID          0x14
-+/* command : Multicast Filter Array Read Reg */
-+#define       SR_CMD_READ_MULTI_FILTER        0x15
-+/* command : Multicast Filter Array Write Reg */
-+#define SR_CMD_WRITE_MULTI_FILTER     0x16
-+/* command : Eth/HomePNA PHY Address Reg */
-+#define SR_CMD_READ_PHY_ID            0x19
-+/* command : Medium Status Read Reg */
-+#define SR_CMD_READ_MEDIUM_STATUS     0x1a
-+#define               SR_MONITOR_LINK                 (1 << 1)
-+#define               SR_MONITOR_MAGIC                (1 << 2)
-+#define               SR_MONITOR_HSFS                 (1 << 4)
-+/* command : Medium Status Write Reg */
-+#define SR_CMD_WRITE_MEDIUM_MODE      0x1b
-+#define               SR_MEDIUM_GM                    (1 << 0)
-+#define               SR_MEDIUM_FD                    (1 << 1)
-+#define               SR_MEDIUM_AC                    (1 << 2)
-+#define               SR_MEDIUM_ENCK                  (1 << 3)
-+#define               SR_MEDIUM_RFC                   (1 << 4)
-+#define               SR_MEDIUM_TFC                   (1 << 5)
-+#define               SR_MEDIUM_JFE                   (1 << 6)
-+#define               SR_MEDIUM_PF                    (1 << 7)
-+#define               SR_MEDIUM_RE                    (1 << 8)
-+#define               SR_MEDIUM_PS                    (1 << 9)
-+#define               SR_MEDIUM_RSV                   (1 << 10)
-+#define               SR_MEDIUM_SBP                   (1 << 11)
-+#define               SR_MEDIUM_SM                    (1 << 12)
-+/* command : Monitor Mode Status Read Reg */
-+#define SR_CMD_READ_MONITOR_MODE      0x1c
-+/* command : Monitor Mode Status Write Reg */
-+#define SR_CMD_WRITE_MONITOR_MODE     0x1d
-+/* command : GPIO Status Read Reg */
-+#define SR_CMD_READ_GPIOS             0x1e
-+#define               SR_GPIO_GPO0EN          (1 << 0) /* GPIO0 Output enable */
-+#define               SR_GPIO_GPO_0           (1 << 1) /* GPIO0 Output value */
-+#define               SR_GPIO_GPO1EN          (1 << 2) /* GPIO1 Output enable */
-+#define               SR_GPIO_GPO_1           (1 << 3) /* GPIO1 Output value */
-+#define               SR_GPIO_GPO2EN          (1 << 4) /* GPIO2 Output enable */
-+#define               SR_GPIO_GPO_2           (1 << 5) /* GPIO2 Output value */
-+#define               SR_GPIO_RESERVED        (1 << 6) /* Reserved */
-+#define               SR_GPIO_RSE             (1 << 7) /* Reload serial EEPROM */
-+/* command : GPIO Status Write Reg */
-+#define SR_CMD_WRITE_GPIOS            0x1f
-+/* command : Eth PHY Power and Reset Control Reg */
-+#define SR_CMD_SW_RESET                       0x20
-+#define               SR_SWRESET_CLEAR                0x00
-+#define               SR_SWRESET_RR                   (1 << 0)
-+#define               SR_SWRESET_RT                   (1 << 1)
-+#define               SR_SWRESET_PRTE                 (1 << 2)
-+#define               SR_SWRESET_PRL                  (1 << 3)
-+#define               SR_SWRESET_BZ                   (1 << 4)
-+#define               SR_SWRESET_IPRL                 (1 << 5)
-+#define               SR_SWRESET_IPPD                 (1 << 6)
-+/* command : Software Interface Selection Status Read Reg */
-+#define SR_CMD_SW_PHY_STATUS          0x21
-+/* command : Software Interface Selection Status Write Reg */
-+#define SR_CMD_SW_PHY_SELECT          0x22
-+/* command : BULK in Buffer Size Reg */
-+#define       SR_CMD_BULKIN_SIZE              0x2A
-+/* command : LED_MUX Control Reg */
-+#define       SR_CMD_LED_MUX                  0x70
-+#define               SR_LED_MUX_TX_ACTIVE            (1 << 0)
-+#define               SR_LED_MUX_RX_ACTIVE            (1 << 1)
-+#define               SR_LED_MUX_COLLISION            (1 << 2)
-+#define               SR_LED_MUX_DUP_COL              (1 << 3)
-+#define               SR_LED_MUX_DUP                  (1 << 4)
-+#define               SR_LED_MUX_SPEED                (1 << 5)
-+#define               SR_LED_MUX_LINK_ACTIVE          (1 << 6)
-+#define               SR_LED_MUX_LINK                 (1 << 7)
-+
-+/* Register Access Flags */
-+#define SR_REQ_RD_REG   (USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE)
-+#define SR_REQ_WR_REG   (USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE)
-+
-+/* Multicast Filter Array size & Max Number */
-+#define       SR_MCAST_FILTER_SIZE            8
-+#define       SR_MAX_MCAST                    64
-+
-+/* IPG0/1/2 Default Value */
-+#define       SR9800_IPG0_DEFAULT             0x15
-+#define       SR9800_IPG1_DEFAULT             0x0c
-+#define       SR9800_IPG2_DEFAULT             0x12
-+
-+/* Medium Status Default Mode */
-+#define SR9800_MEDIUM_DEFAULT \
-+      (SR_MEDIUM_FD | SR_MEDIUM_RFC | \
-+       SR_MEDIUM_TFC | SR_MEDIUM_PS | \
-+       SR_MEDIUM_AC | SR_MEDIUM_RE)
-+
-+/* RX Control Default Setting */
-+#define SR_DEFAULT_RX_CTL     \
-+      (SR_RX_CTL_SO | SR_RX_CTL_AB | SR_RX_CTL_RH1M)
-+
-+/* EEPROM Magic Number & EEPROM Size */
-+#define SR_EEPROM_MAGIC                       0xdeadbeef
-+#define SR9800_EEPROM_LEN             0xff
-+
-+/* SR9800 Driver Version and Driver Name */
-+#define DRIVER_VERSION                        "11-Nov-2013"
-+#define DRIVER_NAME                   "CoreChips"
-+#define       DRIVER_FLAG             \
-+      (FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR |  FLAG_MULTI_PACKET)
-+
-+/* SR9800 BULKIN Buffer Size */
-+#define SR9800_MAX_BULKIN_2K          0
-+#define SR9800_MAX_BULKIN_4K          1
-+#define SR9800_MAX_BULKIN_6K          2
-+#define SR9800_MAX_BULKIN_8K          3
-+#define SR9800_MAX_BULKIN_16K         4
-+#define SR9800_MAX_BULKIN_20K         5
-+#define SR9800_MAX_BULKIN_24K         6
-+#define SR9800_MAX_BULKIN_32K         7
-+
-+struct {unsigned short size, byte_cnt, threshold; } SR9800_BULKIN_SIZE[] = {
-+      /* 2k */
-+      {2048, 0x8000, 0x8001},
-+      /* 4k */
-+      {4096, 0x8100, 0x8147},
-+      /* 6k */
-+      {6144, 0x8200, 0x81EB},
-+      /* 8k */
-+      {8192, 0x8300, 0x83D7},
-+      /* 16 */
-+      {16384, 0x8400, 0x851E},
-+      /* 20k */
-+      {20480, 0x8500, 0x8666},
-+      /* 24k */
-+      {24576, 0x8600, 0x87AE},
-+      /* 32k */
-+      {32768, 0x8700, 0x8A3D},
-+};
-+
-+/* This structure cannot exceed sizeof(unsigned long [5]) AKA 20 bytes */
-+struct sr_data {
-+      u8 multi_filter[SR_MCAST_FILTER_SIZE];
-+      u8 mac_addr[ETH_ALEN];
-+      u8 phymode;
-+      u8 ledmode;
-+      u8 eeprom_len;
-+};
-+
-+struct sr9800_int_data {
-+      __le16 res1;
-+      u8 link;
-+      __le16 res2;
-+      u8 status;
-+      __le16 res3;
-+} __packed;
-+
-+#endif        /* _SR9800_H */
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/zaurus.c backports-4.2.6-1/drivers/net/usb/zaurus.c
---- backports-4.2.6-1.org/drivers/net/usb/zaurus.c     1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/zaurus.c 2016-06-28 14:35:18.015307217 +0200
-@@ -0,0 +1,385 @@
-+/*
-+ * Copyright (C) 2002 Pavel Machek <pavel@ucw.cz>
-+ * Copyright (C) 2002-2005 by David Brownell
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+// #define    DEBUG                   // error path messages, extra info
-+// #define    VERBOSE                 // more; success messages
-+
-+#include <linux/module.h>
-+#include <linux/netdevice.h>
-+#include <linux/ethtool.h>
-+#include <linux/workqueue.h>
-+#include <linux/mii.h>
-+#include <linux/crc32.h>
-+#include <linux/usb.h>
-+#include <linux/usb/cdc.h>
-+#include <linux/usb/usbnet.h>
-+
-+
-+/*
-+ * All known Zaurii lie about their standards conformance.  At least
-+ * the earliest SA-1100 models lie by saying they support CDC Ethernet.
-+ * Some later models (especially PXA-25x and PXA-27x based ones) lie
-+ * and say they support CDC MDLM (for access to cell phone modems).
-+ *
-+ * There are non-Zaurus products that use these same protocols too.
-+ *
-+ * The annoying thing is that at the same time Sharp was developing
-+ * that annoying standards-breaking software, the Linux community had
-+ * a simple "CDC Subset" working reliably on the same SA-1100 hardware.
-+ * That is, the same functionality but not violating standards.
-+ *
-+ * The CDC Ethernet nonconformance points are troublesome to hosts
-+ * with a true CDC Ethernet implementation:
-+ *   - Framing appends a CRC, which the spec says drivers "must not" do;
-+ *   - Transfers data in altsetting zero, instead of altsetting 1;
-+ *   - All these peripherals use the same ethernet address.
-+ *
-+ * The CDC MDLM nonconformance is less immediately troublesome, since all
-+ * MDLM implementations are quasi-proprietary anyway.
-+ */
-+
-+static struct sk_buff *
-+zaurus_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
-+{
-+      int                     padlen;
-+      struct sk_buff          *skb2;
-+
-+      padlen = 2;
-+      if (!skb_cloned(skb)) {
-+              int     tailroom = skb_tailroom(skb);
-+              if ((padlen + 4) <= tailroom)
-+                      goto done;
-+      }
-+      skb2 = skb_copy_expand(skb, 0, 4 + padlen, flags);
-+      dev_kfree_skb_any(skb);
-+      skb = skb2;
-+      if (skb) {
-+              u32             fcs;
-+done:
-+              fcs = crc32_le(~0, skb->data, skb->len);
-+              fcs = ~fcs;
-+
-+              *skb_put (skb, 1) = fcs       & 0xff;
-+              *skb_put (skb, 1) = (fcs>> 8) & 0xff;
-+              *skb_put (skb, 1) = (fcs>>16) & 0xff;
-+              *skb_put (skb, 1) = (fcs>>24) & 0xff;
-+      }
-+      return skb;
-+}
-+
-+static int zaurus_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      /* Belcarra's funky framing has other options; mostly
-+       * TRAILERS (!) with 4 bytes CRC, and maybe 2 pad bytes.
-+       */
-+      dev->net->hard_header_len += 6;
-+      dev->rx_urb_size = dev->net->hard_header_len + dev->net->mtu;
-+      return usbnet_generic_cdc_bind(dev, intf);
-+}
-+
-+/* PDA style devices are always connected if present */
-+static int always_connected (struct usbnet *dev)
-+{
-+      return 0;
-+}
-+
-+static const struct driver_info       zaurus_sl5x00_info = {
-+      .description =  "Sharp Zaurus SL-5x00",
-+      .flags =        FLAG_POINTTOPOINT | FLAG_FRAMING_Z,
-+      .check_connect = always_connected,
-+      .bind =         zaurus_bind,
-+      .unbind =       usbnet_cdc_unbind,
-+      .tx_fixup =     zaurus_tx_fixup,
-+};
-+#define       ZAURUS_STRONGARM_INFO   ((unsigned long)&zaurus_sl5x00_info)
-+
-+static const struct driver_info       zaurus_pxa_info = {
-+      .description =  "Sharp Zaurus, PXA-2xx based",
-+      .flags =        FLAG_POINTTOPOINT | FLAG_FRAMING_Z,
-+      .check_connect = always_connected,
-+      .bind =         zaurus_bind,
-+      .unbind =       usbnet_cdc_unbind,
-+      .tx_fixup =     zaurus_tx_fixup,
-+};
-+#define       ZAURUS_PXA_INFO         ((unsigned long)&zaurus_pxa_info)
-+
-+static const struct driver_info       olympus_mxl_info = {
-+      .description =  "Olympus R1000",
-+      .flags =        FLAG_POINTTOPOINT | FLAG_FRAMING_Z,
-+      .check_connect = always_connected,
-+      .bind =         zaurus_bind,
-+      .unbind =       usbnet_cdc_unbind,
-+      .tx_fixup =     zaurus_tx_fixup,
-+};
-+#define       OLYMPUS_MXL_INFO        ((unsigned long)&olympus_mxl_info)
-+
-+
-+/* Some more recent products using Lineo/Belcarra code will wrongly claim
-+ * CDC MDLM conformance.  They aren't conformant:  data endpoints live
-+ * in the control interface, there's no data interface, and it's not used
-+ * to talk to a cell phone radio.  But at least we can detect these two
-+ * pseudo-classes, rather than growing this product list with entries for
-+ * each new nonconformant product (sigh).
-+ */
-+static const u8 safe_guid[16] = {
-+      0x5d, 0x34, 0xcf, 0x66, 0x11, 0x18, 0x11, 0xd6,
-+      0xa2, 0x1a, 0x00, 0x01, 0x02, 0xca, 0x9a, 0x7f,
-+};
-+static const u8 blan_guid[16] = {
-+      0x74, 0xf0, 0x3d, 0xbd, 0x1e, 0xc1, 0x44, 0x70,
-+      0xa3, 0x67, 0x71, 0x34, 0xc9, 0xf5, 0x54, 0x37,
-+};
-+
-+static int blan_mdlm_bind(struct usbnet *dev, struct usb_interface *intf)
-+{
-+      u8                              *buf = intf->cur_altsetting->extra;
-+      int                             len = intf->cur_altsetting->extralen;
-+      struct usb_cdc_mdlm_desc        *desc = NULL;
-+      struct usb_cdc_mdlm_detail_desc *detail = NULL;
-+
-+      while (len > 3) {
-+              if (buf [1] != USB_DT_CS_INTERFACE)
-+                      goto next_desc;
-+
-+              /* use bDescriptorSubType, and just verify that we get a
-+               * "BLAN" (or "SAFE") descriptor.
-+               */
-+              switch (buf [2]) {
-+              case USB_CDC_MDLM_TYPE:
-+                      if (desc) {
-+                              dev_dbg(&intf->dev, "extra MDLM\n");
-+                              goto bad_desc;
-+                      }
-+                      desc = (void *) buf;
-+                      if (desc->bLength != sizeof *desc) {
-+                              dev_dbg(&intf->dev, "MDLM len %u\n",
-+                                      desc->bLength);
-+                              goto bad_desc;
-+                      }
-+                      /* expect bcdVersion 1.0, ignore */
-+                      if (memcmp(&desc->bGUID, blan_guid, 16) &&
-+                          memcmp(&desc->bGUID, safe_guid, 16)) {
-+                              /* hey, this one might _really_ be MDLM! */
-+                              dev_dbg(&intf->dev, "MDLM guid\n");
-+                              goto bad_desc;
-+                      }
-+                      break;
-+              case USB_CDC_MDLM_DETAIL_TYPE:
-+                      if (detail) {
-+                              dev_dbg(&intf->dev, "extra MDLM detail\n");
-+                              goto bad_desc;
-+                      }
-+                      detail = (void *) buf;
-+                      switch (detail->bGuidDescriptorType) {
-+                      case 0:                 /* "SAFE" */
-+                              if (detail->bLength != (sizeof *detail + 2))
-+                                      goto bad_detail;
-+                              break;
-+                      case 1:                 /* "BLAN" */
-+                              if (detail->bLength != (sizeof *detail + 3))
-+                                      goto bad_detail;
-+                              break;
-+                      default:
-+                              goto bad_detail;
-+                      }
-+
-+                      /* assuming we either noticed BLAN already, or will
-+                       * find it soon, there are some data bytes here:
-+                       *  - bmNetworkCapabilities (unused)
-+                       *  - bmDataCapabilities (bits, see below)
-+                       *  - bPad (ignored, for PADAFTER -- BLAN-only)
-+                       * bits are:
-+                       *  - 0x01 -- Zaurus framing (add CRC)
-+                       *  - 0x02 -- PADBEFORE (CRC includes some padding)
-+                       *  - 0x04 -- PADAFTER (some padding after CRC)
-+                       *  - 0x08 -- "fermat" packet mangling (for hw bugs)
-+                       * the PADBEFORE appears not to matter; we interop
-+                       * with devices that use it and those that don't.
-+                       */
-+                      if ((detail->bDetailData[1] & ~0x02) != 0x01) {
-+                              /* bmDataCapabilities == 0 would be fine too,
-+                               * but framing is minidriver-coupled for now.
-+                               */
-+bad_detail:
-+                              dev_dbg(&intf->dev,
-+                                              "bad MDLM detail, %d %d %d\n",
-+                                              detail->bLength,
-+                                              detail->bDetailData[0],
-+                                              detail->bDetailData[2]);
-+                              goto bad_desc;
-+                      }
-+
-+                      /* same extra framing as for non-BLAN mode */
-+                      dev->net->hard_header_len += 6;
-+                      dev->rx_urb_size = dev->net->hard_header_len
-+                                      + dev->net->mtu;
-+                      break;
-+              }
-+next_desc:
-+              len -= buf [0]; /* bLength */
-+              buf += buf [0];
-+      }
-+
-+      if (!desc || !detail) {
-+              dev_dbg(&intf->dev, "missing cdc mdlm %s%sdescriptor\n",
-+                      desc ? "" : "func ",
-+                      detail ? "" : "detail ");
-+              goto bad_desc;
-+      }
-+
-+      /* There's probably a CDC Ethernet descriptor there, but we can't
-+       * rely on the Ethernet address it provides since not all vendors
-+       * bother to make it unique.  Likewise there's no point in tracking
-+       * of the CDC event notifications.
-+       */
-+      return usbnet_get_endpoints(dev, intf);
-+
-+bad_desc:
-+      dev_info(&dev->udev->dev, "unsupported MDLM descriptors\n");
-+      return -ENODEV;
-+}
-+
-+static const struct driver_info       bogus_mdlm_info = {
-+      .description =  "pseudo-MDLM (BLAN) device",
-+      .flags =        FLAG_POINTTOPOINT | FLAG_FRAMING_Z,
-+      .check_connect = always_connected,
-+      .tx_fixup =     zaurus_tx_fixup,
-+      .bind =         blan_mdlm_bind,
-+};
-+
-+static const struct usb_device_id     products [] = {
-+#define       ZAURUS_MASTER_INTERFACE \
-+      .bInterfaceClass        = USB_CLASS_COMM, \
-+      .bInterfaceSubClass     = USB_CDC_SUBCLASS_ETHERNET, \
-+      .bInterfaceProtocol     = USB_CDC_PROTO_NONE
-+
-+/* SA-1100 based Sharp Zaurus ("collie"), or compatible. */
-+{
-+      .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
-+                        | USB_DEVICE_ID_MATCH_DEVICE,
-+      .idVendor               = 0x04DD,
-+      .idProduct              = 0x8004,
-+      ZAURUS_MASTER_INTERFACE,
-+      .driver_info = ZAURUS_STRONGARM_INFO,
-+},
-+
-+/* PXA-2xx based models are also lying-about-cdc.  If you add any
-+ * more devices that claim to be CDC Ethernet, make sure they get
-+ * added to the blacklist in cdc_ether too.
-+ *
-+ * NOTE:  OpenZaurus versions with 2.6 kernels won't use these entries,
-+ * unlike the older ones with 2.4 "embedix" kernels.
-+ */
-+{
-+      .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
-+                        | USB_DEVICE_ID_MATCH_DEVICE,
-+      .idVendor               = 0x04DD,
-+      .idProduct              = 0x8005,       /* A-300 */
-+      ZAURUS_MASTER_INTERFACE,
-+      .driver_info = ZAURUS_PXA_INFO,
-+}, {
-+      .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
-+                        | USB_DEVICE_ID_MATCH_DEVICE,
-+      .idVendor               = 0x04DD,
-+      .idProduct              = 0x8006,       /* B-500/SL-5600 */
-+      ZAURUS_MASTER_INTERFACE,
-+      .driver_info = ZAURUS_PXA_INFO,
-+}, {
-+      .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
-+                | USB_DEVICE_ID_MATCH_DEVICE,
-+      .idVendor               = 0x04DD,
-+      .idProduct              = 0x8007,       /* C-700 */
-+      ZAURUS_MASTER_INTERFACE,
-+      .driver_info = ZAURUS_PXA_INFO,
-+}, {
-+      .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
-+               | USB_DEVICE_ID_MATCH_DEVICE,
-+      .idVendor               = 0x04DD,
-+      .idProduct              = 0x9031,       /* C-750 C-760 */
-+      ZAURUS_MASTER_INTERFACE,
-+      .driver_info = ZAURUS_PXA_INFO,
-+}, {
-+      /* C-750/C-760/C-860/SL-C3000 PDA in MDLM mode */
-+      USB_DEVICE_AND_INTERFACE_INFO(0x04DD, 0x9031, USB_CLASS_COMM,
-+                      USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
-+      .driver_info = (unsigned long) &bogus_mdlm_info,
-+}, {
-+      .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
-+               | USB_DEVICE_ID_MATCH_DEVICE,
-+      .idVendor               = 0x04DD,
-+      .idProduct              = 0x9032,       /* SL-6000 */
-+      ZAURUS_MASTER_INTERFACE,
-+      .driver_info = ZAURUS_PXA_INFO,
-+}, {
-+      .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
-+               | USB_DEVICE_ID_MATCH_DEVICE,
-+      .idVendor               = 0x04DD,
-+      /* reported with some C860 units */
-+      .idProduct              = 0x9050,       /* C-860 */
-+      ZAURUS_MASTER_INTERFACE,
-+      .driver_info = ZAURUS_PXA_INFO,
-+},
-+{
-+      /* Motorola Rokr E6 */
-+      USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x6027, USB_CLASS_COMM,
-+                      USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
-+      .driver_info = (unsigned long) &bogus_mdlm_info,
-+}, {
-+      /* Motorola MOTOMAGX phones */
-+      USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x6425, USB_CLASS_COMM,
-+                      USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
-+      .driver_info = (unsigned long) &bogus_mdlm_info,
-+},
-+
-+/* Olympus has some models with a Zaurus-compatible option.
-+ * R-1000 uses a FreeScale i.MXL cpu (ARMv4T)
-+ */
-+{
-+      .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
-+               | USB_DEVICE_ID_MATCH_DEVICE,
-+      .idVendor               = 0x07B4,
-+      .idProduct              = 0x0F02,       /* R-1000 */
-+      ZAURUS_MASTER_INTERFACE,
-+      .driver_info = OLYMPUS_MXL_INFO,
-+},
-+
-+/* Logitech Harmony 900 - uses the pseudo-MDLM (BLAN) driver */
-+{
-+      USB_DEVICE_AND_INTERFACE_INFO(0x046d, 0xc11f, USB_CLASS_COMM,
-+                      USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
-+      .driver_info = (unsigned long) &bogus_mdlm_info,
-+},
-+      { },            // END
-+};
-+MODULE_DEVICE_TABLE(usb, products);
-+
-+static struct usb_driver zaurus_driver = {
-+      .name =         "zaurus",
-+      .id_table =     products,
-+      .probe =        usbnet_probe,
-+      .disconnect =   usbnet_disconnect,
-+      .suspend =      usbnet_suspend,
-+      .resume =       usbnet_resume,
-+      .disable_hub_initiated_lpm = 1,
-+};
-+
-+module_usb_driver(zaurus_driver);
-+
-+MODULE_AUTHOR("Pavel Machek, David Brownell");
-+MODULE_DESCRIPTION("Sharp Zaurus PDA, and compatible products");
-+MODULE_LICENSE("GPL");
diff --git a/src/patches/backports-4.2.6-1-ath9k_add_missing_mask_init.patch b/src/patches/backports-4.2.6-1-ath9k_add_missing_mask_init.patch
deleted file mode 100644 (file)
index 01aee6d..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-by moving common code to ar5008_hw_cmn_spur_mitigate i forgot to move
-mask_m & mask_p initialisation. This coused a performance regression
-on ar9281.
-
-
-Fixes: f911085ffa88 ("ath9k: split ar5008_hw_spur_mitigate and reuse common 
-code in ar9002_hw_spur_mitigate.")
-Reported-by: Gustav Frederiksen <lkml2...@openmailbox.org>
-Tested-by: Gustav Frederiksen <lkml2...@openmailbox.org>
-Signed-off-by: Oleksij Rempel <li...@rempel-privat.de>
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/ar5008_phy.c backports-4.2.6-1/drivers/net/wireless/ath/ath9k/ar5008_phy.c
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/ar5008_phy.c  2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath9k/ar5008_phy.c      2016-04-25 09:37:58.765112541 +0200
-@@ -274,6 +274,9 @@
-       };
-       static const int inc[4] = { 0, 100, 0, 0 };
-+      memset(&mask_m, 0, sizeof(int8_t) * 123);
-+      memset(&mask_p, 0, sizeof(int8_t) * 123);
-+
-       cur_bin = -6000;
-       upper = bin + 100;
-       lower = bin - 100;
-@@ -424,14 +427,9 @@
-       int tmp, new;
-       int i;
--      int8_t mask_m[123];
--      int8_t mask_p[123];
-       int cur_bb_spur;
-       bool is2GHz = IS_CHAN_2GHZ(chan);
--      memset(&mask_m, 0, sizeof(int8_t) * 123);
--      memset(&mask_p, 0, sizeof(int8_t) * 123);
--
-       for (i = 0; i < AR_EEPROM_MODAL_SPURS; i++) {
-               cur_bb_spur = ah->eep_ops->get_spur_channel(ah, i, is2GHz);
-               if (AR_NO_SPUR == cur_bb_spur)
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/ar9002_phy.c backports-4.2.6-1/drivers/net/wireless/ath/ath9k/ar9002_phy.c
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/ar9002_phy.c  2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath9k/ar9002_phy.c      2016-04-25 09:38:57.729109148 +0200
-@@ -178,14 +178,9 @@
-       int i;
-       struct chan_centers centers;
--      int8_t mask_m[123];
--      int8_t mask_p[123];
-       int cur_bb_spur;
-       bool is2GHz = IS_CHAN_2GHZ(chan);
--      memset(&mask_m, 0, sizeof(int8_t) * 123);
--      memset(&mask_p, 0, sizeof(int8_t) * 123);
--
-       ath9k_hw_get_channel_centers(ah, chan, &centers);
-       freq = centers.synth_center;
diff --git a/src/patches/backports-4.2.6-1-grsecurity.patch b/src/patches/backports-4.2.6-1-grsecurity.patch
deleted file mode 100644 (file)
index 1a44409..0000000
+++ /dev/null
@@ -1,3995 +0,0 @@
-diff -Naur backports-4.2.6-1.org/drivers/bluetooth/btwilink.c backports-4.2.6-1/drivers/bluetooth/btwilink.c
---- backports-4.2.6-1.org/drivers/bluetooth/btwilink.c 2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/bluetooth/btwilink.c     2016-01-27 12:26:16.319959957 +0100
-@@ -288,7 +288,7 @@
- static int bt_ti_probe(struct platform_device *pdev)
- {
--      static struct ti_st *hst;
-+      struct ti_st *hst;
-       struct hci_dev *hdev;
-       int err;
-diff -Naur backports-4.2.6-1.org/drivers/media/dvb-core/dvbdev.c backports-4.2.6-1/drivers/media/dvb-core/dvbdev.c
---- backports-4.2.6-1.org/drivers/media/dvb-core/dvbdev.c      2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/dvb-core/dvbdev.c  2016-01-27 12:26:21.266626324 +0100
-@@ -272,7 +272,7 @@
-                       const struct dvb_device *template, void *priv, int type)
- {
-       struct dvb_device *dvbdev;
--      struct file_operations *dvbdevfops;
-+      file_operations_no_const *dvbdevfops;
-       struct device *clsdev;
-       int minor;
-       int id;
-diff -Naur backports-4.2.6-1.org/drivers/media/dvb-frontends/af9033.h backports-4.2.6-1/drivers/media/dvb-frontends/af9033.h
---- backports-4.2.6-1.org/drivers/media/dvb-frontends/af9033.h 2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/dvb-frontends/af9033.h     2016-01-27 12:26:21.266626324 +0100
-@@ -96,6 +96,6 @@
-       int (*pid_filter_ctrl)(struct dvb_frontend *fe, int onoff);
-       int (*pid_filter)(struct dvb_frontend *fe, int index, u16 pid,
-                         int onoff);
--};
-+} __no_const;
- #endif /* AF9033_H */
-diff -Naur backports-4.2.6-1.org/drivers/media/dvb-frontends/dib3000.h backports-4.2.6-1/drivers/media/dvb-frontends/dib3000.h
---- backports-4.2.6-1.org/drivers/media/dvb-frontends/dib3000.h        2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/dvb-frontends/dib3000.h    2016-01-27 12:26:21.266626324 +0100
-@@ -39,7 +39,7 @@
-       int (*fifo_ctrl)(struct dvb_frontend *fe, int onoff);
-       int (*pid_ctrl)(struct dvb_frontend *fe, int index, int pid, int onoff);
-       int (*tuner_pass_ctrl)(struct dvb_frontend *fe, int onoff, u8 pll_ctrl);
--};
-+} __no_const;
- #if IS_REACHABLE(CPTCFG_DVB_DIB3000MB)
- extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
-diff -Naur backports-4.2.6-1.org/drivers/media/dvb-frontends/dib7000p.h backports-4.2.6-1/drivers/media/dvb-frontends/dib7000p.h
---- backports-4.2.6-1.org/drivers/media/dvb-frontends/dib7000p.h       2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/dvb-frontends/dib7000p.h   2016-01-27 12:26:21.266626324 +0100
-@@ -64,7 +64,7 @@
-       int (*get_adc_power)(struct dvb_frontend *fe);
-       int (*slave_reset)(struct dvb_frontend *fe);
-       struct dvb_frontend *(*init)(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib7000p_config *cfg);
--};
-+} __no_const;
- #if IS_REACHABLE(CPTCFG_DVB_DIB7000P)
- void *dib7000p_attach(struct dib7000p_ops *ops);
-diff -Naur backports-4.2.6-1.org/drivers/media/dvb-frontends/dib8000.h backports-4.2.6-1/drivers/media/dvb-frontends/dib8000.h
---- backports-4.2.6-1.org/drivers/media/dvb-frontends/dib8000.h        2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/dvb-frontends/dib8000.h    2016-01-27 12:26:21.266626324 +0100
-@@ -61,7 +61,7 @@
-       int (*pid_filter_ctrl)(struct dvb_frontend *fe, u8 onoff);
-       int (*pid_filter)(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff);
-       struct dvb_frontend *(*init)(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib8000_config *cfg);
--};
-+} __no_const;
- #if IS_REACHABLE(CPTCFG_DVB_DIB8000)
- void *dib8000_attach(struct dib8000_ops *ops);
-diff -Naur backports-4.2.6-1.org/drivers/media/pci/cx88/cx88-video.c backports-4.2.6-1/drivers/media/pci/cx88/cx88-video.c
---- backports-4.2.6-1.org/drivers/media/pci/cx88/cx88-video.c  2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/pci/cx88/cx88-video.c      2016-01-27 12:26:21.266626324 +0100
-@@ -50,9 +50,9 @@
- /* ------------------------------------------------------------------ */
--static unsigned int video_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
--static unsigned int vbi_nr[]   = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
--static unsigned int radio_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
-+static int video_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
-+static int vbi_nr[]   = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
-+static int radio_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
- module_param_array(video_nr, int, NULL, 0444);
- module_param_array(vbi_nr,   int, NULL, 0444);
-diff -Naur backports-4.2.6-1.org/drivers/media/pci/ivtv/ivtv-driver.c backports-4.2.6-1/drivers/media/pci/ivtv/ivtv-driver.c
---- backports-4.2.6-1.org/drivers/media/pci/ivtv/ivtv-driver.c 2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/pci/ivtv/ivtv-driver.c     2016-01-27 12:26:21.266626324 +0100
-@@ -83,7 +83,7 @@
- MODULE_DEVICE_TABLE(pci,ivtv_pci_tbl);
- /* ivtv instance counter */
--static atomic_t ivtv_instance = ATOMIC_INIT(0);
-+static atomic_unchecked_t ivtv_instance = ATOMIC_INIT(0);
- /* Parameter declarations */
- static int cardtype[IVTV_MAX_CARDS];
-diff -Naur backports-4.2.6-1.org/drivers/media/pci/solo6x10/solo6x10-core.c backports-4.2.6-1/drivers/media/pci/solo6x10/solo6x10-core.c
---- backports-4.2.6-1.org/drivers/media/pci/solo6x10/solo6x10-core.c   2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/pci/solo6x10/solo6x10-core.c       2016-01-27 12:26:21.266626324 +0100
-@@ -424,7 +424,7 @@
- static int solo_sysfs_init(struct solo_dev *solo_dev)
- {
--      struct bin_attribute *sdram_attr = &solo_dev->sdram_attr;
-+      bin_attribute_no_const *sdram_attr = &solo_dev->sdram_attr;
-       struct device *dev = &solo_dev->dev;
-       const char *driver;
-       int i;
-diff -Naur backports-4.2.6-1.org/drivers/media/pci/solo6x10/solo6x10-g723.c backports-4.2.6-1/drivers/media/pci/solo6x10/solo6x10-g723.c
---- backports-4.2.6-1.org/drivers/media/pci/solo6x10/solo6x10-g723.c   2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/pci/solo6x10/solo6x10-g723.c       2016-01-27 12:26:21.266626324 +0100
-@@ -351,7 +351,7 @@
- int solo_g723_init(struct solo_dev *solo_dev)
- {
--      static struct snd_device_ops ops = { NULL };
-+      static struct snd_device_ops ops = { };
-       struct snd_card *card;
-       struct snd_kcontrol_new kctl;
-       char name[32];
-diff -Naur backports-4.2.6-1.org/drivers/media/pci/solo6x10/solo6x10.h backports-4.2.6-1/drivers/media/pci/solo6x10/solo6x10.h
---- backports-4.2.6-1.org/drivers/media/pci/solo6x10/solo6x10.h        2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/pci/solo6x10/solo6x10.h    2016-01-27 12:26:21.266626324 +0100
-@@ -218,7 +218,7 @@
-       /* P2M DMA Engine */
-       struct solo_p2m_dev     p2m_dev[SOLO_NR_P2M];
--      atomic_t                p2m_count;
-+      atomic_unchecked_t      p2m_count;
-       int                     p2m_jiffies;
-       unsigned int            p2m_timeouts;
-diff -Naur backports-4.2.6-1.org/drivers/media/pci/solo6x10/solo6x10-p2m.c backports-4.2.6-1/drivers/media/pci/solo6x10/solo6x10-p2m.c
---- backports-4.2.6-1.org/drivers/media/pci/solo6x10/solo6x10-p2m.c    2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/pci/solo6x10/solo6x10-p2m.c        2016-01-27 12:26:21.266626324 +0100
-@@ -73,7 +73,7 @@
-       /* Get next ID. According to Softlogic, 6110 has problems on !=0 P2M */
-       if (solo_dev->type != SOLO_DEV_6110 && multi_p2m) {
--              p2m_id = atomic_inc_return(&solo_dev->p2m_count) % SOLO_NR_P2M;
-+              p2m_id = atomic_inc_return_unchecked(&solo_dev->p2m_count) % SOLO_NR_P2M;
-               if (p2m_id < 0)
-                       p2m_id = -p2m_id;
-       }
-diff -Naur backports-4.2.6-1.org/drivers/media/pci/tw68/tw68-core.c backports-4.2.6-1/drivers/media/pci/tw68/tw68-core.c
---- backports-4.2.6-1.org/drivers/media/pci/tw68/tw68-core.c   2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/pci/tw68/tw68-core.c       2016-01-27 12:26:21.266626324 +0100
-@@ -60,7 +60,7 @@
- module_param_array(card, int, NULL, 0444);
- MODULE_PARM_DESC(card, "card type");
--static atomic_t tw68_instance = ATOMIC_INIT(0);
-+static atomic_unchecked_t tw68_instance = ATOMIC_INIT(0);
- /* ------------------------------------------------------------------ */
-diff -Naur backports-4.2.6-1.org/drivers/media/platform/omap/omap_vout.c backports-4.2.6-1/drivers/media/platform/omap/omap_vout.c
---- backports-4.2.6-1.org/drivers/media/platform/omap/omap_vout.c      2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/platform/omap/omap_vout.c  2016-01-27 12:26:21.266626324 +0100
-@@ -63,7 +63,6 @@
-       OMAP_VIDEO2,
- };
--static struct videobuf_queue_ops video_vbq_ops;
- /* Variables configurable through module params*/
- static u32 video1_numbuffers = 3;
- static u32 video2_numbuffers = 3;
-@@ -1008,6 +1007,12 @@
- {
-       struct videobuf_queue *q;
-       struct omap_vout_device *vout = NULL;
-+      static struct videobuf_queue_ops video_vbq_ops = {
-+              .buf_setup = omap_vout_buffer_setup,
-+              .buf_prepare = omap_vout_buffer_prepare,
-+              .buf_release = omap_vout_buffer_release,
-+              .buf_queue = omap_vout_buffer_queue,
-+      };
-       vout = video_drvdata(file);
-       v4l2_dbg(1, debug, &vout->vid_dev->v4l2_dev, "Entering %s\n", __func__);
-@@ -1025,10 +1030,6 @@
-       vout->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-       q = &vout->vbq;
--      video_vbq_ops.buf_setup = omap_vout_buffer_setup;
--      video_vbq_ops.buf_prepare = omap_vout_buffer_prepare;
--      video_vbq_ops.buf_release = omap_vout_buffer_release;
--      video_vbq_ops.buf_queue = omap_vout_buffer_queue;
-       spin_lock_init(&vout->vbq_lock);
-       videobuf_queue_dma_contig_init(q, &video_vbq_ops, q->dev,
-diff -Naur backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer_grp_layer.c backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer_grp_layer.c
---- backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer_grp_layer.c      2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer_grp_layer.c  2016-01-27 12:26:21.266626324 +0100
-@@ -235,7 +235,7 @@
- {
-       struct mxr_layer *layer;
-       int ret;
--      struct mxr_layer_ops ops = {
-+      static struct mxr_layer_ops ops = {
-               .release = mxr_graph_layer_release,
-               .buffer_set = mxr_graph_buffer_set,
-               .stream_set = mxr_graph_stream_set,
-diff -Naur backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer.h backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer.h
---- backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer.h        2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer.h    2016-01-27 12:26:21.266626324 +0100
-@@ -156,7 +156,7 @@
-       /** layer index (unique identifier) */
-       int idx;
-       /** callbacks for layer methods */
--      struct mxr_layer_ops ops;
-+      struct mxr_layer_ops *ops;
-       /** format array */
-       const struct mxr_format **fmt_array;
-       /** size of format array */
-diff -Naur backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer_reg.c backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer_reg.c
---- backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer_reg.c    2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer_reg.c        2016-01-27 12:26:21.266626324 +0100
-@@ -276,7 +276,7 @@
-               layer->update_buf = next;
-       }
--      layer->ops.buffer_set(layer, layer->update_buf);
-+      layer->ops->buffer_set(layer, layer->update_buf);
-       if (done && done != layer->shadow_buf)
-               vb2_buffer_done(&done->vb, VB2_BUF_STATE_DONE);
-diff -Naur backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer_video.c backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer_video.c
---- backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer_video.c  2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer_video.c      2016-01-27 12:26:21.266626324 +0100
-@@ -210,7 +210,7 @@
-       layer->geo.src.height = layer->geo.src.full_height;
-       mxr_geometry_dump(mdev, &layer->geo);
--      layer->ops.fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
-+      layer->ops->fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
-       mxr_geometry_dump(mdev, &layer->geo);
- }
-@@ -228,7 +228,7 @@
-       layer->geo.dst.full_width = mbus_fmt.width;
-       layer->geo.dst.full_height = mbus_fmt.height;
-       layer->geo.dst.field = mbus_fmt.field;
--      layer->ops.fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
-+      layer->ops->fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
-       mxr_geometry_dump(mdev, &layer->geo);
- }
-@@ -334,7 +334,7 @@
-       /* set source size to highest accepted value */
-       geo->src.full_width = max(geo->dst.full_width, pix->width);
-       geo->src.full_height = max(geo->dst.full_height, pix->height);
--      layer->ops.fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
-+      layer->ops->fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
-       mxr_geometry_dump(mdev, &layer->geo);
-       /* set cropping to total visible screen */
-       geo->src.width = pix->width;
-@@ -342,12 +342,12 @@
-       geo->src.x_offset = 0;
-       geo->src.y_offset = 0;
-       /* assure consistency of geometry */
--      layer->ops.fix_geometry(layer, MXR_GEOMETRY_CROP, MXR_NO_OFFSET);
-+      layer->ops->fix_geometry(layer, MXR_GEOMETRY_CROP, MXR_NO_OFFSET);
-       mxr_geometry_dump(mdev, &layer->geo);
-       /* set full size to lowest possible value */
-       geo->src.full_width = 0;
-       geo->src.full_height = 0;
--      layer->ops.fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
-+      layer->ops->fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
-       mxr_geometry_dump(mdev, &layer->geo);
-       /* returning results */
-@@ -474,7 +474,7 @@
-               target->width = s->r.width;
-               target->height = s->r.height;
--              layer->ops.fix_geometry(layer, stage, s->flags);
-+              layer->ops->fix_geometry(layer, stage, s->flags);
-               /* retrieve update selection rectangle */
-               res.left = target->x_offset;
-@@ -938,13 +938,13 @@
-       mxr_output_get(mdev);
-       mxr_layer_update_output(layer);
--      layer->ops.format_set(layer);
-+      layer->ops->format_set(layer);
-       /* enabling layer in hardware */
-       spin_lock_irqsave(&layer->enq_slock, flags);
-       layer->state = MXR_LAYER_STREAMING;
-       spin_unlock_irqrestore(&layer->enq_slock, flags);
--      layer->ops.stream_set(layer, MXR_ENABLE);
-+      layer->ops->stream_set(layer, MXR_ENABLE);
-       mxr_streamer_get(mdev);
-       return 0;
-@@ -1014,7 +1014,7 @@
-       spin_unlock_irqrestore(&layer->enq_slock, flags);
-       /* disabling layer in hardware */
--      layer->ops.stream_set(layer, MXR_DISABLE);
-+      layer->ops->stream_set(layer, MXR_DISABLE);
-       /* remove one streamer */
-       mxr_streamer_put(mdev);
-       /* allow changes in output configuration */
-@@ -1052,8 +1052,8 @@
- void mxr_layer_release(struct mxr_layer *layer)
- {
--      if (layer->ops.release)
--              layer->ops.release(layer);
-+      if (layer->ops->release)
-+              layer->ops->release(layer);
- }
- void mxr_base_layer_release(struct mxr_layer *layer)
-@@ -1079,7 +1079,7 @@
-       layer->mdev = mdev;
-       layer->idx = idx;
--      layer->ops = *ops;
-+      layer->ops = ops;
-       spin_lock_init(&layer->enq_slock);
-       INIT_LIST_HEAD(&layer->enq_list);
-diff -Naur backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer_vp_layer.c backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer_vp_layer.c
---- backports-4.2.6-1.org/drivers/media/platform/s5p-tv/mixer_vp_layer.c       2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/platform/s5p-tv/mixer_vp_layer.c   2016-01-27 12:26:21.266626324 +0100
-@@ -206,7 +206,7 @@
- {
-       struct mxr_layer *layer;
-       int ret;
--      struct mxr_layer_ops ops = {
-+      static struct mxr_layer_ops ops = {
-               .release = mxr_vp_layer_release,
-               .buffer_set = mxr_vp_buffer_set,
-               .stream_set = mxr_vp_stream_set,
-diff -Naur backports-4.2.6-1.org/drivers/media/platform/vivid/vivid-osd.c backports-4.2.6-1/drivers/media/platform/vivid/vivid-osd.c
---- backports-4.2.6-1.org/drivers/media/platform/vivid/vivid-osd.c     2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/platform/vivid/vivid-osd.c 2016-01-27 12:26:21.269959657 +0100
-@@ -85,6 +85,7 @@
-       case FBIOGET_VBLANK: {
-               struct fb_vblank vblank;
-+              memset(&vblank, 0, sizeof(vblank));
-               vblank.flags = FB_VBLANK_HAVE_COUNT | FB_VBLANK_HAVE_VCOUNT |
-                       FB_VBLANK_HAVE_VSYNC;
-               vblank.count = 0;
-diff -Naur backports-4.2.6-1.org/drivers/media/radio/radio-cadet.c backports-4.2.6-1/drivers/media/radio/radio-cadet.c
---- backports-4.2.6-1.org/drivers/media/radio/radio-cadet.c    2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/radio/radio-cadet.c        2016-01-27 12:26:21.269959657 +0100
-@@ -333,6 +333,8 @@
-       unsigned char readbuf[RDS_BUFFER];
-       int i = 0;
-+      if (count > RDS_BUFFER)
-+              return -EFAULT;
-       mutex_lock(&dev->lock);
-       if (dev->rdsstat == 0)
-               cadet_start_rds(dev);
-@@ -349,8 +351,9 @@
-               readbuf[i++] = dev->rdsbuf[dev->rdsout++];
-       mutex_unlock(&dev->lock);
--      if (i && copy_to_user(data, readbuf, i))
--              return -EFAULT;
-+      if (i > sizeof(readbuf) || (i && copy_to_user(data, readbuf, i)))
-+              i = -EFAULT;
-+
-       return i;
- }
-diff -Naur backports-4.2.6-1.org/drivers/media/radio/radio-maxiradio.c backports-4.2.6-1/drivers/media/radio/radio-maxiradio.c
---- backports-4.2.6-1.org/drivers/media/radio/radio-maxiradio.c        2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/radio/radio-maxiradio.c    2016-01-27 12:26:21.269959657 +0100
-@@ -61,7 +61,7 @@
- /* TEA5757 pin mappings */
- static const int clk = 1, data = 2, wren = 4, mo_st = 8, power = 16;
--static atomic_t maxiradio_instance = ATOMIC_INIT(0);
-+static atomic_unchecked_t maxiradio_instance = ATOMIC_INIT(0);
- #define PCI_VENDOR_ID_GUILLEMOT 0x5046
- #define PCI_DEVICE_ID_GUILLEMOT_MAXIRADIO 0x1001
-diff -Naur backports-4.2.6-1.org/drivers/media/radio/radio-shark2.c backports-4.2.6-1/drivers/media/radio/radio-shark2.c
---- backports-4.2.6-1.org/drivers/media/radio/radio-shark2.c   2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/radio/radio-shark2.c       2016-01-27 12:26:21.269959657 +0100
-@@ -74,7 +74,7 @@
-       u8 *transfer_buffer;
- };
--static atomic_t shark_instance = ATOMIC_INIT(0);
-+static atomic_unchecked_t shark_instance = ATOMIC_INIT(0);
- static int shark_write_reg(struct radio_tea5777 *tea, u64 reg)
- {
-diff -Naur backports-4.2.6-1.org/drivers/media/radio/radio-shark.c backports-4.2.6-1/drivers/media/radio/radio-shark.c
---- backports-4.2.6-1.org/drivers/media/radio/radio-shark.c    2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/radio/radio-shark.c        2016-01-27 12:26:21.269959657 +0100
-@@ -79,7 +79,7 @@
-       u32 last_val;
- };
--static atomic_t shark_instance = ATOMIC_INIT(0);
-+static atomic_unchecked_t shark_instance = ATOMIC_INIT(0);
- static void shark_write_val(struct snd_tea575x *tea, u32 val)
- {
-diff -Naur backports-4.2.6-1.org/drivers/media/radio/radio-si476x.c backports-4.2.6-1/drivers/media/radio/radio-si476x.c
---- backports-4.2.6-1.org/drivers/media/radio/radio-si476x.c   2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/radio/radio-si476x.c       2016-01-27 12:26:21.269959657 +0100
-@@ -1445,7 +1445,7 @@
-       struct si476x_radio *radio;
-       struct v4l2_ctrl *ctrl;
--      static atomic_t instance = ATOMIC_INIT(0);
-+      static atomic_unchecked_t instance = ATOMIC_INIT(0);
-       radio = devm_kzalloc(&pdev->dev, sizeof(*radio), GFP_KERNEL);
-       if (!radio)
-diff -Naur backports-4.2.6-1.org/drivers/media/radio/wl128x/fmdrv_common.c backports-4.2.6-1/drivers/media/radio/wl128x/fmdrv_common.c
---- backports-4.2.6-1.org/drivers/media/radio/wl128x/fmdrv_common.c    2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/radio/wl128x/fmdrv_common.c        2016-01-27 12:26:21.269959657 +0100
-@@ -71,7 +71,7 @@
- MODULE_PARM_DESC(rds_buf, "RDS buffer entries");
- /* Radio Nr */
--static u32 radio_nr = -1;
-+static int radio_nr = -1;
- module_param(radio_nr, int, 0444);
- MODULE_PARM_DESC(radio_nr, "Radio Nr");
-diff -Naur backports-4.2.6-1.org/drivers/media/usb/dvb-usb/cinergyT2-core.c backports-4.2.6-1/drivers/media/usb/dvb-usb/cinergyT2-core.c
---- backports-4.2.6-1.org/drivers/media/usb/dvb-usb/cinergyT2-core.c   2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/usb/dvb-usb/cinergyT2-core.c       2016-01-27 12:26:21.269959657 +0100
-@@ -50,29 +50,73 @@
- static int cinergyt2_streaming_ctrl(struct dvb_usb_adapter *adap, int enable)
- {
--      char buf[] = { CINERGYT2_EP1_CONTROL_STREAM_TRANSFER, enable ? 1 : 0 };
--      char result[64];
--      return dvb_usb_generic_rw(adap->dev, buf, sizeof(buf), result,
--                              sizeof(result), 0);
-+      char *buf;
-+      char *result;
-+      int retval;
-+
-+      buf = kmalloc(2, GFP_KERNEL);
-+      if (buf == NULL)
-+              return -ENOMEM;
-+      result = kmalloc(64, GFP_KERNEL);
-+      if (result == NULL) {
-+              kfree(buf);
-+              return -ENOMEM;
-+      }
-+
-+      buf[0] = CINERGYT2_EP1_CONTROL_STREAM_TRANSFER;
-+      buf[1] = enable ? 1 : 0;
-+
-+      retval = dvb_usb_generic_rw(adap->dev, buf, 2, result, 64, 0);
-+
-+      kfree(buf);
-+      kfree(result);
-+      return retval;
- }
- static int cinergyt2_power_ctrl(struct dvb_usb_device *d, int enable)
- {
--      char buf[] = { CINERGYT2_EP1_SLEEP_MODE, enable ? 0 : 1 };
--      char state[3];
--      return dvb_usb_generic_rw(d, buf, sizeof(buf), state, sizeof(state), 0);
-+      char *buf;
-+      char *state;
-+      int retval;
-+
-+      buf = kmalloc(2, GFP_KERNEL);
-+      if (buf == NULL)
-+              return -ENOMEM;
-+      state = kmalloc(3, GFP_KERNEL);
-+      if (state == NULL) {
-+              kfree(buf);
-+              return -ENOMEM;
-+      }
-+
-+      buf[0] = CINERGYT2_EP1_SLEEP_MODE;
-+      buf[1] = enable ? 1 : 0;
-+
-+      retval = dvb_usb_generic_rw(d, buf, 2, state, 3, 0);
-+
-+      kfree(buf);
-+      kfree(state);
-+      return retval;
- }
- static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap)
- {
--      char query[] = { CINERGYT2_EP1_GET_FIRMWARE_VERSION };
--      char state[3];
-+      char *query;
-+      char *state;
-       int ret;
-+      query = kmalloc(1, GFP_KERNEL);
-+      if (query == NULL)
-+              return -ENOMEM;
-+      state = kmalloc(3, GFP_KERNEL);
-+      if (state == NULL) {
-+              kfree(query);
-+              return -ENOMEM;
-+      }
-+
-+      query[0] = CINERGYT2_EP1_GET_FIRMWARE_VERSION;
-       adap->fe_adap[0].fe = cinergyt2_fe_attach(adap->dev);
--      ret = dvb_usb_generic_rw(adap->dev, query, sizeof(query), state,
--                              sizeof(state), 0);
-+      ret = dvb_usb_generic_rw(adap->dev, query, 1, state, 3, 0);
-       if (ret < 0) {
-               deb_rc("cinergyt2_power_ctrl() Failed to retrieve sleep "
-                       "state info\n");
-@@ -80,7 +124,8 @@
-       /* Copy this pointer as we are gonna need it in the release phase */
-       cinergyt2_usb_device = adap->dev;
--
-+      kfree(query);
-+      kfree(state);
-       return 0;
- }
-@@ -141,12 +186,23 @@
- static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
- {
-       struct cinergyt2_state *st = d->priv;
--      u8 key[5] = {0, 0, 0, 0, 0}, cmd = CINERGYT2_EP1_GET_RC_EVENTS;
-+      u8 *key, *cmd;
-       int i;
-+      cmd = kmalloc(1, GFP_KERNEL);
-+      if (cmd == NULL)
-+              return -EINVAL;
-+      key = kzalloc(5, GFP_KERNEL);
-+      if (key == NULL) {
-+              kfree(cmd);
-+              return -EINVAL;
-+      }
-+
-+      cmd[0] = CINERGYT2_EP1_GET_RC_EVENTS;
-+
-       *state = REMOTE_NO_KEY_PRESSED;
--      dvb_usb_generic_rw(d, &cmd, 1, key, sizeof(key), 0);
-+      dvb_usb_generic_rw(d, cmd, 1, key, 5, 0);
-       if (key[4] == 0xff) {
-               /* key repeat */
-               st->rc_counter++;
-@@ -157,12 +213,12 @@
-                                       *event = d->last_event;
-                                       deb_rc("repeat key, event %x\n",
-                                                  *event);
--                                      return 0;
-+                                      goto out;
-                               }
-                       }
-                       deb_rc("repeated key (non repeatable)\n");
-               }
--              return 0;
-+              goto out;
-       }
-       /* hack to pass checksum on the custom field */
-@@ -174,6 +230,9 @@
-               deb_rc("key: %*ph\n", 5, key);
-       }
-+out:
-+      kfree(cmd);
-+      kfree(key);
-       return 0;
- }
-diff -Naur backports-4.2.6-1.org/drivers/media/usb/dvb-usb/cinergyT2-fe.c backports-4.2.6-1/drivers/media/usb/dvb-usb/cinergyT2-fe.c
---- backports-4.2.6-1.org/drivers/media/usb/dvb-usb/cinergyT2-fe.c     2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/usb/dvb-usb/cinergyT2-fe.c 2016-01-27 12:26:21.269959657 +0100
-@@ -145,103 +145,176 @@
-                                   enum fe_status *status)
- {
-       struct cinergyt2_fe_state *state = fe->demodulator_priv;
--      struct dvbt_get_status_msg result;
--      u8 cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
-+      struct dvbt_get_status_msg *result;
-+      u8 *cmd;
-       int ret;
--      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (u8 *)&result,
--                      sizeof(result), 0);
-+      cmd = kmalloc(1, GFP_KERNEL);
-+      if (cmd == NULL)
-+              return -ENOMEM;
-+      result = kmalloc(sizeof(*result), GFP_KERNEL);
-+      if (result == NULL) {
-+              kfree(cmd);
-+              return -ENOMEM;
-+      }
-+
-+      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
-+
-+      ret = dvb_usb_generic_rw(state->d, cmd, 1, (u8 *)result,
-+                      sizeof(*result), 0);
-       if (ret < 0)
--              return ret;
-+              goto out;
-       *status = 0;
--      if (0xffff - le16_to_cpu(result.gain) > 30)
-+      if (0xffff - le16_to_cpu(result->gain) > 30)
-               *status |= FE_HAS_SIGNAL;
--      if (result.lock_bits & (1 << 6))
-+      if (result->lock_bits & (1 << 6))
-               *status |= FE_HAS_LOCK;
--      if (result.lock_bits & (1 << 5))
-+      if (result->lock_bits & (1 << 5))
-               *status |= FE_HAS_SYNC;
--      if (result.lock_bits & (1 << 4))
-+      if (result->lock_bits & (1 << 4))
-               *status |= FE_HAS_CARRIER;
--      if (result.lock_bits & (1 << 1))
-+      if (result->lock_bits & (1 << 1))
-               *status |= FE_HAS_VITERBI;
-       if ((*status & (FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC)) !=
-                       (FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC))
-               *status &= ~FE_HAS_LOCK;
--      return 0;
-+out:
-+      kfree(cmd);
-+      kfree(result);
-+      return ret;
- }
- static int cinergyt2_fe_read_ber(struct dvb_frontend *fe, u32 *ber)
- {
-       struct cinergyt2_fe_state *state = fe->demodulator_priv;
--      struct dvbt_get_status_msg status;
--      char cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
-+      struct dvbt_get_status_msg *status;
-+      char *cmd;
-       int ret;
--      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (char *)&status,
--                              sizeof(status), 0);
-+      cmd = kmalloc(1, GFP_KERNEL);
-+      if (cmd == NULL)
-+              return -ENOMEM;
-+      status = kmalloc(sizeof(*status), GFP_KERNEL);
-+      if (status == NULL) {
-+              kfree(cmd);
-+              return -ENOMEM;
-+      }
-+
-+      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
-+
-+      ret = dvb_usb_generic_rw(state->d, cmd, 1, (char *)status,
-+                              sizeof(*status), 0);
-       if (ret < 0)
--              return ret;
-+              goto out;
--      *ber = le32_to_cpu(status.viterbi_error_rate);
-+      *ber = le32_to_cpu(status->viterbi_error_rate);
-+out:
-+      kfree(cmd);
-+      kfree(status);
-       return 0;
- }
- static int cinergyt2_fe_read_unc_blocks(struct dvb_frontend *fe, u32 *unc)
- {
-       struct cinergyt2_fe_state *state = fe->demodulator_priv;
--      struct dvbt_get_status_msg status;
--      u8 cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
-+      struct dvbt_get_status_msg *status;
-+      u8 *cmd;
-       int ret;
--      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (u8 *)&status,
--                              sizeof(status), 0);
-+      cmd = kmalloc(1, GFP_KERNEL);
-+      if (cmd == NULL)
-+              return -ENOMEM;
-+      status = kmalloc(sizeof(*status), GFP_KERNEL);
-+      if (status == NULL) {
-+              kfree(cmd);
-+              return -ENOMEM;
-+      }
-+
-+      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
-+
-+      ret = dvb_usb_generic_rw(state->d, cmd, 1, (u8 *)status,
-+                              sizeof(*status), 0);
-       if (ret < 0) {
-               err("cinergyt2_fe_read_unc_blocks() Failed! (Error=%d)\n",
-                       ret);
--              return ret;
-+              goto out;
-       }
--      *unc = le32_to_cpu(status.uncorrected_block_count);
--      return 0;
-+      *unc = le32_to_cpu(status->uncorrected_block_count);
-+
-+out:
-+      kfree(cmd);
-+      kfree(status);
-+      return ret;
- }
- static int cinergyt2_fe_read_signal_strength(struct dvb_frontend *fe,
-                                               u16 *strength)
- {
-       struct cinergyt2_fe_state *state = fe->demodulator_priv;
--      struct dvbt_get_status_msg status;
--      char cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
-+      struct dvbt_get_status_msg *status;
-+      char *cmd;
-       int ret;
--      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (char *)&status,
--                              sizeof(status), 0);
-+      cmd = kmalloc(1, GFP_KERNEL);
-+      if (cmd == NULL)
-+              return -ENOMEM;
-+      status = kmalloc(sizeof(*status), GFP_KERNEL);
-+      if (status == NULL) {
-+              kfree(cmd);
-+              return -ENOMEM;
-+      }
-+
-+      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
-+
-+      ret = dvb_usb_generic_rw(state->d, cmd, 1, (char *)status,
-+                              sizeof(*status), 0);
-       if (ret < 0) {
-               err("cinergyt2_fe_read_signal_strength() Failed!"
-                       " (Error=%d)\n", ret);
--              return ret;
-+              goto out;
-       }
--      *strength = (0xffff - le16_to_cpu(status.gain));
-+      *strength = (0xffff - le16_to_cpu(status->gain));
-+
-+out:
-+      kfree(cmd);
-+      kfree(status);
-       return 0;
- }
- static int cinergyt2_fe_read_snr(struct dvb_frontend *fe, u16 *snr)
- {
-       struct cinergyt2_fe_state *state = fe->demodulator_priv;
--      struct dvbt_get_status_msg status;
--      char cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
-+      struct dvbt_get_status_msg *status;
-+      char *cmd;
-       int ret;
--      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (char *)&status,
--                              sizeof(status), 0);
-+      cmd = kmalloc(1, GFP_KERNEL);
-+      if (cmd == NULL)
-+              return -ENOMEM;
-+      status = kmalloc(sizeof(*status), GFP_KERNEL);
-+      if (status == NULL) {
-+              kfree(cmd);
-+              return -ENOMEM;
-+      }
-+
-+      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
-+
-+      ret = dvb_usb_generic_rw(state->d, cmd, 1, (char *)status,
-+                              sizeof(*status), 0);
-       if (ret < 0) {
-               err("cinergyt2_fe_read_snr() Failed! (Error=%d)\n", ret);
--              return ret;
-+              goto out;
-       }
--      *snr = (status.snr << 8) | status.snr;
--      return 0;
-+      *snr = (status->snr << 8) | status->snr;
-+
-+out:
-+      kfree(cmd);
-+      kfree(status);
-+      return ret;
- }
- static int cinergyt2_fe_init(struct dvb_frontend *fe)
-@@ -266,35 +339,46 @@
- {
-       struct dtv_frontend_properties *fep = &fe->dtv_property_cache;
-       struct cinergyt2_fe_state *state = fe->demodulator_priv;
--      struct dvbt_set_parameters_msg param;
--      char result[2];
-+      struct dvbt_set_parameters_msg *param;
-+      char *result;
-       int err;
--      param.cmd = CINERGYT2_EP1_SET_TUNER_PARAMETERS;
--      param.tps = cpu_to_le16(compute_tps(fep));
--      param.freq = cpu_to_le32(fep->frequency / 1000);
--      param.flags = 0;
-+      result = kmalloc(2, GFP_KERNEL);
-+      if (result == NULL)
-+              return -ENOMEM;
-+      param = kmalloc(sizeof(*param), GFP_KERNEL);
-+      if (param == NULL) {
-+              kfree(result);
-+              return -ENOMEM;
-+      }
-+
-+      param->cmd = CINERGYT2_EP1_SET_TUNER_PARAMETERS;
-+      param->tps = cpu_to_le16(compute_tps(fep));
-+      param->freq = cpu_to_le32(fep->frequency / 1000);
-+      param->flags = 0;
-       switch (fep->bandwidth_hz) {
-       default:
-       case 8000000:
--              param.bandwidth = 8;
-+              param->bandwidth = 8;
-               break;
-       case 7000000:
--              param.bandwidth = 7;
-+              param->bandwidth = 7;
-               break;
-       case 6000000:
--              param.bandwidth = 6;
-+              param->bandwidth = 6;
-               break;
-       }
-       err = dvb_usb_generic_rw(state->d,
--                      (char *)&param, sizeof(param),
--                      result, sizeof(result), 0);
-+                      (char *)param, sizeof(*param),
-+                      result, 2, 0);
-       if (err < 0)
-               err("cinergyt2_fe_set_frontend() Failed! err=%d\n", err);
--      return (err < 0) ? err : 0;
-+      kfree(result);
-+      kfree(param);
-+      return err;
- }
- static void cinergyt2_fe_release(struct dvb_frontend *fe)
-diff -Naur backports-4.2.6-1.org/drivers/media/usb/dvb-usb/dvb-usb-firmware.c backports-4.2.6-1/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
---- backports-4.2.6-1.org/drivers/media/usb/dvb-usb/dvb-usb-firmware.c 2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/usb/dvb-usb/dvb-usb-firmware.c     2016-01-27 12:26:21.269959657 +0100
-@@ -35,42 +35,57 @@
- int usb_cypress_load_firmware(struct usb_device *udev, const struct firmware *fw, int type)
- {
--      struct hexline hx;
--      u8 reset;
-+      struct hexline *hx;
-+      u8 *reset;
-       int ret,pos=0;
-+      reset = kmalloc(1, GFP_KERNEL);
-+      if (reset == NULL)
-+              return -ENOMEM;
-+
-+      hx = kmalloc(sizeof(struct hexline), GFP_KERNEL);
-+      if (hx == NULL) {
-+              kfree(reset);
-+              return -ENOMEM;
-+      }
-+
-       /* stop the CPU */
--      reset = 1;
--      if ((ret = usb_cypress_writemem(udev,cypress[type].cpu_cs_register,&reset,1)) != 1)
-+      reset[0] = 1;
-+      if ((ret = usb_cypress_writemem(udev,cypress[type].cpu_cs_register,reset,1)) != 1)
-               err("could not stop the USB controller CPU.");
--      while ((ret = dvb_usb_get_hexline(fw,&hx,&pos)) > 0) {
--              deb_fw("writing to address 0x%04x (buffer: 0x%02x %02x)\n",hx.addr,hx.len,hx.chk);
--              ret = usb_cypress_writemem(udev,hx.addr,hx.data,hx.len);
-+      while ((ret = dvb_usb_get_hexline(fw,hx,&pos)) > 0) {
-+              deb_fw("writing to address 0x%04x (buffer: 0x%02x %02x)\n",hx->addr,hx->len,hx->chk);
-+              ret = usb_cypress_writemem(udev,hx->addr,hx->data,hx->len);
--              if (ret != hx.len) {
-+              if (ret != hx->len) {
-                       err("error while transferring firmware "
-                               "(transferred size: %d, block size: %d)",
--                              ret,hx.len);
-+                              ret,hx->len);
-                       ret = -EINVAL;
-                       break;
-               }
-       }
-       if (ret < 0) {
-               err("firmware download failed at %d with %d",pos,ret);
-+              kfree(reset);
-+              kfree(hx);
-               return ret;
-       }
-       if (ret == 0) {
-               /* restart the CPU */
--              reset = 0;
--              if (ret || usb_cypress_writemem(udev,cypress[type].cpu_cs_register,&reset,1) != 1) {
-+              reset[0] = 0;
-+              if (ret || usb_cypress_writemem(udev,cypress[type].cpu_cs_register,reset,1) != 1) {
-                       err("could not restart the USB controller CPU.");
-                       ret = -EINVAL;
-               }
-       } else
-               ret = -EIO;
-+      kfree(reset);
-+      kfree(hx);
-+
-       return ret;
- }
- EXPORT_SYMBOL(usb_cypress_load_firmware);
-diff -Naur backports-4.2.6-1.org/drivers/media/usb/dvb-usb/technisat-usb2.c backports-4.2.6-1/drivers/media/usb/dvb-usb/technisat-usb2.c
---- backports-4.2.6-1.org/drivers/media/usb/dvb-usb/technisat-usb2.c   2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/usb/dvb-usb/technisat-usb2.c       2016-01-27 12:26:21.269959657 +0100
-@@ -87,8 +87,11 @@
- static int technisat_usb2_i2c_access(struct usb_device *udev,
-               u8 device_addr, u8 *tx, u8 txlen, u8 *rx, u8 rxlen)
- {
--      u8 b[64];
--      int ret, actual_length;
-+      u8 *b = kmalloc(64, GFP_KERNEL);
-+      int ret, actual_length, error = 0;
-+
-+      if (b == NULL)
-+              return -ENOMEM;
-       deb_i2c("i2c-access: %02x, tx: ", device_addr);
-       debug_dump(tx, txlen, deb_i2c);
-@@ -121,7 +124,8 @@
-       if (ret < 0) {
-               err("i2c-error: out failed %02x = %d", device_addr, ret);
--              return -ENODEV;
-+              error = -ENODEV;
-+              goto out;
-       }
-       ret = usb_bulk_msg(udev,
-@@ -129,7 +133,8 @@
-                       b, 64, &actual_length, 1000);
-       if (ret < 0) {
-               err("i2c-error: in failed %02x = %d", device_addr, ret);
--              return -ENODEV;
-+              error = -ENODEV;
-+              goto out;
-       }
-       if (b[0] != I2C_STATUS_OK) {
-@@ -137,8 +142,10 @@
-               /* handle tuner-i2c-nak */
-               if (!(b[0] == I2C_STATUS_NAK &&
-                               device_addr == 0x60
--                              /* && device_is_technisat_usb2 */))
--                      return -ENODEV;
-+                              /* && device_is_technisat_usb2 */)) {
-+                      error = -ENODEV;
-+                      goto out;
-+              }
-       }
-       deb_i2c("status: %d, ", b[0]);
-@@ -152,7 +159,9 @@
-       deb_i2c("\n");
--      return 0;
-+out:
-+      kfree(b);
-+      return error;
- }
- static int technisat_usb2_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msg,
-@@ -224,14 +233,16 @@
- {
-       int ret;
--      u8 led[8] = {
--              red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST,
--              0
--      };
-+      u8 *led = kzalloc(8, GFP_KERNEL);
-+
-+      if (led == NULL)
-+              return -ENOMEM;
-       if (disable_led_control && state != TECH_LED_OFF)
-               return 0;
-+      led[0] = red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST;
-+
-       switch (state) {
-       case TECH_LED_ON:
-               led[1] = 0x82;
-@@ -263,16 +274,22 @@
-               red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST,
-               USB_TYPE_VENDOR | USB_DIR_OUT,
-               0, 0,
--              led, sizeof(led), 500);
-+              led, 8, 500);
-       mutex_unlock(&d->i2c_mutex);
-+
-+      kfree(led);
-+
-       return ret;
- }
- static int technisat_usb2_set_led_timer(struct dvb_usb_device *d, u8 red, u8 green)
- {
-       int ret;
--      u8 b = 0;
-+      u8 *b = kzalloc(1, GFP_KERNEL);
-+
-+      if (b == NULL)
-+              return -ENOMEM;
-       if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
-               return -EAGAIN;
-@@ -281,10 +298,12 @@
-               SET_LED_TIMER_DIVIDER_VENDOR_REQUEST,
-               USB_TYPE_VENDOR | USB_DIR_OUT,
-               (red << 8) | green, 0,
--              &b, 1, 500);
-+              b, 1, 500);
-       mutex_unlock(&d->i2c_mutex);
-+      kfree(b);
-+
-       return ret;
- }
-@@ -328,7 +347,7 @@
-               struct dvb_usb_device_description **desc, int *cold)
- {
-       int ret;
--      u8 version[3];
-+      u8 *version = kmalloc(3, GFP_KERNEL);
-       /* first select the interface */
-       if (usb_set_interface(udev, 0, 1) != 0)
-@@ -338,11 +357,14 @@
-       *cold = 0; /* by default do not download a firmware - just in case something is wrong */
-+      if (version == NULL)
-+              return 0;
-+
-       ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
-               GET_VERSION_INFO_VENDOR_REQUEST,
-               USB_TYPE_VENDOR | USB_DIR_IN,
-               0, 0,
--              version, sizeof(version), 500);
-+              version, 3, 500);
-       if (ret < 0)
-               *cold = 1;
-@@ -351,6 +373,8 @@
-               *cold = 0;
-       }
-+      kfree(version);
-+
-       return 0;
- }
-@@ -594,10 +618,15 @@
- static int technisat_usb2_get_ir(struct dvb_usb_device *d)
- {
--      u8 buf[62], *b;
-+      u8 *buf, *b;
-       int ret;
-       struct ir_raw_event ev;
-+      buf = kmalloc(62, GFP_KERNEL);
-+
-+      if (buf == NULL)
-+              return -ENOMEM;
-+
-       buf[0] = GET_IR_DATA_VENDOR_REQUEST;
-       buf[1] = 0x08;
-       buf[2] = 0x8f;
-@@ -620,16 +649,20 @@
-                       GET_IR_DATA_VENDOR_REQUEST,
-                       USB_TYPE_VENDOR | USB_DIR_IN,
-                       0x8080, 0,
--                      buf, sizeof(buf), 500);
-+                      buf, 62, 500);
- unlock:
-       mutex_unlock(&d->i2c_mutex);
--      if (ret < 0)
-+      if (ret < 0) {
-+              kfree(buf);
-               return ret;
-+      }
--      if (ret == 1)
-+      if (ret == 1) {
-+              kfree(buf);
-               return 0; /* no key pressed */
-+      }
-       /* decoding */
-       b = buf+1;
-@@ -656,6 +689,8 @@
-       ir_raw_event_handle(d->rc_dev);
-+      kfree(buf);
-+
-       return 1;
- }
-diff -Naur backports-4.2.6-1.org/drivers/media/v4l2-core/v4l2-compat-ioctl32.c backports-4.2.6-1/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
---- backports-4.2.6-1.org/drivers/media/v4l2-core/v4l2-compat-ioctl32.c        2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/v4l2-core/v4l2-compat-ioctl32.c    2016-01-27 12:26:21.269959657 +0100
-@@ -429,7 +429,7 @@
-                * by passing a very big num_planes value */
-               uplane = compat_alloc_user_space(num_planes *
-                                               sizeof(struct v4l2_plane));
--              kp->m.planes = (__force struct v4l2_plane *)uplane;
-+              kp->m.planes = (__force_kernel struct v4l2_plane *)uplane;
-               while (--num_planes >= 0) {
-                       ret = get_v4l2_plane32(uplane, uplane32, kp->memory);
-@@ -500,7 +500,7 @@
-               if (num_planes == 0)
-                       return 0;
--              uplane = (__force struct v4l2_plane __user *)kp->m.planes;
-+              uplane = (struct v4l2_plane __force_user *)kp->m.planes;
-               if (get_user(p, &up->m.planes))
-                       return -EFAULT;
-               uplane32 = compat_ptr(p);
-@@ -564,7 +564,7 @@
-               get_user(kp->flags, &up->flags) ||
-               copy_from_user(&kp->fmt, &up->fmt, sizeof(up->fmt)))
-                       return -EFAULT;
--      kp->base = (__force void *)compat_ptr(tmp);
-+      kp->base = (__force_kernel void *)compat_ptr(tmp);
-       return 0;
- }
-@@ -669,7 +669,7 @@
-                       n * sizeof(struct v4l2_ext_control32)))
-               return -EFAULT;
-       kcontrols = compat_alloc_user_space(n * sizeof(struct v4l2_ext_control));
--      kp->controls = (__force struct v4l2_ext_control *)kcontrols;
-+      kp->controls = (__force_kernel struct v4l2_ext_control *)kcontrols;
-       while (--n >= 0) {
-               u32 id;
-@@ -696,7 +696,7 @@
- {
-       struct v4l2_ext_control32 __user *ucontrols;
-       struct v4l2_ext_control __user *kcontrols =
--              (__force struct v4l2_ext_control __user *)kp->controls;
-+              (struct v4l2_ext_control __force_user *)kp->controls;
-       int n = kp->count;
-       compat_caddr_t p;
-@@ -780,7 +780,7 @@
-               get_user(tmp, &up->edid) ||
-               copy_from_user(kp->reserved, up->reserved, sizeof(kp->reserved)))
-                       return -EFAULT;
--      kp->edid = (__force u8 *)compat_ptr(tmp);
-+      kp->edid = (__force_kernel u8 *)compat_ptr(tmp);
-       return 0;
- }
-diff -Naur backports-4.2.6-1.org/drivers/media/v4l2-core/v4l2-device.c backports-4.2.6-1/drivers/media/v4l2-core/v4l2-device.c
---- backports-4.2.6-1.org/drivers/media/v4l2-core/v4l2-device.c        2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/v4l2-core/v4l2-device.c    2016-01-27 12:26:21.269959657 +0100
-@@ -74,9 +74,9 @@
- EXPORT_SYMBOL_GPL(v4l2_device_put);
- int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename,
--                                              atomic_t *instance)
-+                                              atomic_unchecked_t *instance)
- {
--      int num = atomic_inc_return(instance) - 1;
-+      int num = atomic_inc_return_unchecked(instance) - 1;
-       int len = strlen(basename);
-       if (basename[len - 1] >= '0' && basename[len - 1] <= '9')
-diff -Naur backports-4.2.6-1.org/drivers/media/v4l2-core/v4l2-ioctl.c backports-4.2.6-1/drivers/media/v4l2-core/v4l2-ioctl.c
---- backports-4.2.6-1.org/drivers/media/v4l2-core/v4l2-ioctl.c 2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/drivers/media/v4l2-core/v4l2-ioctl.c     2016-01-27 12:26:21.269959657 +0100
-@@ -2341,7 +2341,8 @@
-                               struct file *file, void *fh, void *p);
-       } u;
-       void (*debug)(const void *arg, bool write_only);
--};
-+} __do_const;
-+typedef struct v4l2_ioctl_info __no_const v4l2_ioctl_info_no_const;
- /* This control needs a priority check */
- #define INFO_FL_PRIO  (1 << 0)
-@@ -2525,7 +2526,7 @@
-       struct video_device *vfd = video_devdata(file);
-       const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops;
-       bool write_only = false;
--      struct v4l2_ioctl_info default_info;
-+      v4l2_ioctl_info_no_const default_info;
-       const struct v4l2_ioctl_info *info;
-       void *fh = file->private_data;
-       struct v4l2_fh *vfh = NULL;
-@@ -2616,7 +2617,7 @@
-                               ret = -EINVAL;
-                               break;
-                       }
--                      *user_ptr = (void __user *)buf->m.planes;
-+                      *user_ptr = (void __force_user *)buf->m.planes;
-                       *kernel_ptr = (void **)&buf->m.planes;
-                       *array_size = sizeof(struct v4l2_plane) * buf->length;
-                       ret = 1;
-@@ -2633,7 +2634,7 @@
-                               ret = -EINVAL;
-                               break;
-                       }
--                      *user_ptr = (void __user *)edid->edid;
-+                      *user_ptr = (void __force_user *)edid->edid;
-                       *kernel_ptr = (void **)&edid->edid;
-                       *array_size = edid->blocks * 128;
-                       ret = 1;
-@@ -2651,7 +2652,7 @@
-                               ret = -EINVAL;
-                               break;
-                       }
--                      *user_ptr = (void __user *)ctrls->controls;
-+                      *user_ptr = (void __force_user *)ctrls->controls;
-                       *kernel_ptr = (void **)&ctrls->controls;
-                       *array_size = sizeof(struct v4l2_ext_control)
-                                   * ctrls->count;
-@@ -2752,7 +2753,7 @@
-       }
-       if (has_array_args) {
--              *kernel_ptr = (void __force *)user_ptr;
-+              *kernel_ptr = (void __force_kernel *)user_ptr;
-               if (copy_to_user(user_ptr, mbuf, array_size))
-                       err = -EFAULT;
-               goto out_array_args;
-diff -Naur backports-4.2.6-1.org/drivers/net/usb/sierra_net.c backports-4.2.6-1/drivers/net/usb/sierra_net.c
---- backports-4.2.6-1.org/drivers/net/usb/sierra_net.c 2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/usb/sierra_net.c     2016-01-27 12:26:21.283292990 +0100
-@@ -51,7 +51,7 @@
- /* atomic counter partially included in MAC address to make sure 2 devices
-  * do not end up with the same MAC - concept breaks in case of > 255 ifaces
-  */
--static        atomic_t iface_counter = ATOMIC_INIT(0);
-+static        atomic_unchecked_t iface_counter = ATOMIC_INIT(0);
- /*
-  * SYNC Timer Delay definition used to set the expiry time
-@@ -697,7 +697,7 @@
-       dev->net->netdev_ops = &sierra_net_device_ops;
-       /* change MAC addr to include, ifacenum, and to be unique */
--      dev->net->dev_addr[ETH_ALEN-2] = atomic_inc_return(&iface_counter);
-+      dev->net->dev_addr[ETH_ALEN-2] = atomic_inc_return_unchecked(&iface_counter);
-       dev->net->dev_addr[ETH_ALEN-1] = ifacenum;
-       /* we will have to manufacture ethernet headers, prepare template */
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/airo.c backports-4.2.6-1/drivers/net/wireless/airo.c
---- backports-4.2.6-1.org/drivers/net/wireless/airo.c  2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/airo.c      2016-01-27 12:26:21.286626323 +0100
-@@ -7846,7 +7846,7 @@
-       struct airo_info *ai = dev->ml_priv;
-       int  ridcode;
-         int  enabled;
--      static int (* writer)(struct airo_info *, u16 rid, const void *, int, int);
-+      int (* writer)(struct airo_info *, u16 rid, const void *, int, int);
-       unsigned char *iobuf;
-       /* Only super-user can write RIDs */
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/at76c50x-usb.c backports-4.2.6-1/drivers/net/wireless/at76c50x-usb.c
---- backports-4.2.6-1.org/drivers/net/wireless/at76c50x-usb.c  2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/at76c50x-usb.c      2016-01-27 12:26:21.286626323 +0100
-@@ -353,7 +353,7 @@
- }
- /* Convert timeout from the DFU status to jiffies */
--static inline unsigned long at76_get_timeout(struct dfu_status *s)
-+static inline unsigned long __intentional_overflow(-1) at76_get_timeout(struct dfu_status *s)
- {
-       return msecs_to_jiffies((s->poll_timeout[2] << 16)
-                               | (s->poll_timeout[1] << 8)
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/ce.c backports-4.2.6-1/drivers/net/wireless/ath/ath10k/ce.c
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/ce.c 2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath10k/ce.c     2016-01-27 12:26:21.286626323 +0100
-@@ -896,12 +896,12 @@
-       return 0;
- }
--static struct ath10k_ce_ring *
-+static struct ath10k_ce_ring * __intentional_overflow(-1)
- ath10k_ce_alloc_src_ring(struct ath10k *ar, unsigned int ce_id,
-                        const struct ce_attr *attr)
- {
-       struct ath10k_ce_ring *src_ring;
--      u32 nentries = attr->src_nentries;
-+      unsigned long nentries = attr->src_nentries;
-       dma_addr_t base_addr;
-       nentries = roundup_pow_of_two(nentries);
-@@ -968,7 +968,7 @@
-                         const struct ce_attr *attr)
- {
-       struct ath10k_ce_ring *dest_ring;
--      u32 nentries;
-+      unsigned long nentries;
-       dma_addr_t base_addr;
-       nentries = roundup_pow_of_two(attr->dest_nentries);
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htc.c backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htc.c
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htc.c        2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htc.c    2016-01-27 12:26:21.286626323 +0100
-@@ -841,7 +841,10 @@
- /* registered target arrival callback from the HIF layer */
- int ath10k_htc_init(struct ath10k *ar)
- {
--      struct ath10k_hif_cb htc_callbacks;
-+      static struct ath10k_hif_cb htc_callbacks = {
-+              .rx_completion = ath10k_htc_rx_completion_handler,
-+              .tx_completion = ath10k_htc_tx_completion_handler,
-+      };
-       struct ath10k_htc_ep *ep = NULL;
-       struct ath10k_htc *htc = &ar->htc;
-@@ -850,8 +853,6 @@
-       ath10k_htc_reset_endpoint_states(htc);
-       /* setup HIF layer callbacks */
--      htc_callbacks.rx_completion = ath10k_htc_rx_completion_handler;
--      htc_callbacks.tx_completion = ath10k_htc_tx_completion_handler;
-       htc->ar = ar;
-       /* Get HIF default pipe for HTC message exchange */
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htc.h backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htc.h
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htc.h        2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htc.h    2016-01-27 12:26:21.286626323 +0100
-@@ -270,13 +270,13 @@
- struct ath10k_htc_ops {
-       void (*target_send_suspend_complete)(struct ath10k *ar);
--};
-+} __no_const;
- struct ath10k_htc_ep_ops {
-       void (*ep_tx_complete)(struct ath10k *, struct sk_buff *);
-       void (*ep_rx_complete)(struct ath10k *, struct sk_buff *);
-       void (*ep_tx_credits)(struct ath10k *);
--};
-+} __no_const;
- /* service connection information */
- struct ath10k_htc_svc_conn_req {
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/ar9002_mac.c backports-4.2.6-1/drivers/net/wireless/ath/ath9k/ar9002_mac.c
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/ar9002_mac.c  2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath9k/ar9002_mac.c      2016-01-27 12:26:21.286626323 +0100
-@@ -220,8 +220,8 @@
-       ads->ds_txstatus6 = ads->ds_txstatus7 = 0;
-       ads->ds_txstatus8 = ads->ds_txstatus9 = 0;
--      ACCESS_ONCE(ads->ds_link) = i->link;
--      ACCESS_ONCE(ads->ds_data) = i->buf_addr[0];
-+      ACCESS_ONCE_RW(ads->ds_link) = i->link;
-+      ACCESS_ONCE_RW(ads->ds_data) = i->buf_addr[0];
-       ctl1 = i->buf_len[0] | (i->is_last ? 0 : AR_TxMore);
-       ctl6 = SM(i->keytype, AR_EncrType);
-@@ -235,26 +235,26 @@
-       if ((i->is_first || i->is_last) &&
-           i->aggr != AGGR_BUF_MIDDLE && i->aggr != AGGR_BUF_LAST) {
--              ACCESS_ONCE(ads->ds_ctl2) = set11nTries(i->rates, 0)
-+              ACCESS_ONCE_RW(ads->ds_ctl2) = set11nTries(i->rates, 0)
-                       | set11nTries(i->rates, 1)
-                       | set11nTries(i->rates, 2)
-                       | set11nTries(i->rates, 3)
-                       | (i->dur_update ? AR_DurUpdateEna : 0)
-                       | SM(0, AR_BurstDur);
--              ACCESS_ONCE(ads->ds_ctl3) = set11nRate(i->rates, 0)
-+              ACCESS_ONCE_RW(ads->ds_ctl3) = set11nRate(i->rates, 0)
-                       | set11nRate(i->rates, 1)
-                       | set11nRate(i->rates, 2)
-                       | set11nRate(i->rates, 3);
-       } else {
--              ACCESS_ONCE(ads->ds_ctl2) = 0;
--              ACCESS_ONCE(ads->ds_ctl3) = 0;
-+              ACCESS_ONCE_RW(ads->ds_ctl2) = 0;
-+              ACCESS_ONCE_RW(ads->ds_ctl3) = 0;
-       }
-       if (!i->is_first) {
--              ACCESS_ONCE(ads->ds_ctl0) = 0;
--              ACCESS_ONCE(ads->ds_ctl1) = ctl1;
--              ACCESS_ONCE(ads->ds_ctl6) = ctl6;
-+              ACCESS_ONCE_RW(ads->ds_ctl0) = 0;
-+              ACCESS_ONCE_RW(ads->ds_ctl1) = ctl1;
-+              ACCESS_ONCE_RW(ads->ds_ctl6) = ctl6;
-               return;
-       }
-@@ -279,7 +279,7 @@
-               break;
-       }
--      ACCESS_ONCE(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
-+      ACCESS_ONCE_RW(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
-               | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
-               | SM(i->txpower[0], AR_XmitPower0)
-               | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
-@@ -289,27 +289,27 @@
-               | (i->flags & ATH9K_TXDESC_RTSENA ? AR_RTSEnable :
-                  (i->flags & ATH9K_TXDESC_CTSENA ? AR_CTSEnable : 0));
--      ACCESS_ONCE(ads->ds_ctl1) = ctl1;
--      ACCESS_ONCE(ads->ds_ctl6) = ctl6;
-+      ACCESS_ONCE_RW(ads->ds_ctl1) = ctl1;
-+      ACCESS_ONCE_RW(ads->ds_ctl6) = ctl6;
-       if (i->aggr == AGGR_BUF_MIDDLE || i->aggr == AGGR_BUF_LAST)
-               return;
--      ACCESS_ONCE(ads->ds_ctl4) = set11nPktDurRTSCTS(i->rates, 0)
-+      ACCESS_ONCE_RW(ads->ds_ctl4) = set11nPktDurRTSCTS(i->rates, 0)
-               | set11nPktDurRTSCTS(i->rates, 1);
--      ACCESS_ONCE(ads->ds_ctl5) = set11nPktDurRTSCTS(i->rates, 2)
-+      ACCESS_ONCE_RW(ads->ds_ctl5) = set11nPktDurRTSCTS(i->rates, 2)
-               | set11nPktDurRTSCTS(i->rates, 3);
--      ACCESS_ONCE(ads->ds_ctl7) = set11nRateFlags(i->rates, 0)
-+      ACCESS_ONCE_RW(ads->ds_ctl7) = set11nRateFlags(i->rates, 0)
-               | set11nRateFlags(i->rates, 1)
-               | set11nRateFlags(i->rates, 2)
-               | set11nRateFlags(i->rates, 3)
-               | SM(i->rtscts_rate, AR_RTSCTSRate);
--      ACCESS_ONCE(ads->ds_ctl9) = SM(i->txpower[1], AR_XmitPower1);
--      ACCESS_ONCE(ads->ds_ctl10) = SM(i->txpower[2], AR_XmitPower2);
--      ACCESS_ONCE(ads->ds_ctl11) = SM(i->txpower[3], AR_XmitPower3);
-+      ACCESS_ONCE_RW(ads->ds_ctl9) = SM(i->txpower[1], AR_XmitPower1);
-+      ACCESS_ONCE_RW(ads->ds_ctl10) = SM(i->txpower[2], AR_XmitPower2);
-+      ACCESS_ONCE_RW(ads->ds_ctl11) = SM(i->txpower[3], AR_XmitPower3);
- }
- static int ar9002_hw_proc_txdesc(struct ath_hw *ah, void *ds,
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/ar9003_mac.c backports-4.2.6-1/drivers/net/wireless/ath/ath9k/ar9003_mac.c
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/ar9003_mac.c  2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath9k/ar9003_mac.c      2016-01-27 12:26:21.286626323 +0100
-@@ -39,47 +39,47 @@
-             (i->qcu << AR_TxQcuNum_S) | desc_len;
-       checksum += val;
--      ACCESS_ONCE(ads->info) = val;
-+      ACCESS_ONCE_RW(ads->info) = val;
-       checksum += i->link;
--      ACCESS_ONCE(ads->link) = i->link;
-+      ACCESS_ONCE_RW(ads->link) = i->link;
-       checksum += i->buf_addr[0];
--      ACCESS_ONCE(ads->data0) = i->buf_addr[0];
-+      ACCESS_ONCE_RW(ads->data0) = i->buf_addr[0];
-       checksum += i->buf_addr[1];
--      ACCESS_ONCE(ads->data1) = i->buf_addr[1];
-+      ACCESS_ONCE_RW(ads->data1) = i->buf_addr[1];
-       checksum += i->buf_addr[2];
--      ACCESS_ONCE(ads->data2) = i->buf_addr[2];
-+      ACCESS_ONCE_RW(ads->data2) = i->buf_addr[2];
-       checksum += i->buf_addr[3];
--      ACCESS_ONCE(ads->data3) = i->buf_addr[3];
-+      ACCESS_ONCE_RW(ads->data3) = i->buf_addr[3];
-       checksum += (val = (i->buf_len[0] << AR_BufLen_S) & AR_BufLen);
--      ACCESS_ONCE(ads->ctl3) = val;
-+      ACCESS_ONCE_RW(ads->ctl3) = val;
-       checksum += (val = (i->buf_len[1] << AR_BufLen_S) & AR_BufLen);
--      ACCESS_ONCE(ads->ctl5) = val;
-+      ACCESS_ONCE_RW(ads->ctl5) = val;
-       checksum += (val = (i->buf_len[2] << AR_BufLen_S) & AR_BufLen);
--      ACCESS_ONCE(ads->ctl7) = val;
-+      ACCESS_ONCE_RW(ads->ctl7) = val;
-       checksum += (val = (i->buf_len[3] << AR_BufLen_S) & AR_BufLen);
--      ACCESS_ONCE(ads->ctl9) = val;
-+      ACCESS_ONCE_RW(ads->ctl9) = val;
-       checksum = (u16) (((checksum & 0xffff) + (checksum >> 16)) & 0xffff);
--      ACCESS_ONCE(ads->ctl10) = checksum;
-+      ACCESS_ONCE_RW(ads->ctl10) = checksum;
-       if (i->is_first || i->is_last) {
--              ACCESS_ONCE(ads->ctl13) = set11nTries(i->rates, 0)
-+              ACCESS_ONCE_RW(ads->ctl13) = set11nTries(i->rates, 0)
-                       | set11nTries(i->rates, 1)
-                       | set11nTries(i->rates, 2)
-                       | set11nTries(i->rates, 3)
-                       | (i->dur_update ? AR_DurUpdateEna : 0)
-                       | SM(0, AR_BurstDur);
--              ACCESS_ONCE(ads->ctl14) = set11nRate(i->rates, 0)
-+              ACCESS_ONCE_RW(ads->ctl14) = set11nRate(i->rates, 0)
-                       | set11nRate(i->rates, 1)
-                       | set11nRate(i->rates, 2)
-                       | set11nRate(i->rates, 3);
-       } else {
--              ACCESS_ONCE(ads->ctl13) = 0;
--              ACCESS_ONCE(ads->ctl14) = 0;
-+              ACCESS_ONCE_RW(ads->ctl13) = 0;
-+              ACCESS_ONCE_RW(ads->ctl14) = 0;
-       }
-       ads->ctl20 = 0;
-@@ -89,17 +89,17 @@
-       ctl17 = SM(i->keytype, AR_EncrType);
-       if (!i->is_first) {
--              ACCESS_ONCE(ads->ctl11) = 0;
--              ACCESS_ONCE(ads->ctl12) = i->is_last ? 0 : AR_TxMore;
--              ACCESS_ONCE(ads->ctl15) = 0;
--              ACCESS_ONCE(ads->ctl16) = 0;
--              ACCESS_ONCE(ads->ctl17) = ctl17;
--              ACCESS_ONCE(ads->ctl18) = 0;
--              ACCESS_ONCE(ads->ctl19) = 0;
-+              ACCESS_ONCE_RW(ads->ctl11) = 0;
-+              ACCESS_ONCE_RW(ads->ctl12) = i->is_last ? 0 : AR_TxMore;
-+              ACCESS_ONCE_RW(ads->ctl15) = 0;
-+              ACCESS_ONCE_RW(ads->ctl16) = 0;
-+              ACCESS_ONCE_RW(ads->ctl17) = ctl17;
-+              ACCESS_ONCE_RW(ads->ctl18) = 0;
-+              ACCESS_ONCE_RW(ads->ctl19) = 0;
-               return;
-       }
--      ACCESS_ONCE(ads->ctl11) = (i->pkt_len & AR_FrameLen)
-+      ACCESS_ONCE_RW(ads->ctl11) = (i->pkt_len & AR_FrameLen)
-               | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
-               | SM(i->txpower[0], AR_XmitPower0)
-               | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
-@@ -135,26 +135,26 @@
-       val = (i->flags & ATH9K_TXDESC_PAPRD) >> ATH9K_TXDESC_PAPRD_S;
-       ctl12 |= SM(val, AR_PAPRDChainMask);
--      ACCESS_ONCE(ads->ctl12) = ctl12;
--      ACCESS_ONCE(ads->ctl17) = ctl17;
-+      ACCESS_ONCE_RW(ads->ctl12) = ctl12;
-+      ACCESS_ONCE_RW(ads->ctl17) = ctl17;
--      ACCESS_ONCE(ads->ctl15) = set11nPktDurRTSCTS(i->rates, 0)
-+      ACCESS_ONCE_RW(ads->ctl15) = set11nPktDurRTSCTS(i->rates, 0)
-               | set11nPktDurRTSCTS(i->rates, 1);
--      ACCESS_ONCE(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2)
-+      ACCESS_ONCE_RW(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2)
-               | set11nPktDurRTSCTS(i->rates, 3);
--      ACCESS_ONCE(ads->ctl18) = set11nRateFlags(i->rates, 0)
-+      ACCESS_ONCE_RW(ads->ctl18) = set11nRateFlags(i->rates, 0)
-               | set11nRateFlags(i->rates, 1)
-               | set11nRateFlags(i->rates, 2)
-               | set11nRateFlags(i->rates, 3)
-               | SM(i->rtscts_rate, AR_RTSCTSRate);
--      ACCESS_ONCE(ads->ctl19) = AR_Not_Sounding;
-+      ACCESS_ONCE_RW(ads->ctl19) = AR_Not_Sounding;
--      ACCESS_ONCE(ads->ctl20) = SM(i->txpower[1], AR_XmitPower1);
--      ACCESS_ONCE(ads->ctl21) = SM(i->txpower[2], AR_XmitPower2);
--      ACCESS_ONCE(ads->ctl22) = SM(i->txpower[3], AR_XmitPower3);
-+      ACCESS_ONCE_RW(ads->ctl20) = SM(i->txpower[1], AR_XmitPower1);
-+      ACCESS_ONCE_RW(ads->ctl21) = SM(i->txpower[2], AR_XmitPower2);
-+      ACCESS_ONCE_RW(ads->ctl22) = SM(i->txpower[3], AR_XmitPower3);
- }
- static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/hw.h backports-4.2.6-1/drivers/net/wireless/ath/ath9k/hw.h
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/hw.h  2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath9k/hw.h      2016-01-27 12:33:44.649931973 +0100
-@@ -671,7 +671,7 @@
- #ifdef CPTCFG_ATH9K_BTCOEX_SUPPORT
-       bool (*is_aic_enabled)(struct ath_hw *ah);
- #endif /* CPTCFG_ATH9K_BTCOEX_SUPPORT */
--};
-+} __no_const;
- /**
-  * struct ath_spec_scan - parameters for Atheros spectral scan
-@@ -747,7 +747,7 @@
- #ifdef CPTCFG_ATH9K_BTCOEX_SUPPORT
-       void (*set_bt_ant_diversity)(struct ath_hw *hw, bool enable);
- #endif
--};
-+} __no_const;
- struct ath_nf_limits {
-       s16 max;
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/Kconfig backports-4.2.6-1/drivers/net/wireless/ath/ath9k/Kconfig
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/Kconfig       2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath9k/Kconfig   2016-01-27 12:34:48.923262299 +0100
-@@ -5,7 +5,6 @@
-       tristate
-       depends on m
-       select ATH_COMMON
--      depends on DEBUG_FS
-       depends on RELAY
- config ATH9K_DFS_DEBUGFS
-       def_bool y
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/main.c backports-4.2.6-1/drivers/net/wireless/ath/ath9k/main.c
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath9k/main.c        2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath9k/main.c    2016-01-27 12:26:21.289959656 +0100
-@@ -2574,16 +2574,18 @@
-       if (!ath9k_is_chanctx_enabled())
-               return;
--      ath9k_ops.hw_scan                  = ath9k_hw_scan;
--      ath9k_ops.cancel_hw_scan           = ath9k_cancel_hw_scan;
--      ath9k_ops.remain_on_channel        = ath9k_remain_on_channel;
--      ath9k_ops.cancel_remain_on_channel = ath9k_cancel_remain_on_channel;
--      ath9k_ops.add_chanctx              = ath9k_add_chanctx;
--      ath9k_ops.remove_chanctx           = ath9k_remove_chanctx;
--      ath9k_ops.change_chanctx           = ath9k_change_chanctx;
--      ath9k_ops.assign_vif_chanctx       = ath9k_assign_vif_chanctx;
--      ath9k_ops.unassign_vif_chanctx     = ath9k_unassign_vif_chanctx;
--      ath9k_ops.mgd_prepare_tx           = ath9k_mgd_prepare_tx;
-+      pax_open_kernel();
-+      *(void **)&ath9k_ops.hw_scan                  = ath9k_hw_scan;
-+      *(void **)&ath9k_ops.cancel_hw_scan           = ath9k_cancel_hw_scan;
-+      *(void **)&ath9k_ops.remain_on_channel        = ath9k_remain_on_channel;
-+      *(void **)&ath9k_ops.cancel_remain_on_channel = ath9k_cancel_remain_on_channel;
-+      *(void **)&ath9k_ops.add_chanctx              = ath9k_add_chanctx;
-+      *(void **)&ath9k_ops.remove_chanctx           = ath9k_remove_chanctx;
-+      *(void **)&ath9k_ops.change_chanctx           = ath9k_change_chanctx;
-+      *(void **)&ath9k_ops.assign_vif_chanctx       = ath9k_assign_vif_chanctx;
-+      *(void **)&ath9k_ops.unassign_vif_chanctx     = ath9k_unassign_vif_chanctx;
-+      *(void **)&ath9k_ops.mgd_prepare_tx           = ath9k_mgd_prepare_tx;
-+      pax_close_kernel();
- }
- #endif
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/b43/phy_lp.c backports-4.2.6-1/drivers/net/wireless/b43/phy_lp.c
---- backports-4.2.6-1.org/drivers/net/wireless/b43/phy_lp.c    2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/b43/phy_lp.c        2016-01-27 12:26:21.289959656 +0100
-@@ -2502,7 +2502,7 @@
- {
-       struct ssb_bus *bus = dev->dev->sdev->bus;
--      static const struct b206x_channel *chandata = NULL;
-+      const struct b206x_channel *chandata = NULL;
-       u32 crystal_freq = bus->chipco.pmu.crystalfreq * 1000;
-       u32 freqref, vco_freq, val1, val2, val3, timeout, timeoutref, count;
-       u16 old_comm15, scale;
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/iwlegacy/3945-mac.c backports-4.2.6-1/drivers/net/wireless/iwlegacy/3945-mac.c
---- backports-4.2.6-1.org/drivers/net/wireless/iwlegacy/3945-mac.c     2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/iwlegacy/3945-mac.c 2016-01-27 12:26:21.289959656 +0100
-@@ -3633,7 +3633,9 @@
-        */
-       if (il3945_mod_params.disable_hw_scan) {
-               D_INFO("Disabling hw_scan\n");
--              il3945_mac_ops.hw_scan = NULL;
-+              pax_open_kernel();
-+              *(void **)&il3945_mac_ops.hw_scan = NULL;
-+              pax_close_kernel();
-       }
-       D_INFO("*** LOAD DRIVER ***\n");
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/iwlwifi/dvm/debugfs.c backports-4.2.6-1/drivers/net/wireless/iwlwifi/dvm/debugfs.c
---- backports-4.2.6-1.org/drivers/net/wireless/iwlwifi/dvm/debugfs.c   2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/iwlwifi/dvm/debugfs.c       2016-01-27 12:26:21.289959656 +0100
-@@ -188,7 +188,7 @@
- {
-       struct iwl_priv *priv = file->private_data;
-       char buf[64];
--      int buf_size;
-+      size_t buf_size;
-       u32 offset, len;
-       memset(buf, 0, sizeof(buf));
-@@ -458,7 +458,7 @@
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       u32 reset_flag;
-       memset(buf, 0, sizeof(buf));
-@@ -539,7 +539,7 @@
- {
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       int ht40;
-       memset(buf, 0, sizeof(buf));
-@@ -591,7 +591,7 @@
- {
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       int value;
-       memset(buf, 0, sizeof(buf));
-@@ -683,10 +683,10 @@
- DEBUGFS_READ_WRITE_FILE_OPS(sleep_level_override);
- DEBUGFS_READ_FILE_OPS(current_sleep_command);
--static const char *fmt_value = "  %-30s %10u\n";
--static const char *fmt_hex   = "  %-30s       0x%02X\n";
--static const char *fmt_table = "  %-30s %10u  %10u  %10u  %10u\n";
--static const char *fmt_header =
-+static const char fmt_value[] = "  %-30s %10u\n";
-+static const char fmt_hex[]   = "  %-30s       0x%02X\n";
-+static const char fmt_table[] = "  %-30s %10u  %10u  %10u  %10u\n";
-+static const char fmt_header[] =
-       "%-32s    current  cumulative       delta         max\n";
- static int iwl_statistics_flag(struct iwl_priv *priv, char *buf, int bufsz)
-@@ -1856,7 +1856,7 @@
- {
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       int clear;
-       memset(buf, 0, sizeof(buf));
-@@ -1901,7 +1901,7 @@
- {
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       int trace;
-       memset(buf, 0, sizeof(buf));
-@@ -1972,7 +1972,7 @@
- {
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       int missed;
-       memset(buf, 0, sizeof(buf));
-@@ -2013,7 +2013,7 @@
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       int plcp;
-       memset(buf, 0, sizeof(buf));
-@@ -2073,7 +2073,7 @@
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       int flush;
-       memset(buf, 0, sizeof(buf));
-@@ -2163,7 +2163,7 @@
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       int rts;
-       if (!priv->cfg->ht_params)
-@@ -2204,7 +2204,7 @@
- {
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       memset(buf, 0, sizeof(buf));
-       buf_size = min(count, sizeof(buf) -  1);
-@@ -2238,7 +2238,7 @@
-       struct iwl_priv *priv = file->private_data;
-       u32 event_log_flag;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       /* check that the interface is up */
-       if (!iwl_is_ready(priv))
-@@ -2292,7 +2292,7 @@
-       struct iwl_priv *priv = file->private_data;
-       char buf[8];
-       u32 calib_disabled;
--      int buf_size;
-+      size_t buf_size;
-       memset(buf, 0, sizeof(buf));
-       buf_size = min(count, sizeof(buf) - 1);
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/iwlwifi/pcie/trans.c backports-4.2.6-1/drivers/net/wireless/iwlwifi/pcie/trans.c
---- backports-4.2.6-1.org/drivers/net/wireless/iwlwifi/pcie/trans.c    2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/iwlwifi/pcie/trans.c        2016-01-27 12:26:21.289959656 +0100
-@@ -1950,7 +1950,7 @@
-       struct isr_statistics *isr_stats = &trans_pcie->isr_stats;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       u32 reset_flag;
-       memset(buf, 0, sizeof(buf));
-@@ -1971,7 +1971,7 @@
- {
-       struct iwl_trans *trans = file->private_data;
-       char buf[8];
--      int buf_size;
-+      size_t buf_size;
-       int csr;
-       memset(buf, 0, sizeof(buf));
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/mac80211_hwsim.c backports-4.2.6-1/drivers/net/wireless/mac80211_hwsim.c
---- backports-4.2.6-1.org/drivers/net/wireless/mac80211_hwsim.c        2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/mac80211_hwsim.c    2016-01-27 12:26:21.289959656 +0100
-@@ -3150,20 +3150,20 @@
-       if (channels < 1)
-               return -EINVAL;
--      mac80211_hwsim_mchan_ops = mac80211_hwsim_ops;
--      mac80211_hwsim_mchan_ops.hw_scan = mac80211_hwsim_hw_scan;
--      mac80211_hwsim_mchan_ops.cancel_hw_scan = mac80211_hwsim_cancel_hw_scan;
--      mac80211_hwsim_mchan_ops.sw_scan_start = NULL;
--      mac80211_hwsim_mchan_ops.sw_scan_complete = NULL;
--      mac80211_hwsim_mchan_ops.remain_on_channel = mac80211_hwsim_roc;
--      mac80211_hwsim_mchan_ops.cancel_remain_on_channel = mac80211_hwsim_croc;
--      mac80211_hwsim_mchan_ops.add_chanctx = mac80211_hwsim_add_chanctx;
--      mac80211_hwsim_mchan_ops.remove_chanctx = mac80211_hwsim_remove_chanctx;
--      mac80211_hwsim_mchan_ops.change_chanctx = mac80211_hwsim_change_chanctx;
--      mac80211_hwsim_mchan_ops.assign_vif_chanctx =
--              mac80211_hwsim_assign_vif_chanctx;
--      mac80211_hwsim_mchan_ops.unassign_vif_chanctx =
--              mac80211_hwsim_unassign_vif_chanctx;
-+      pax_open_kernel();
-+      memcpy((void *)&mac80211_hwsim_mchan_ops, &mac80211_hwsim_ops, sizeof mac80211_hwsim_mchan_ops);
-+      *(void **)&mac80211_hwsim_mchan_ops.hw_scan = mac80211_hwsim_hw_scan;
-+      *(void **)&mac80211_hwsim_mchan_ops.cancel_hw_scan = mac80211_hwsim_cancel_hw_scan;
-+      *(void **)&mac80211_hwsim_mchan_ops.sw_scan_start = NULL;
-+      *(void **)&mac80211_hwsim_mchan_ops.sw_scan_complete = NULL;
-+      *(void **)&mac80211_hwsim_mchan_ops.remain_on_channel = mac80211_hwsim_roc;
-+      *(void **)&mac80211_hwsim_mchan_ops.cancel_remain_on_channel = mac80211_hwsim_croc;
-+      *(void **)&mac80211_hwsim_mchan_ops.add_chanctx = mac80211_hwsim_add_chanctx;
-+      *(void **)&mac80211_hwsim_mchan_ops.remove_chanctx = mac80211_hwsim_remove_chanctx;
-+      *(void **)&mac80211_hwsim_mchan_ops.change_chanctx = mac80211_hwsim_change_chanctx;
-+      *(void **)&mac80211_hwsim_mchan_ops.assign_vif_chanctx = mac80211_hwsim_assign_vif_chanctx;
-+      *(void **)&mac80211_hwsim_mchan_ops.unassign_vif_chanctx = mac80211_hwsim_unassign_vif_chanctx;
-+      pax_close_kernel();
-       spin_lock_init(&hwsim_radio_lock);
-       INIT_LIST_HEAD(&hwsim_radios);
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/rndis_wlan.c backports-4.2.6-1/drivers/net/wireless/rndis_wlan.c
---- backports-4.2.6-1.org/drivers/net/wireless/rndis_wlan.c    2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/rndis_wlan.c        2016-01-27 12:26:21.293292990 +0100
-@@ -1236,7 +1236,7 @@
-       netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold);
--      if (rts_threshold < 0 || rts_threshold > 2347)
-+      if (rts_threshold > 2347)
-               rts_threshold = 2347;
-       tmp = cpu_to_le32(rts_threshold);
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/rt2x00/rt2x00.h backports-4.2.6-1/drivers/net/wireless/rt2x00/rt2x00.h
---- backports-4.2.6-1.org/drivers/net/wireless/rt2x00/rt2x00.h 2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/rt2x00/rt2x00.h     2016-01-27 12:26:21.293292990 +0100
-@@ -375,7 +375,7 @@
-        * for hardware which doesn't support hardware
-        * sequence counting.
-        */
--      atomic_t seqno;
-+      atomic_unchecked_t seqno;
- };
- static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif)
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/rt2x00/rt2x00queue.c backports-4.2.6-1/drivers/net/wireless/rt2x00/rt2x00queue.c
---- backports-4.2.6-1.org/drivers/net/wireless/rt2x00/rt2x00queue.c    2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/rt2x00/rt2x00queue.c        2016-01-27 12:26:21.293292990 +0100
-@@ -224,9 +224,9 @@
-        * sequence counter given by mac80211.
-        */
-       if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags))
--              seqno = atomic_add_return(0x10, &intf->seqno);
-+              seqno = atomic_add_return_unchecked(0x10, &intf->seqno);
-       else
--              seqno = atomic_read(&intf->seqno);
-+              seqno = atomic_read_unchecked(&intf->seqno);
-       hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG);
-       hdr->seq_ctrl |= cpu_to_le16(seqno);
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ti/wl1251/sdio.c backports-4.2.6-1/drivers/net/wireless/ti/wl1251/sdio.c
---- backports-4.2.6-1.org/drivers/net/wireless/ti/wl1251/sdio.c        2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ti/wl1251/sdio.c    2016-01-27 12:26:21.293292990 +0100
-@@ -282,13 +282,17 @@
-               irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING);
--              wl1251_sdio_ops.enable_irq = wl1251_enable_line_irq;
--              wl1251_sdio_ops.disable_irq = wl1251_disable_line_irq;
-+              pax_open_kernel();
-+              *(void **)&wl1251_sdio_ops.enable_irq = wl1251_enable_line_irq;
-+              *(void **)&wl1251_sdio_ops.disable_irq = wl1251_disable_line_irq;
-+              pax_close_kernel();
-               wl1251_info("using dedicated interrupt line");
-       } else {
--              wl1251_sdio_ops.enable_irq = wl1251_sdio_enable_irq;
--              wl1251_sdio_ops.disable_irq = wl1251_sdio_disable_irq;
-+              pax_open_kernel();
-+              *(void **)&wl1251_sdio_ops.enable_irq = wl1251_sdio_enable_irq;
-+              *(void **)&wl1251_sdio_ops.disable_irq = wl1251_sdio_disable_irq;
-+              pax_close_kernel();
-               wl1251_info("using SDIO interrupt");
-       }
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ti/wl12xx/main.c backports-4.2.6-1/drivers/net/wireless/ti/wl12xx/main.c
---- backports-4.2.6-1.org/drivers/net/wireless/ti/wl12xx/main.c        2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ti/wl12xx/main.c    2016-01-27 12:26:21.293292990 +0100
-@@ -655,7 +655,9 @@
-                      sizeof(wl->conf.mem));
-               /* read data preparation is only needed by wl127x */
--              wl->ops->prepare_read = wl127x_prepare_read;
-+              pax_open_kernel();
-+              *(void **)&wl->ops->prepare_read = wl127x_prepare_read;
-+              pax_close_kernel();
-               wlcore_set_min_fw_ver(wl, WL127X_CHIP_VER,
-                             WL127X_IFTYPE_SR_VER,  WL127X_MAJOR_SR_VER,
-@@ -680,7 +682,9 @@
-                      sizeof(wl->conf.mem));
-               /* read data preparation is only needed by wl127x */
--              wl->ops->prepare_read = wl127x_prepare_read;
-+              pax_open_kernel();
-+              *(void **)&wl->ops->prepare_read = wl127x_prepare_read;
-+              pax_close_kernel();
-               wlcore_set_min_fw_ver(wl, WL127X_CHIP_VER,
-                             WL127X_IFTYPE_SR_VER,  WL127X_MAJOR_SR_VER,
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ti/wl18xx/main.c backports-4.2.6-1/drivers/net/wireless/ti/wl18xx/main.c
---- backports-4.2.6-1.org/drivers/net/wireless/ti/wl18xx/main.c        2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ti/wl18xx/main.c    2016-01-27 12:26:21.293292990 +0100
-@@ -1952,8 +1952,10 @@
-       }
-       if (!checksum_param) {
--              wl18xx_ops.set_rx_csum = NULL;
--              wl18xx_ops.init_vif = NULL;
-+              pax_open_kernel();
-+              *(void **)&wl18xx_ops.set_rx_csum = NULL;
-+              *(void **)&wl18xx_ops.init_vif = NULL;
-+              pax_close_kernel();
-       }
-       /* Enable 11a Band only if we have 5G antennas */
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/zd1211rw/zd_usb.c backports-4.2.6-1/drivers/net/wireless/zd1211rw/zd_usb.c
---- backports-4.2.6-1.org/drivers/net/wireless/zd1211rw/zd_usb.c       2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/zd1211rw/zd_usb.c   2016-01-27 12:26:21.293292990 +0100
-@@ -385,7 +385,7 @@
- {
-       struct zd_usb *usb = urb->context;
-       struct zd_usb_interrupt *intr = &usb->intr;
--      int len;
-+      unsigned int len;
-       u16 int_num;
-       ZD_ASSERT(in_interrupt());
-diff -Naur backports-4.2.6-1.org/drivers/nfc/nfcwilink.c backports-4.2.6-1/drivers/nfc/nfcwilink.c
---- backports-4.2.6-1.org/drivers/nfc/nfcwilink.c      2015-11-15 22:19:39.000000000 +0100
-+++ backports-4.2.6-1/drivers/nfc/nfcwilink.c  2016-01-27 12:26:21.293292990 +0100
-@@ -497,7 +497,7 @@
- static int nfcwilink_probe(struct platform_device *pdev)
- {
--      static struct nfcwilink *drv;
-+      struct nfcwilink *drv;
-       int rc;
-       __u32 protocols;
-diff -Naur backports-4.2.6-1.org/include/linux/gracl_compat.h backports-4.2.6-1/include/linux/gracl_compat.h
---- backports-4.2.6-1.org/include/linux/gracl_compat.h 1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/linux/gracl_compat.h     2016-01-27 12:26:26.289959354 +0100
-@@ -0,0 +1,156 @@
-+#ifndef GR_ACL_COMPAT_H
-+#define GR_ACL_COMPAT_H
-+
-+#include <linux/resource.h>
-+#include <asm/resource.h>
-+
-+struct sprole_pw_compat {
-+      compat_uptr_t rolename;
-+      unsigned char salt[GR_SALT_LEN];
-+      unsigned char sum[GR_SHA_LEN];
-+};
-+
-+struct gr_hash_struct_compat {
-+      compat_uptr_t table;
-+      compat_uptr_t nametable;
-+      compat_uptr_t first;
-+      __u32 table_size;
-+      __u32 used_size;
-+      int type;
-+};
-+
-+struct acl_subject_label_compat {
-+      compat_uptr_t filename;
-+      compat_u64 inode;
-+      __u32 device;
-+      __u32 mode;
-+      kernel_cap_t cap_mask;
-+      kernel_cap_t cap_lower;
-+      kernel_cap_t cap_invert_audit;
-+
-+      struct compat_rlimit res[GR_NLIMITS];
-+      __u32 resmask;
-+
-+      __u8 user_trans_type;
-+      __u8 group_trans_type;
-+      compat_uptr_t user_transitions;
-+      compat_uptr_t group_transitions;
-+      __u16 user_trans_num;
-+      __u16 group_trans_num;
-+
-+      __u32 sock_families[2];
-+      __u32 ip_proto[8];
-+      __u32 ip_type;
-+      compat_uptr_t ips;
-+      __u32 ip_num;
-+      __u32 inaddr_any_override;
-+
-+      __u32 crashes;
-+      compat_ulong_t expires;
-+
-+      compat_uptr_t parent_subject;
-+      compat_uptr_t hash;
-+      compat_uptr_t prev;
-+      compat_uptr_t next;
-+
-+      compat_uptr_t obj_hash;
-+      __u32 obj_hash_size;
-+      __u16 pax_flags;
-+};
-+
-+struct role_allowed_ip_compat {
-+      __u32 addr;
-+      __u32 netmask;
-+
-+      compat_uptr_t prev;
-+      compat_uptr_t next;
-+};
-+
-+struct role_transition_compat {
-+      compat_uptr_t rolename;
-+
-+      compat_uptr_t prev;
-+      compat_uptr_t next;
-+};
-+
-+struct acl_role_label_compat {
-+      compat_uptr_t rolename;
-+      uid_t uidgid;
-+      __u16 roletype;
-+
-+      __u16 auth_attempts;
-+      compat_ulong_t expires;
-+
-+      compat_uptr_t root_label;
-+      compat_uptr_t hash;
-+
-+      compat_uptr_t prev;
-+      compat_uptr_t next;
-+
-+      compat_uptr_t transitions;
-+      compat_uptr_t allowed_ips;
-+      compat_uptr_t domain_children;
-+      __u16 domain_child_num;
-+
-+      umode_t umask;
-+
-+      compat_uptr_t subj_hash;
-+      __u32 subj_hash_size;
-+};
-+
-+struct user_acl_role_db_compat {
-+      compat_uptr_t r_table;
-+      __u32 num_pointers;
-+      __u32 num_roles;
-+      __u32 num_domain_children;
-+      __u32 num_subjects;
-+      __u32 num_objects;
-+};
-+
-+struct acl_object_label_compat {
-+      compat_uptr_t filename;
-+      compat_u64 inode;
-+      __u32 device;
-+      __u32 mode;
-+
-+      compat_uptr_t nested;
-+      compat_uptr_t globbed;
-+
-+      compat_uptr_t prev;
-+      compat_uptr_t next;
-+};
-+
-+struct acl_ip_label_compat {
-+      compat_uptr_t iface;
-+      __u32 addr;
-+      __u32 netmask;
-+      __u16 low, high;
-+      __u8 mode;
-+      __u32 type;
-+      __u32 proto[8];
-+
-+      compat_uptr_t prev;
-+      compat_uptr_t next;
-+};
-+
-+struct gr_arg_compat {
-+      struct user_acl_role_db_compat role_db;
-+      unsigned char pw[GR_PW_LEN];
-+      unsigned char salt[GR_SALT_LEN];
-+      unsigned char sum[GR_SHA_LEN];
-+      unsigned char sp_role[GR_SPROLE_LEN];
-+      compat_uptr_t sprole_pws;
-+      __u32 segv_device;
-+      compat_u64 segv_inode;
-+      uid_t segv_uid;
-+      __u16 num_sprole_pws;
-+      __u16 mode;
-+};
-+
-+struct gr_arg_wrapper_compat {
-+      compat_uptr_t arg;
-+      __u32 version;
-+      __u32 size;
-+};
-+
-+#endif
-diff -Naur backports-4.2.6-1.org/include/linux/gracl.h backports-4.2.6-1/include/linux/gracl.h
---- backports-4.2.6-1.org/include/linux/gracl.h        1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/linux/gracl.h    2016-01-27 12:26:26.289959354 +0100
-@@ -0,0 +1,342 @@
-+#ifndef GR_ACL_H
-+#define GR_ACL_H
-+
-+#include <linux/grdefs.h>
-+#include <linux/resource.h>
-+#include <linux/capability.h>
-+#include <linux/dcache.h>
-+#include <asm/resource.h>
-+
-+/* Major status information */
-+
-+#define GR_VERSION  "grsecurity 3.1"
-+#define GRSECURITY_VERSION 0x3100
-+
-+enum {
-+      GR_SHUTDOWN = 0,
-+      GR_ENABLE = 1,
-+      GR_SPROLE = 2,
-+      GR_OLDRELOAD = 3,
-+      GR_SEGVMOD = 4,
-+      GR_STATUS = 5,
-+      GR_UNSPROLE = 6,
-+      GR_PASSSET = 7,
-+      GR_SPROLEPAM = 8,
-+      GR_RELOAD = 9,
-+};
-+
-+/* Password setup definitions
-+ * kernel/grhash.c */
-+enum {
-+      GR_PW_LEN = 128,
-+      GR_SALT_LEN = 16,
-+      GR_SHA_LEN = 32,
-+};
-+
-+enum {
-+      GR_SPROLE_LEN = 64,
-+};
-+
-+enum {
-+      GR_NO_GLOB = 0,
-+      GR_REG_GLOB,
-+      GR_CREATE_GLOB
-+};
-+
-+#define GR_NLIMITS 32
-+
-+/* Begin Data Structures */
-+
-+struct sprole_pw {
-+      unsigned char *rolename;
-+      unsigned char salt[GR_SALT_LEN];
-+      unsigned char sum[GR_SHA_LEN];  /* 256-bit SHA hash of the password */
-+};
-+
-+struct name_entry {
-+      __u32 key;
-+      u64 inode;
-+      dev_t device;
-+      char *name;
-+      __u16 len;
-+      __u8 deleted;
-+      struct name_entry *prev;
-+      struct name_entry *next;
-+};
-+
-+struct inodev_entry {
-+      struct name_entry *nentry;
-+      struct inodev_entry *prev;
-+      struct inodev_entry *next;
-+};
-+
-+struct acl_role_db {
-+      struct acl_role_label **r_hash;
-+      __u32 r_size;
-+};
-+
-+struct inodev_db {
-+      struct inodev_entry **i_hash;
-+      __u32 i_size;
-+};
-+
-+struct name_db {
-+      struct name_entry **n_hash;
-+      __u32 n_size;
-+};
-+
-+struct crash_uid {
-+      uid_t uid;
-+      unsigned long expires;
-+};
-+
-+struct gr_hash_struct {
-+      void **table;
-+      void **nametable;
-+      void *first;
-+      __u32 table_size;
-+      __u32 used_size;
-+      int type;
-+};
-+
-+/* Userspace Grsecurity ACL data structures */
-+
-+struct acl_subject_label {
-+      char *filename;
-+      u64 inode;
-+      dev_t device;
-+      __u32 mode;
-+      kernel_cap_t cap_mask;
-+      kernel_cap_t cap_lower;
-+      kernel_cap_t cap_invert_audit;
-+
-+      struct rlimit res[GR_NLIMITS];
-+      __u32 resmask;
-+
-+      __u8 user_trans_type;
-+      __u8 group_trans_type;
-+      uid_t *user_transitions;
-+      gid_t *group_transitions;
-+      __u16 user_trans_num;
-+      __u16 group_trans_num;
-+
-+      __u32 sock_families[2];
-+      __u32 ip_proto[8];
-+      __u32 ip_type;
-+      struct acl_ip_label **ips;
-+      __u32 ip_num;
-+      __u32 inaddr_any_override;
-+
-+      __u32 crashes;
-+      unsigned long expires;
-+
-+      struct acl_subject_label *parent_subject;
-+      struct gr_hash_struct *hash;
-+      struct acl_subject_label *prev;
-+      struct acl_subject_label *next;
-+
-+      struct acl_object_label **obj_hash;
-+      __u32 obj_hash_size;
-+      __u16 pax_flags;
-+};
-+
-+struct role_allowed_ip {
-+      __u32 addr;
-+      __u32 netmask;
-+
-+      struct role_allowed_ip *prev;
-+      struct role_allowed_ip *next;
-+};
-+
-+struct role_transition {
-+      char *rolename;
-+
-+      struct role_transition *prev;
-+      struct role_transition *next;
-+};
-+
-+struct acl_role_label {
-+      char *rolename;
-+      uid_t uidgid;
-+      __u16 roletype;
-+
-+      __u16 auth_attempts;
-+      unsigned long expires;
-+
-+      struct acl_subject_label *root_label;
-+      struct gr_hash_struct *hash;
-+
-+      struct acl_role_label *prev;
-+      struct acl_role_label *next;
-+
-+      struct role_transition *transitions;
-+      struct role_allowed_ip *allowed_ips;
-+      uid_t *domain_children;
-+      __u16 domain_child_num;
-+
-+      umode_t umask;
-+
-+      struct acl_subject_label **subj_hash;
-+      __u32 subj_hash_size;
-+};
-+
-+struct user_acl_role_db {
-+      struct acl_role_label **r_table;
-+      __u32 num_pointers;             /* Number of allocations to track */
-+      __u32 num_roles;                /* Number of roles */
-+      __u32 num_domain_children;      /* Number of domain children */
-+      __u32 num_subjects;             /* Number of subjects */
-+      __u32 num_objects;              /* Number of objects */
-+};
-+
-+struct acl_object_label {
-+      char *filename;
-+      u64 inode;
-+      dev_t device;
-+      __u32 mode;
-+
-+      struct acl_subject_label *nested;
-+      struct acl_object_label *globbed;
-+
-+      /* next two structures not used */
-+
-+      struct acl_object_label *prev;
-+      struct acl_object_label *next;
-+};
-+
-+struct acl_ip_label {
-+      char *iface;
-+      __u32 addr;
-+      __u32 netmask;
-+      __u16 low, high;
-+      __u8 mode;
-+      __u32 type;
-+      __u32 proto[8];
-+
-+      /* next two structures not used */
-+
-+      struct acl_ip_label *prev;
-+      struct acl_ip_label *next;
-+};
-+
-+struct gr_arg {
-+      struct user_acl_role_db role_db;
-+      unsigned char pw[GR_PW_LEN];
-+      unsigned char salt[GR_SALT_LEN];
-+      unsigned char sum[GR_SHA_LEN];
-+      unsigned char sp_role[GR_SPROLE_LEN];
-+      struct sprole_pw *sprole_pws;
-+      dev_t segv_device;
-+      u64 segv_inode;
-+      uid_t segv_uid;
-+      __u16 num_sprole_pws;
-+      __u16 mode;
-+};
-+
-+struct gr_arg_wrapper {
-+      struct gr_arg *arg;
-+      __u32 version;
-+      __u32 size;
-+};
-+
-+struct subject_map {
-+      struct acl_subject_label *user;
-+      struct acl_subject_label *kernel;
-+      struct subject_map *prev;
-+      struct subject_map *next;
-+};
-+
-+struct acl_subj_map_db {
-+      struct subject_map **s_hash;
-+      __u32 s_size;
-+};
-+
-+struct gr_policy_state {
-+      struct sprole_pw **acl_special_roles;
-+      __u16 num_sprole_pws;
-+      struct acl_role_label *kernel_role;
-+      struct acl_role_label *role_list;
-+      struct acl_role_label *default_role;
-+      struct acl_role_db acl_role_set;
-+      struct acl_subj_map_db subj_map_set;
-+      struct name_db name_set;
-+      struct inodev_db inodev_set;
-+};
-+
-+struct gr_alloc_state {
-+      unsigned long alloc_stack_next;
-+      unsigned long alloc_stack_size;
-+      void **alloc_stack;
-+};
-+
-+struct gr_reload_state {
-+      struct gr_policy_state oldpolicy;
-+      struct gr_alloc_state oldalloc;
-+      struct gr_policy_state newpolicy;
-+      struct gr_alloc_state newalloc;
-+      struct gr_policy_state *oldpolicy_ptr;
-+      struct gr_alloc_state *oldalloc_ptr;
-+      unsigned char oldmode;
-+};
-+
-+/* End Data Structures Section */
-+
-+/* Hash functions generated by empirical testing by Brad Spengler
-+   Makes good use of the low bits of the inode.  Generally 0-1 times
-+   in loop for successful match.  0-3 for unsuccessful match.
-+   Shift/add algorithm with modulus of table size and an XOR*/
-+
-+static __inline__ unsigned int
-+gr_rhash(const uid_t uid, const __u16 type, const unsigned int sz)
-+{
-+      return ((((uid + type) << (16 + type)) ^ uid) % sz);
-+}
-+
-+ static __inline__ unsigned int
-+gr_shash(const struct acl_subject_label *userp, const unsigned int sz)
-+{
-+      return ((const unsigned long)userp % sz);
-+}
-+
-+static __inline__ unsigned int
-+gr_fhash(const u64 ino, const dev_t dev, const unsigned int sz)
-+{
-+      unsigned int rem;
-+      div_u64_rem((ino + dev) ^ ((ino << 13) + (ino << 23) + (dev << 9)), sz, &rem);
-+      return rem;
-+}
-+
-+static __inline__ unsigned int
-+gr_nhash(const char *name, const __u16 len, const unsigned int sz)
-+{
-+      return full_name_hash((const unsigned char *)name, len) % sz;
-+}
-+
-+#define FOR_EACH_SUBJECT_START(role,subj,iter) \
-+      subj = NULL; \
-+      iter = 0; \
-+      while (iter < role->subj_hash_size) { \
-+              if (subj == NULL) \
-+                      subj = role->subj_hash[iter]; \
-+              if (subj == NULL) { \
-+                      iter++; \
-+                      continue; \
-+              }
-+
-+#define FOR_EACH_SUBJECT_END(subj,iter) \
-+              subj = subj->next; \
-+              if (subj == NULL) \
-+                      iter++; \
-+      }
-+
-+
-+#define FOR_EACH_NESTED_SUBJECT_START(role,subj) \
-+      subj = role->hash->first; \
-+      while (subj != NULL) {
-+
-+#define FOR_EACH_NESTED_SUBJECT_END(subj) \
-+              subj = subj->next; \
-+      }
-+
-+#endif
-+
-diff -Naur backports-4.2.6-1.org/include/linux/gralloc.h backports-4.2.6-1/include/linux/gralloc.h
---- backports-4.2.6-1.org/include/linux/gralloc.h      1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/linux/gralloc.h  2016-01-27 12:26:26.289959354 +0100
-@@ -0,0 +1,9 @@
-+#ifndef __GRALLOC_H
-+#define __GRALLOC_H
-+
-+void acl_free_all(void);
-+int acl_alloc_stack_init(unsigned long size);
-+void *acl_alloc(unsigned long len);
-+void *acl_alloc_num(unsigned long num, unsigned long len);
-+
-+#endif
-diff -Naur backports-4.2.6-1.org/include/linux/grdefs.h backports-4.2.6-1/include/linux/grdefs.h
---- backports-4.2.6-1.org/include/linux/grdefs.h       1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/linux/grdefs.h   2016-01-27 12:26:26.289959354 +0100
-@@ -0,0 +1,140 @@
-+#ifndef GRDEFS_H
-+#define GRDEFS_H
-+
-+/* Begin grsecurity status declarations */
-+
-+enum {
-+      GR_READY = 0x01,
-+      GR_STATUS_INIT = 0x00   // disabled state
-+};
-+
-+/* Begin  ACL declarations */
-+
-+/* Role flags */
-+
-+enum {
-+      GR_ROLE_USER = 0x0001,
-+      GR_ROLE_GROUP = 0x0002,
-+      GR_ROLE_DEFAULT = 0x0004,
-+      GR_ROLE_SPECIAL = 0x0008,
-+      GR_ROLE_AUTH = 0x0010,
-+      GR_ROLE_NOPW = 0x0020,
-+      GR_ROLE_GOD = 0x0040,
-+      GR_ROLE_LEARN = 0x0080,
-+      GR_ROLE_TPE = 0x0100,
-+      GR_ROLE_DOMAIN = 0x0200,
-+      GR_ROLE_PAM = 0x0400,
-+      GR_ROLE_PERSIST = 0x0800
-+};
-+
-+/* ACL Subject and Object mode flags */
-+enum {
-+      GR_DELETED = 0x80000000
-+};
-+
-+/* ACL Object-only mode flags */
-+enum {
-+      GR_READ         = 0x00000001,
-+      GR_APPEND       = 0x00000002,
-+      GR_WRITE        = 0x00000004,
-+      GR_EXEC         = 0x00000008,
-+      GR_FIND         = 0x00000010,
-+      GR_INHERIT      = 0x00000020,
-+      GR_SETID        = 0x00000040,
-+      GR_CREATE       = 0x00000080,
-+      GR_DELETE       = 0x00000100,
-+      GR_LINK         = 0x00000200,
-+      GR_AUDIT_READ   = 0x00000400,
-+      GR_AUDIT_APPEND = 0x00000800,
-+      GR_AUDIT_WRITE  = 0x00001000,
-+      GR_AUDIT_EXEC   = 0x00002000,
-+      GR_AUDIT_FIND   = 0x00004000,
-+      GR_AUDIT_INHERIT= 0x00008000,
-+      GR_AUDIT_SETID  = 0x00010000,
-+      GR_AUDIT_CREATE = 0x00020000,
-+      GR_AUDIT_DELETE = 0x00040000,
-+      GR_AUDIT_LINK   = 0x00080000,
-+      GR_PTRACERD     = 0x00100000,
-+      GR_NOPTRACE     = 0x00200000,
-+      GR_SUPPRESS     = 0x00400000,
-+      GR_NOLEARN      = 0x00800000,
-+      GR_INIT_TRANSFER= 0x01000000
-+};
-+
-+#define GR_AUDITS (GR_AUDIT_READ | GR_AUDIT_WRITE | GR_AUDIT_APPEND | GR_AUDIT_EXEC | \
-+                 GR_AUDIT_FIND | GR_AUDIT_INHERIT | GR_AUDIT_SETID | \
-+                 GR_AUDIT_CREATE | GR_AUDIT_DELETE | GR_AUDIT_LINK)
-+
-+/* ACL subject-only mode flags */
-+enum {
-+      GR_KILL         = 0x00000001,
-+      GR_VIEW         = 0x00000002,
-+      GR_PROTECTED    = 0x00000004,
-+      GR_LEARN        = 0x00000008,
-+      GR_OVERRIDE     = 0x00000010,
-+      /* just a placeholder, this mode is only used in userspace */
-+      GR_DUMMY        = 0x00000020,
-+      GR_PROTSHM      = 0x00000040,
-+      GR_KILLPROC     = 0x00000080,
-+      GR_KILLIPPROC   = 0x00000100,
-+      /* just a placeholder, this mode is only used in userspace */
-+      GR_NOTROJAN     = 0x00000200,
-+      GR_PROTPROCFD   = 0x00000400,
-+      GR_PROCACCT     = 0x00000800,
-+      GR_RELAXPTRACE  = 0x00001000,
-+      //GR_NESTED     = 0x00002000,
-+      GR_INHERITLEARN = 0x00004000,
-+      GR_PROCFIND     = 0x00008000,
-+      GR_POVERRIDE    = 0x00010000,
-+      GR_KERNELAUTH   = 0x00020000,
-+      GR_ATSECURE     = 0x00040000,
-+      GR_SHMEXEC      = 0x00080000
-+};
-+
-+enum {
-+      GR_PAX_ENABLE_SEGMEXEC  = 0x0001,
-+      GR_PAX_ENABLE_PAGEEXEC  = 0x0002,
-+      GR_PAX_ENABLE_MPROTECT  = 0x0004,
-+      GR_PAX_ENABLE_RANDMMAP  = 0x0008,
-+      GR_PAX_ENABLE_EMUTRAMP  = 0x0010,
-+      GR_PAX_DISABLE_SEGMEXEC = 0x0100,
-+      GR_PAX_DISABLE_PAGEEXEC = 0x0200,
-+      GR_PAX_DISABLE_MPROTECT = 0x0400,
-+      GR_PAX_DISABLE_RANDMMAP = 0x0800,
-+      GR_PAX_DISABLE_EMUTRAMP = 0x1000,
-+};
-+
-+enum {
-+      GR_ID_USER      = 0x01,
-+      GR_ID_GROUP     = 0x02,
-+};
-+
-+enum {
-+      GR_ID_ALLOW     = 0x01,
-+      GR_ID_DENY      = 0x02,
-+};
-+
-+#define GR_CRASH_RES  31
-+#define GR_UIDTABLE_MAX 500
-+
-+/* begin resource learning section */
-+enum {
-+      GR_RLIM_CPU_BUMP = 60,
-+      GR_RLIM_FSIZE_BUMP = 50000,
-+      GR_RLIM_DATA_BUMP = 10000,
-+      GR_RLIM_STACK_BUMP = 1000,
-+      GR_RLIM_CORE_BUMP = 10000,
-+      GR_RLIM_RSS_BUMP = 500000,
-+      GR_RLIM_NPROC_BUMP = 1,
-+      GR_RLIM_NOFILE_BUMP = 5,
-+      GR_RLIM_MEMLOCK_BUMP = 50000,
-+      GR_RLIM_AS_BUMP = 500000,
-+      GR_RLIM_LOCKS_BUMP = 2,
-+      GR_RLIM_SIGPENDING_BUMP = 5,
-+      GR_RLIM_MSGQUEUE_BUMP = 10000,
-+      GR_RLIM_NICE_BUMP = 1,
-+      GR_RLIM_RTPRIO_BUMP = 1,
-+      GR_RLIM_RTTIME_BUMP = 1000000
-+};
-+
-+#endif
-diff -Naur backports-4.2.6-1.org/include/linux/grinternal.h backports-4.2.6-1/include/linux/grinternal.h
---- backports-4.2.6-1.org/include/linux/grinternal.h   1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/linux/grinternal.h       2016-01-27 12:26:26.289959354 +0100
-@@ -0,0 +1,230 @@
-+#ifndef __GRINTERNAL_H
-+#define __GRINTERNAL_H
-+
-+#ifdef CONFIG_GRKERNSEC
-+
-+#include <linux/fs.h>
-+#include <linux/mnt_namespace.h>
-+#include <linux/nsproxy.h>
-+#include <linux/gracl.h>
-+#include <linux/grdefs.h>
-+#include <linux/grmsg.h>
-+
-+void gr_add_learn_entry(const char *fmt, ...)
-+      __attribute__ ((format (printf, 1, 2)));
-+__u32 gr_search_file(const struct dentry *dentry, const __u32 mode,
-+                          const struct vfsmount *mnt);
-+__u32 gr_check_create(const struct dentry *new_dentry,
-+                           const struct dentry *parent,
-+                           const struct vfsmount *mnt, const __u32 mode);
-+int gr_check_protected_task(const struct task_struct *task);
-+__u32 to_gr_audit(const __u32 reqmode);
-+int gr_set_acls(const int type);
-+int gr_acl_is_enabled(void);
-+char gr_roletype_to_char(void);
-+
-+void gr_handle_alertkill(struct task_struct *task);
-+char *gr_to_filename(const struct dentry *dentry,
-+                          const struct vfsmount *mnt);
-+char *gr_to_filename1(const struct dentry *dentry,
-+                          const struct vfsmount *mnt);
-+char *gr_to_filename2(const struct dentry *dentry,
-+                          const struct vfsmount *mnt);
-+char *gr_to_filename3(const struct dentry *dentry,
-+                          const struct vfsmount *mnt);
-+
-+extern int grsec_enable_ptrace_readexec;
-+extern int grsec_enable_harden_ptrace;
-+extern int grsec_enable_link;
-+extern int grsec_enable_fifo;
-+extern int grsec_enable_execve;
-+extern int grsec_enable_shm;
-+extern int grsec_enable_execlog;
-+extern int grsec_enable_signal;
-+extern int grsec_enable_audit_ptrace;
-+extern int grsec_enable_forkfail;
-+extern int grsec_enable_time;
-+extern int grsec_enable_rofs;
-+extern int grsec_deny_new_usb;
-+extern int grsec_enable_chroot_shmat;
-+extern int grsec_enable_chroot_mount;
-+extern int grsec_enable_chroot_double;
-+extern int grsec_enable_chroot_pivot;
-+extern int grsec_enable_chroot_chdir;
-+extern int grsec_enable_chroot_chmod;
-+extern int grsec_enable_chroot_mknod;
-+extern int grsec_enable_chroot_fchdir;
-+extern int grsec_enable_chroot_nice;
-+extern int grsec_enable_chroot_execlog;
-+extern int grsec_enable_chroot_caps;
-+extern int grsec_enable_chroot_rename;
-+extern int grsec_enable_chroot_sysctl;
-+extern int grsec_enable_chroot_unix;
-+extern int grsec_enable_symlinkown;
-+extern kgid_t grsec_symlinkown_gid;
-+extern int grsec_enable_tpe;
-+extern kgid_t grsec_tpe_gid;
-+extern int grsec_enable_tpe_all;
-+extern int grsec_enable_tpe_invert;
-+extern int grsec_enable_socket_all;
-+extern kgid_t grsec_socket_all_gid;
-+extern int grsec_enable_socket_client;
-+extern kgid_t grsec_socket_client_gid;
-+extern int grsec_enable_socket_server;
-+extern kgid_t grsec_socket_server_gid;
-+extern kgid_t grsec_audit_gid;
-+extern int grsec_enable_group;
-+extern int grsec_enable_log_rwxmaps;
-+extern int grsec_enable_mount;
-+extern int grsec_enable_chdir;
-+extern int grsec_resource_logging;
-+extern int grsec_enable_blackhole;
-+extern int grsec_lastack_retries;
-+extern int grsec_enable_brute;
-+extern int grsec_enable_harden_ipc;
-+extern int grsec_lock;
-+
-+extern spinlock_t grsec_alert_lock;
-+extern unsigned long grsec_alert_wtime;
-+extern unsigned long grsec_alert_fyet;
-+
-+extern spinlock_t grsec_audit_lock;
-+
-+extern rwlock_t grsec_exec_file_lock;
-+
-+#define gr_task_fullpath(tsk) ((tsk)->exec_file ? \
-+                      gr_to_filename2((tsk)->exec_file->f_path.dentry, \
-+                      (tsk)->exec_file->f_path.mnt) : "/")
-+
-+#define gr_parent_task_fullpath(tsk) ((tsk)->real_parent->exec_file ? \
-+                      gr_to_filename3((tsk)->real_parent->exec_file->f_path.dentry, \
-+                      (tsk)->real_parent->exec_file->f_path.mnt) : "/")
-+
-+#define gr_task_fullpath0(tsk) ((tsk)->exec_file ? \
-+                      gr_to_filename((tsk)->exec_file->f_path.dentry, \
-+                      (tsk)->exec_file->f_path.mnt) : "/")
-+
-+#define gr_parent_task_fullpath0(tsk) ((tsk)->real_parent->exec_file ? \
-+                      gr_to_filename1((tsk)->real_parent->exec_file->f_path.dentry, \
-+                      (tsk)->real_parent->exec_file->f_path.mnt) : "/")
-+
-+#define proc_is_chrooted(tsk_a)  ((tsk_a)->gr_is_chrooted)
-+
-+#define have_same_root(tsk_a,tsk_b) ((tsk_a)->gr_chroot_dentry == (tsk_b)->gr_chroot_dentry)
-+
-+static inline bool gr_is_same_file(const struct file *file1, const struct file *file2)
-+{
-+      if (file1 && file2) {
-+              const struct inode *inode1 = file1->f_path.dentry->d_inode;
-+              const struct inode *inode2 = file2->f_path.dentry->d_inode;
-+              if (inode1->i_ino == inode2->i_ino && inode1->i_sb->s_dev == inode2->i_sb->s_dev)
-+                      return true;
-+      }
-+
-+      return false;
-+}
-+
-+#define GR_CHROOT_CAPS {{ \
-+      CAP_TO_MASK(CAP_LINUX_IMMUTABLE) | CAP_TO_MASK(CAP_NET_ADMIN) | \
-+      CAP_TO_MASK(CAP_SYS_MODULE) | CAP_TO_MASK(CAP_SYS_RAWIO) | \
-+      CAP_TO_MASK(CAP_SYS_PACCT) | CAP_TO_MASK(CAP_SYS_ADMIN) | \
-+      CAP_TO_MASK(CAP_SYS_BOOT) | CAP_TO_MASK(CAP_SYS_TIME) | \
-+      CAP_TO_MASK(CAP_NET_RAW) | CAP_TO_MASK(CAP_SYS_TTY_CONFIG) | \
-+      CAP_TO_MASK(CAP_IPC_OWNER) | CAP_TO_MASK(CAP_SETFCAP), \
-+      CAP_TO_MASK(CAP_SYSLOG) | CAP_TO_MASK(CAP_MAC_ADMIN) }}
-+
-+#define security_learn(normal_msg,args...) \
-+({ \
-+      read_lock(&grsec_exec_file_lock); \
-+      gr_add_learn_entry(normal_msg "\n", ## args); \
-+      read_unlock(&grsec_exec_file_lock); \
-+})
-+
-+enum {
-+      GR_DO_AUDIT,
-+      GR_DONT_AUDIT,
-+      /* used for non-audit messages that we shouldn't kill the task on */
-+      GR_DONT_AUDIT_GOOD
-+};
-+
-+enum {
-+      GR_TTYSNIFF,
-+      GR_RBAC,
-+      GR_RBAC_STR,
-+      GR_STR_RBAC,
-+      GR_RBAC_MODE2,
-+      GR_RBAC_MODE3,
-+      GR_FILENAME,
-+      GR_SYSCTL_HIDDEN,
-+      GR_NOARGS,
-+      GR_ONE_INT,
-+      GR_ONE_INT_TWO_STR,
-+      GR_ONE_STR,
-+      GR_STR_INT,
-+      GR_TWO_STR_INT,
-+      GR_TWO_INT,
-+      GR_TWO_U64,
-+      GR_THREE_INT,
-+      GR_FIVE_INT_TWO_STR,
-+      GR_TWO_STR,
-+      GR_THREE_STR,
-+      GR_FOUR_STR,
-+      GR_STR_FILENAME,
-+      GR_FILENAME_STR,
-+      GR_FILENAME_TWO_INT,
-+      GR_FILENAME_TWO_INT_STR,
-+      GR_TEXTREL,
-+      GR_PTRACE,
-+      GR_RESOURCE,
-+      GR_CAP,
-+      GR_SIG,
-+      GR_SIG2,
-+      GR_CRASH1,
-+      GR_CRASH2,
-+      GR_PSACCT,
-+      GR_RWXMAP,
-+      GR_RWXMAPVMA
-+};
-+
-+#define gr_log_hidden_sysctl(audit, msg, str) gr_log_varargs(audit, msg, GR_SYSCTL_HIDDEN, str)
-+#define gr_log_ttysniff(audit, msg, task) gr_log_varargs(audit, msg, GR_TTYSNIFF, task)
-+#define gr_log_fs_rbac_generic(audit, msg, dentry, mnt) gr_log_varargs(audit, msg, GR_RBAC, dentry, mnt)
-+#define gr_log_fs_rbac_str(audit, msg, dentry, mnt, str) gr_log_varargs(audit, msg, GR_RBAC_STR, dentry, mnt, str)
-+#define gr_log_fs_str_rbac(audit, msg, str, dentry, mnt) gr_log_varargs(audit, msg, GR_STR_RBAC, str, dentry, mnt)
-+#define gr_log_fs_rbac_mode2(audit, msg, dentry, mnt, str1, str2) gr_log_varargs(audit, msg, GR_RBAC_MODE2, dentry, mnt, str1, str2)
-+#define gr_log_fs_rbac_mode3(audit, msg, dentry, mnt, str1, str2, str3) gr_log_varargs(audit, msg, GR_RBAC_MODE3, dentry, mnt, str1, str2, str3)
-+#define gr_log_fs_generic(audit, msg, dentry, mnt) gr_log_varargs(audit, msg, GR_FILENAME, dentry, mnt)
-+#define gr_log_noargs(audit, msg) gr_log_varargs(audit, msg, GR_NOARGS)
-+#define gr_log_int(audit, msg, num) gr_log_varargs(audit, msg, GR_ONE_INT, num)
-+#define gr_log_int_str2(audit, msg, num, str1, str2) gr_log_varargs(audit, msg, GR_ONE_INT_TWO_STR, num, str1, str2)
-+#define gr_log_str(audit, msg, str) gr_log_varargs(audit, msg, GR_ONE_STR, str)
-+#define gr_log_str_int(audit, msg, str, num) gr_log_varargs(audit, msg, GR_STR_INT, str, num)
-+#define gr_log_int_int(audit, msg, num1, num2) gr_log_varargs(audit, msg, GR_TWO_INT, num1, num2)
-+#define gr_log_two_u64(audit, msg, num1, num2) gr_log_varargs(audit, msg, GR_TWO_U64, num1, num2)
-+#define gr_log_int3(audit, msg, num1, num2, num3) gr_log_varargs(audit, msg, GR_THREE_INT, num1, num2, num3)
-+#define gr_log_int5_str2(audit, msg, num1, num2, str1, str2) gr_log_varargs(audit, msg, GR_FIVE_INT_TWO_STR, num1, num2, str1, str2)
-+#define gr_log_str_str(audit, msg, str1, str2) gr_log_varargs(audit, msg, GR_TWO_STR, str1, str2)
-+#define gr_log_str2_int(audit, msg, str1, str2, num) gr_log_varargs(audit, msg, GR_TWO_STR_INT, str1, str2, num)
-+#define gr_log_str3(audit, msg, str1, str2, str3) gr_log_varargs(audit, msg, GR_THREE_STR, str1, str2, str3)
-+#define gr_log_str4(audit, msg, str1, str2, str3, str4) gr_log_varargs(audit, msg, GR_FOUR_STR, str1, str2, str3, str4)
-+#define gr_log_str_fs(audit, msg, str, dentry, mnt) gr_log_varargs(audit, msg, GR_STR_FILENAME, str, dentry, mnt)
-+#define gr_log_fs_str(audit, msg, dentry, mnt, str) gr_log_varargs(audit, msg, GR_FILENAME_STR, dentry, mnt, str)
-+#define gr_log_fs_int2(audit, msg, dentry, mnt, num1, num2) gr_log_varargs(audit, msg, GR_FILENAME_TWO_INT, dentry, mnt, num1, num2)
-+#define gr_log_fs_int2_str(audit, msg, dentry, mnt, num1, num2, str) gr_log_varargs(audit, msg, GR_FILENAME_TWO_INT_STR, dentry, mnt, num1, num2, str)
-+#define gr_log_textrel_ulong_ulong(audit, msg, str, file, ulong1, ulong2) gr_log_varargs(audit, msg, GR_TEXTREL, str, file, ulong1, ulong2)
-+#define gr_log_ptrace(audit, msg, task) gr_log_varargs(audit, msg, GR_PTRACE, task)
-+#define gr_log_res_ulong2_str(audit, msg, task, ulong1, str, ulong2) gr_log_varargs(audit, msg, GR_RESOURCE, task, ulong1, str, ulong2)
-+#define gr_log_cap(audit, msg, task, str) gr_log_varargs(audit, msg, GR_CAP, task, str)
-+#define gr_log_sig_addr(audit, msg, str, addr) gr_log_varargs(audit, msg, GR_SIG, str, addr)
-+#define gr_log_sig_task(audit, msg, task, num) gr_log_varargs(audit, msg, GR_SIG2, task, num)
-+#define gr_log_crash1(audit, msg, task, ulong) gr_log_varargs(audit, msg, GR_CRASH1, task, ulong)
-+#define gr_log_crash2(audit, msg, task, ulong1) gr_log_varargs(audit, msg, GR_CRASH2, task, ulong1)
-+#define gr_log_procacct(audit, msg, task, num1, num2, num3, num4, num5, num6, num7, num8, num9) gr_log_varargs(audit, msg, GR_PSACCT, task, num1, num2, num3, num4, num5, num6, num7, num8, num9)
-+#define gr_log_rwxmap(audit, msg, str) gr_log_varargs(audit, msg, GR_RWXMAP, str)
-+#define gr_log_rwxmap_vma(audit, msg, str) gr_log_varargs(audit, msg, GR_RWXMAPVMA, str)
-+
-+void gr_log_varargs(int audit, const char *msg, int argtypes, ...);
-+
-+#endif
-+
-+#endif
-diff -Naur backports-4.2.6-1.org/include/linux/grmsg.h backports-4.2.6-1/include/linux/grmsg.h
---- backports-4.2.6-1.org/include/linux/grmsg.h        1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/linux/grmsg.h    2016-01-27 12:26:26.289959354 +0100
-@@ -0,0 +1,118 @@
-+#define DEFAULTSECMSG "%.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u, parent %.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u"
-+#define GR_ACL_PROCACCT_MSG "%.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u run time:[%ud %uh %um %us] cpu time:[%ud %uh %um %us] %s with exit code %ld, parent %.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u"
-+#define GR_PTRACE_ACL_MSG "denied ptrace of %.950s(%.16s:%d) by "
-+#define GR_STOPMOD_MSG "denied modification of module state by "
-+#define GR_ROFS_BLOCKWRITE_MSG "denied write to block device %.950s by "
-+#define GR_ROFS_MOUNT_MSG "denied writable mount of %.950s by "
-+#define GR_IOPERM_MSG "denied use of ioperm() by "
-+#define GR_IOPL_MSG "denied use of iopl() by "
-+#define GR_SHMAT_ACL_MSG "denied attach of shared memory of UID %u, PID %d, ID %u by "
-+#define GR_UNIX_CHROOT_MSG "denied connect() to abstract AF_UNIX socket outside of chroot by "
-+#define GR_SHMAT_CHROOT_MSG "denied attach of shared memory outside of chroot by "
-+#define GR_MEM_READWRITE_MSG "denied access of range %Lx -> %Lx in /dev/mem by "
-+#define GR_SYMLINK_MSG "not following symlink %.950s owned by %d.%d by "
-+#define GR_LEARN_AUDIT_MSG "%s\t%u\t%u\t%u\t%.4095s\t%.4095s\t%lu\t%lu\t%.4095s\t%lu\t%pI4"
-+#define GR_ID_LEARN_MSG "%s\t%u\t%u\t%u\t%.4095s\t%.4095s\t%c\t%d\t%d\t%d\t%pI4"
-+#define GR_HIDDEN_ACL_MSG "%s access to hidden file %.950s by "
-+#define GR_OPEN_ACL_MSG "%s open of %.950s for%s%s by "
-+#define GR_CREATE_ACL_MSG "%s create of %.950s for%s%s by "
-+#define GR_FIFO_MSG "denied writing FIFO %.950s of %d.%d by "
-+#define GR_MKNOD_CHROOT_MSG "denied mknod of %.950s from chroot by "
-+#define GR_MKNOD_ACL_MSG "%s mknod of %.950s by "
-+#define GR_UNIXCONNECT_ACL_MSG "%s connect() to the unix domain socket %.950s by "
-+#define GR_TTYSNIFF_ACL_MSG "terminal being sniffed by IP:%pI4 %.480s[%.16s:%d], parent %.480s[%.16s:%d] against "
-+#define GR_MKDIR_ACL_MSG "%s mkdir of %.950s by "
-+#define GR_RMDIR_ACL_MSG "%s rmdir of %.950s by "
-+#define GR_UNLINK_ACL_MSG "%s unlink of %.950s by "
-+#define GR_SYMLINK_ACL_MSG "%s symlink from %.480s to %.480s by "
-+#define GR_HARDLINK_MSG "denied hardlink of %.930s (owned by %d.%d) to %.30s for "
-+#define GR_LINK_ACL_MSG "%s link of %.480s to %.480s by "
-+#define GR_INHERIT_ACL_MSG "successful inherit of %.480s's ACL for %.480s by "
-+#define GR_RENAME_ACL_MSG "%s rename of %.480s to %.480s by "
-+#define GR_UNSAFESHARE_EXEC_ACL_MSG "denied exec with cloned fs of %.950s by "
-+#define GR_PTRACE_EXEC_ACL_MSG "denied ptrace of %.950s by "
-+#define GR_EXEC_ACL_MSG "%s execution of %.950s by "
-+#define GR_EXEC_TPE_MSG "denied untrusted exec (due to %.70s) of %.950s by "
-+#define GR_SEGVSTART_ACL_MSG "possible exploit bruteforcing on " DEFAULTSECMSG " banning uid %u from login for %lu seconds"
-+#define GR_SEGVNOSUID_ACL_MSG "possible exploit bruteforcing on " DEFAULTSECMSG " banning execution for %lu seconds"
-+#define GR_MOUNT_CHROOT_MSG "denied mount of %.256s as %.930s from chroot by "
-+#define GR_PIVOT_CHROOT_MSG "denied pivot_root from chroot by "
-+#define GR_TRUNCATE_ACL_MSG "%s truncate of %.950s by "
-+#define GR_ATIME_ACL_MSG "%s access time change of %.950s by "
-+#define GR_ACCESS_ACL_MSG "%s access of %.950s for%s%s%s by "
-+#define GR_CHROOT_CHROOT_MSG "denied double chroot to %.950s by "
-+#define GR_CHROOT_RENAME_MSG "denied bad rename of %.950s out of a chroot by "
-+#define GR_CHMOD_CHROOT_MSG "denied chmod +s of %.950s by "
-+#define GR_CHMOD_ACL_MSG "%s chmod of %.950s by "
-+#define GR_CHROOT_FCHDIR_MSG "denied fchdir outside of chroot to %.950s by "
-+#define GR_CHROOT_FHANDLE_MSG "denied use of file handles inside chroot by "
-+#define GR_CHOWN_ACL_MSG "%s chown of %.950s by "
-+#define GR_SETXATTR_ACL_MSG "%s setting extended attribute of %.950s by "
-+#define GR_REMOVEXATTR_ACL_MSG "%s removing extended attribute of %.950s by "
-+#define GR_WRITLIB_ACL_MSG "denied load of writable library %.950s by "
-+#define GR_INITF_ACL_MSG "init_variables() failed %s by "
-+#define GR_DISABLED_ACL_MSG "Error loading %s, trying to run kernel with acls disabled. To disable acls at startup use <kernel image name> gracl=off from your boot loader"
-+#define GR_DEV_ACL_MSG "/dev/grsec: %d bytes sent %d required, being fed garbage by "
-+#define GR_SHUTS_ACL_MSG "shutdown auth success for "
-+#define GR_SHUTF_ACL_MSG "shutdown auth failure for "
-+#define GR_SHUTI_ACL_MSG "ignoring shutdown for disabled RBAC system for "
-+#define GR_SEGVMODS_ACL_MSG "segvmod auth success for "
-+#define GR_SEGVMODF_ACL_MSG "segvmod auth failure for "
-+#define GR_SEGVMODI_ACL_MSG "ignoring segvmod for disabled RBAC system for "
-+#define GR_ENABLE_ACL_MSG "%s RBAC system loaded by "
-+#define GR_ENABLEF_ACL_MSG "unable to load %s for "
-+#define GR_RELOADI_ACL_MSG "ignoring reload request for disabled RBAC system"
-+#define GR_RELOAD_ACL_MSG "%s RBAC system reloaded by "
-+#define GR_RELOADF_ACL_MSG "failed reload of %s for "
-+#define GR_SPROLEI_ACL_MSG "ignoring change to special role for disabled RBAC system for "
-+#define GR_SPROLES_ACL_MSG "successful change to special role %s (id %d) by "
-+#define GR_SPROLEL_ACL_MSG "special role %s (id %d) exited by "
-+#define GR_SPROLEF_ACL_MSG "special role %s failure for "
-+#define GR_UNSPROLEI_ACL_MSG "ignoring unauth of special role for disabled RBAC system for "
-+#define GR_UNSPROLES_ACL_MSG "successful unauth of special role %s (id %d) by "
-+#define GR_INVMODE_ACL_MSG "invalid mode %d by "
-+#define GR_PRIORITY_CHROOT_MSG "denied priority change of process (%.16s:%d) by "
-+#define GR_FAILFORK_MSG "failed fork with errno %s by "
-+#define GR_NICE_CHROOT_MSG "denied priority change by "
-+#define GR_UNISIGLOG_MSG "%.32s occurred at %p in "
-+#define GR_DUALSIGLOG_MSG "signal %d sent to " DEFAULTSECMSG " by "
-+#define GR_SIG_ACL_MSG "denied send of signal %d to protected task " DEFAULTSECMSG " by "
-+#define GR_SYSCTL_MSG "denied modification of grsecurity sysctl value : %.32s by "
-+#define GR_SYSCTL_ACL_MSG "%s sysctl of %.950s for%s%s by "
-+#define GR_TIME_MSG "time set by "
-+#define GR_DEFACL_MSG "fatal: unable to find subject for (%.16s:%d), loaded by "
-+#define GR_MMAP_ACL_MSG "%s executable mmap of %.950s by "
-+#define GR_MPROTECT_ACL_MSG "%s executable mprotect of %.950s by "
-+#define GR_SOCK_MSG "denied socket(%.16s,%.16s,%.16s) by "
-+#define GR_SOCK_NOINET_MSG "denied socket(%.16s,%.16s,%d) by "
-+#define GR_BIND_MSG "denied bind() by "
-+#define GR_CONNECT_MSG "denied connect() by "
-+#define GR_BIND_ACL_MSG "denied bind() to %pI4 port %u sock type %.16s protocol %.16s by "
-+#define GR_CONNECT_ACL_MSG "denied connect() to %pI4 port %u sock type %.16s protocol %.16s by "
-+#define GR_IP_LEARN_MSG "%s\t%u\t%u\t%u\t%.4095s\t%.4095s\t%pI4\t%u\t%u\t%u\t%u\t%pI4"
-+#define GR_EXEC_CHROOT_MSG "exec of %.980s within chroot by process "
-+#define GR_CAP_ACL_MSG "use of %s denied for "
-+#define GR_CAP_CHROOT_MSG "use of %s in chroot denied for "
-+#define GR_CAP_ACL_MSG2 "use of %s permitted for "
-+#define GR_USRCHANGE_ACL_MSG "change to uid %u denied for "
-+#define GR_GRPCHANGE_ACL_MSG "change to gid %u denied for "
-+#define GR_REMOUNT_AUDIT_MSG "remount of %.256s by "
-+#define GR_UNMOUNT_AUDIT_MSG "unmount of %.256s by "
-+#define GR_MOUNT_AUDIT_MSG "mount of %.256s to %.256s by "
-+#define GR_CHDIR_AUDIT_MSG "chdir to %.980s by "
-+#define GR_EXEC_AUDIT_MSG "exec of %.930s (%.128s) by "
-+#define GR_RESOURCE_MSG "denied resource overstep by requesting %lu for %.16s against limit %lu for "
-+#define GR_RWXMMAP_MSG "denied RWX mmap of %.950s by "
-+#define GR_RWXMPROTECT_MSG "denied RWX mprotect of %.950s by "
-+#define GR_TEXTREL_AUDIT_MSG "allowed %s text relocation transition in %.950s, VMA:0x%08lx 0x%08lx by "
-+#define GR_PTGNUSTACK_MSG "denied marking stack executable as requested by PT_GNU_STACK marking in %.950s by "
-+#define GR_VM86_MSG "denied use of vm86 by "
-+#define GR_PTRACE_AUDIT_MSG "process %.950s(%.16s:%d) attached to via ptrace by "
-+#define GR_PTRACE_READEXEC_MSG "denied ptrace of unreadable binary %.950s by "
-+#define GR_INIT_TRANSFER_MSG "persistent special role transferred privilege to init by "
-+#define GR_BADPROCPID_MSG "denied read of sensitive /proc/pid/%s entry via fd passed across exec by "
-+#define GR_SYMLINKOWNER_MSG "denied following symlink %.950s since symlink owner %u does not match target owner %u, by "
-+#define GR_BRUTE_DAEMON_MSG "bruteforce prevention initiated for the next 30 minutes or until service restarted, stalling each fork 30 seconds.  Please investigate the crash report for "
-+#define GR_BRUTE_SUID_MSG "bruteforce prevention initiated due to crash of %.950s against uid %u, banning suid/sgid execs for %u minutes.  Please investigate the crash report for "
-+#define GR_IPC_DENIED_MSG "denied %s of overly-permissive IPC object with creator uid %u by "
-+#define GR_MSRWRITE_MSG "denied write to CPU MSR by "
-diff -Naur backports-4.2.6-1.org/include/linux/grsecurity.h backports-4.2.6-1/include/linux/grsecurity.h
---- backports-4.2.6-1.org/include/linux/grsecurity.h   1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/linux/grsecurity.h       2016-01-27 12:26:26.289959354 +0100
-@@ -0,0 +1,255 @@
-+#ifndef GR_SECURITY_H
-+#define GR_SECURITY_H
-+#include <linux/fs.h>
-+#include <linux/fs_struct.h>
-+#include <linux/binfmts.h>
-+#include <linux/gracl.h>
-+
-+/* notify of brain-dead configs */
-+#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_GRKERNSEC_KMEM)
-+#error "CONFIG_DEBUG_FS being enabled is a security risk when CONFIG_GRKERNSEC_KMEM is enabled"
-+#endif
-+#if defined(CONFIG_PROC_PAGE_MONITOR) && defined(CONFIG_GRKERNSEC)
-+#error "CONFIG_PROC_PAGE_MONITOR is a security risk"
-+#endif
-+#if defined(CONFIG_GRKERNSEC_PROC_USER) && defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
-+#error "CONFIG_GRKERNSEC_PROC_USER and CONFIG_GRKERNSEC_PROC_USERGROUP cannot both be enabled."
-+#endif
-+#if defined(CONFIG_GRKERNSEC_PROC) && !defined(CONFIG_GRKERNSEC_PROC_USER) && !defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
-+#error "CONFIG_GRKERNSEC_PROC enabled, but neither CONFIG_GRKERNSEC_PROC_USER nor CONFIG_GRKERNSEC_PROC_USERGROUP enabled"
-+#endif
-+#if defined(CONFIG_PAX_NOEXEC) && !defined(CONFIG_PAX_PAGEEXEC) && !defined(CONFIG_PAX_SEGMEXEC) && !defined(CONFIG_PAX_KERNEXEC)
-+#error "CONFIG_PAX_NOEXEC enabled, but PAGEEXEC, SEGMEXEC, and KERNEXEC are disabled."
-+#endif
-+#if defined(CONFIG_PAX_ASLR) && !defined(CONFIG_PAX_RANDKSTACK) && !defined(CONFIG_PAX_RANDUSTACK) && !defined(CONFIG_PAX_RANDMMAP)
-+#error "CONFIG_PAX_ASLR enabled, but RANDKSTACK, RANDUSTACK, and RANDMMAP are disabled."
-+#endif
-+#if defined(CONFIG_PAX) && !defined(CONFIG_PAX_NOEXEC) && !defined(CONFIG_PAX_ASLR)
-+#error "CONFIG_PAX enabled, but no PaX options are enabled."
-+#endif
-+
-+int gr_handle_new_usb(void);
-+
-+void gr_handle_brute_attach(int dumpable);
-+void gr_handle_brute_check(void);
-+void gr_handle_kernel_exploit(void);
-+
-+char gr_roletype_to_char(void);
-+
-+int gr_proc_is_restricted(void);
-+
-+int gr_acl_enable_at_secure(void);
-+
-+int gr_check_user_change(kuid_t real, kuid_t effective, kuid_t fs);
-+int gr_check_group_change(kgid_t real, kgid_t effective, kgid_t fs);
-+
-+int gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap);
-+
-+void gr_del_task_from_ip_table(struct task_struct *p);
-+
-+int gr_pid_is_chrooted(struct task_struct *p);
-+int gr_handle_chroot_fowner(struct pid *pid, enum pid_type type);
-+int gr_handle_chroot_nice(void);
-+int gr_handle_chroot_sysctl(const int op);
-+int gr_handle_chroot_setpriority(struct task_struct *p,
-+                                      const int niceval);
-+int gr_chroot_fchdir(struct dentry *u_dentry, struct vfsmount *u_mnt);
-+int gr_chroot_fhandle(void);
-+int gr_handle_chroot_chroot(const struct dentry *dentry,
-+                                 const struct vfsmount *mnt);
-+void gr_handle_chroot_chdir(const struct path *path);
-+int gr_handle_chroot_chmod(const struct dentry *dentry,
-+                                const struct vfsmount *mnt, const int mode);
-+int gr_handle_chroot_mknod(const struct dentry *dentry,
-+                                const struct vfsmount *mnt, const int mode);
-+int gr_handle_chroot_mount(const struct dentry *dentry,
-+                                const struct vfsmount *mnt,
-+                                const char *dev_name);
-+int gr_handle_chroot_pivot(void);
-+int gr_handle_chroot_unix(const pid_t pid);
-+
-+int gr_handle_rawio(const struct inode *inode);
-+
-+void gr_handle_ioperm(void);
-+void gr_handle_iopl(void);
-+void gr_handle_msr_write(void);
-+
-+umode_t gr_acl_umask(void);
-+
-+int gr_tpe_allow(const struct file *file);
-+
-+void gr_set_chroot_entries(struct task_struct *task, const struct path *path);
-+void gr_clear_chroot_entries(struct task_struct *task);
-+
-+void gr_log_forkfail(const int retval);
-+void gr_log_timechange(void);
-+void gr_log_signal(const int sig, const void *addr, const struct task_struct *t);
-+void gr_log_chdir(const struct dentry *dentry,
-+                       const struct vfsmount *mnt);
-+void gr_log_chroot_exec(const struct dentry *dentry,
-+                             const struct vfsmount *mnt);
-+void gr_log_remount(const char *devname, const int retval);
-+void gr_log_unmount(const char *devname, const int retval);
-+void gr_log_mount(const char *from, struct path *to, const int retval);
-+void gr_log_textrel(struct vm_area_struct *vma, bool is_textrel_rw);
-+void gr_log_ptgnustack(struct file *file);
-+void gr_log_rwxmmap(struct file *file);
-+void gr_log_rwxmprotect(struct vm_area_struct *vma);
-+
-+int gr_handle_follow_link(const struct dentry *dentry,
-+                               const struct vfsmount *mnt);
-+int gr_handle_fifo(const struct dentry *dentry,
-+                        const struct vfsmount *mnt,
-+                        const struct dentry *dir, const int flag,
-+                        const int acc_mode);
-+int gr_handle_hardlink(const struct dentry *dentry,
-+                            const struct vfsmount *mnt,
-+                            const struct filename *to);
-+
-+int gr_is_capable(const int cap);
-+int gr_is_capable_nolog(const int cap);
-+int gr_task_is_capable(const struct task_struct *task, const struct cred *cred, const int cap);
-+int gr_task_is_capable_nolog(const struct task_struct *task, const int cap);
-+
-+void gr_copy_label(struct task_struct *tsk);
-+void gr_handle_crash(struct task_struct *task, const int sig);
-+int gr_handle_signal(const struct task_struct *p, const int sig);
-+int gr_check_crash_uid(const kuid_t uid);
-+int gr_check_protected_task(const struct task_struct *task);
-+int gr_check_protected_task_fowner(struct pid *pid, enum pid_type type);
-+int gr_acl_handle_mmap(const struct file *file,
-+                            const unsigned long prot);
-+int gr_acl_handle_mprotect(const struct file *file,
-+                                const unsigned long prot);
-+int gr_check_hidden_task(const struct task_struct *tsk);
-+__u32 gr_acl_handle_truncate(const struct dentry *dentry,
-+                                  const struct vfsmount *mnt);
-+__u32 gr_acl_handle_utime(const struct dentry *dentry,
-+                               const struct vfsmount *mnt);
-+__u32 gr_acl_handle_access(const struct dentry *dentry,
-+                                const struct vfsmount *mnt, const int fmode);
-+__u32 gr_acl_handle_chmod(const struct dentry *dentry,
-+                               const struct vfsmount *mnt, umode_t *mode);
-+__u32 gr_acl_handle_chown(const struct dentry *dentry,
-+                               const struct vfsmount *mnt);
-+__u32 gr_acl_handle_setxattr(const struct dentry *dentry,
-+                               const struct vfsmount *mnt);
-+__u32 gr_acl_handle_removexattr(const struct dentry *dentry,
-+                               const struct vfsmount *mnt);
-+int gr_handle_ptrace(struct task_struct *task, const long request);
-+int gr_handle_proc_ptrace(struct task_struct *task);
-+__u32 gr_acl_handle_execve(const struct dentry *dentry,
-+                                const struct vfsmount *mnt);
-+int gr_check_crash_exec(const struct file *filp);
-+int gr_acl_is_enabled(void);
-+void gr_set_role_label(struct task_struct *task, const kuid_t uid,
-+                            const kgid_t gid);
-+int gr_set_proc_label(const struct dentry *dentry,
-+                      const struct vfsmount *mnt,
-+                      const int unsafe_flags);
-+__u32 gr_acl_handle_hidden_file(const struct dentry *dentry,
-+                              const struct vfsmount *mnt);
-+__u32 gr_acl_handle_open(const struct dentry *dentry,
-+                              const struct vfsmount *mnt, int acc_mode);
-+__u32 gr_acl_handle_creat(const struct dentry *dentry,
-+                               const struct dentry *p_dentry,
-+                               const struct vfsmount *p_mnt,
-+                               int open_flags, int acc_mode, const int imode);
-+void gr_handle_create(const struct dentry *dentry,
-+                           const struct vfsmount *mnt);
-+void gr_handle_proc_create(const struct dentry *dentry,
-+                         const struct inode *inode);
-+__u32 gr_acl_handle_mknod(const struct dentry *new_dentry,
-+                               const struct dentry *parent_dentry,
-+                               const struct vfsmount *parent_mnt,
-+                               const int mode);
-+__u32 gr_acl_handle_mkdir(const struct dentry *new_dentry,
-+                               const struct dentry *parent_dentry,
-+                               const struct vfsmount *parent_mnt);
-+__u32 gr_acl_handle_rmdir(const struct dentry *dentry,
-+                               const struct vfsmount *mnt);
-+void gr_handle_delete(const u64 ino, const dev_t dev);
-+__u32 gr_acl_handle_unlink(const struct dentry *dentry,
-+                                const struct vfsmount *mnt);
-+__u32 gr_acl_handle_symlink(const struct dentry *new_dentry,
-+                                 const struct dentry *parent_dentry,
-+                                 const struct vfsmount *parent_mnt,
-+                                 const struct filename *from);
-+__u32 gr_acl_handle_link(const struct dentry *new_dentry,
-+                              const struct dentry *parent_dentry,
-+                              const struct vfsmount *parent_mnt,
-+                              const struct dentry *old_dentry,
-+                              const struct vfsmount *old_mnt, const struct filename *to);
-+int gr_handle_symlink_owner(const struct path *link, const struct inode *target);
-+int gr_acl_handle_rename(struct dentry *new_dentry,
-+                              struct dentry *parent_dentry,
-+                              const struct vfsmount *parent_mnt,
-+                              struct dentry *old_dentry,
-+                              struct inode *old_parent_inode,
-+                              struct vfsmount *old_mnt, const struct filename *newname, unsigned int flags);
-+void gr_handle_rename(struct inode *old_dir, struct inode *new_dir,
-+                              struct dentry *old_dentry,
-+                              struct dentry *new_dentry,
-+                              struct vfsmount *mnt, const __u8 replace, unsigned int flags);
-+__u32 gr_check_link(const struct dentry *new_dentry,
-+                         const struct dentry *parent_dentry,
-+                         const struct vfsmount *parent_mnt,
-+                         const struct dentry *old_dentry,
-+                         const struct vfsmount *old_mnt);
-+int gr_acl_handle_filldir(const struct file *file, const char *name,
-+                               const unsigned int namelen, const u64 ino);
-+
-+__u32 gr_acl_handle_unix(const struct dentry *dentry,
-+                              const struct vfsmount *mnt);
-+void gr_acl_handle_exit(void);
-+void gr_acl_handle_psacct(struct task_struct *task, const long code);
-+int gr_acl_handle_procpidmem(const struct task_struct *task);
-+int gr_handle_rofs_mount(struct dentry *dentry, struct vfsmount *mnt, int mnt_flags);
-+int gr_handle_rofs_blockwrite(struct dentry *dentry, struct vfsmount *mnt, int acc_mode);
-+void gr_audit_ptrace(struct task_struct *task);
-+dev_t gr_get_dev_from_dentry(struct dentry *dentry);
-+u64 gr_get_ino_from_dentry(struct dentry *dentry);
-+void gr_put_exec_file(struct task_struct *task);
-+
-+int gr_get_symlinkown_enabled(void);
-+
-+int gr_ptrace_readexec(struct file *file, int unsafe_flags);
-+
-+void gr_inc_chroot_refcnts(struct dentry *dentry, struct vfsmount *mnt);
-+void gr_dec_chroot_refcnts(struct dentry *dentry, struct vfsmount *mnt);
-+int gr_bad_chroot_rename(struct dentry *olddentry, struct vfsmount *oldmnt,
-+                       struct dentry *newdentry, struct vfsmount *newmnt);
-+
-+#ifdef CONFIG_GRKERNSEC_RESLOG
-+extern void gr_log_resource(const struct task_struct *task, const int res,
-+                                 const unsigned long wanted, const int gt);
-+#else
-+static inline void gr_log_resource(const struct task_struct *task, const int res,
-+                                 const unsigned long wanted, const int gt)
-+{
-+}
-+#endif
-+
-+#ifdef CONFIG_GRKERNSEC
-+void task_grsec_rbac(struct seq_file *m, struct task_struct *p);
-+void gr_handle_vm86(void);
-+void gr_handle_mem_readwrite(u64 from, u64 to);
-+
-+void gr_log_badprocpid(const char *entry);
-+
-+extern int grsec_enable_dmesg;
-+extern int grsec_disable_privio;
-+
-+#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
-+extern kgid_t grsec_proc_gid;
-+#endif
-+
-+#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
-+extern int grsec_enable_chroot_findtask;
-+#endif
-+#ifdef CONFIG_GRKERNSEC_SETXID
-+extern int grsec_enable_setxid;
-+#endif
-+#endif
-+
-+#endif
-diff -Naur backports-4.2.6-1.org/include/linux/grsock.h backports-4.2.6-1/include/linux/grsock.h
---- backports-4.2.6-1.org/include/linux/grsock.h       1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/linux/grsock.h   2016-01-27 12:26:26.289959354 +0100
-@@ -0,0 +1,19 @@
-+#ifndef __GRSOCK_H
-+#define __GRSOCK_H
-+
-+extern void gr_attach_curr_ip(const struct sock *sk);
-+extern int gr_handle_sock_all(const int family, const int type,
-+                            const int protocol);
-+extern int gr_handle_sock_server(const struct sockaddr *sck);
-+extern int gr_handle_sock_server_other(const struct sock *sck);
-+extern int gr_handle_sock_client(const struct sockaddr *sck);
-+extern int gr_search_connect(struct socket * sock,
-+                           struct sockaddr_in * addr);
-+extern int gr_search_bind(struct socket * sock,
-+                        struct sockaddr_in * addr);
-+extern int gr_search_listen(struct socket * sock);
-+extern int gr_search_accept(struct socket * sock);
-+extern int gr_search_socket(const int domain, const int type,
-+                          const int protocol);
-+
-+#endif
-diff -Naur backports-4.2.6-1.org/include/linux/netfilter/xt_gradm.h backports-4.2.6-1/include/linux/netfilter/xt_gradm.h
---- backports-4.2.6-1.org/include/linux/netfilter/xt_gradm.h   1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/linux/netfilter/xt_gradm.h       2016-01-27 12:26:31.209959056 +0100
-@@ -0,0 +1,9 @@
-+#ifndef _LINUX_NETFILTER_XT_GRADM_H
-+#define _LINUX_NETFILTER_XT_GRADM_H 1
-+
-+struct xt_gradm_mtinfo {
-+      __u16 flags;
-+      __u16 invflags;
-+};
-+
-+#endif
-diff -Naur backports-4.2.6-1.org/include/linux/unaligned/access_ok.h backports-4.2.6-1/include/linux/unaligned/access_ok.h
---- backports-4.2.6-1.org/include/linux/unaligned/access_ok.h  2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/include/linux/unaligned/access_ok.h      2016-01-27 12:26:31.219959057 +0100
-@@ -4,34 +4,34 @@
- #include <linux/kernel.h>
- #include <asm/byteorder.h>
--static inline u16 get_unaligned_le16(const void *p)
-+static inline u16 __intentional_overflow(-1) get_unaligned_le16(const void *p)
- {
--      return le16_to_cpup((__le16 *)p);
-+      return le16_to_cpup((const __le16 *)p);
- }
--static inline u32 get_unaligned_le32(const void *p)
-+static inline u32 __intentional_overflow(-1) get_unaligned_le32(const void *p)
- {
--      return le32_to_cpup((__le32 *)p);
-+      return le32_to_cpup((const __le32 *)p);
- }
--static inline u64 get_unaligned_le64(const void *p)
-+static inline u64 __intentional_overflow(-1) get_unaligned_le64(const void *p)
- {
--      return le64_to_cpup((__le64 *)p);
-+      return le64_to_cpup((const __le64 *)p);
- }
--static inline u16 get_unaligned_be16(const void *p)
-+static inline u16 __intentional_overflow(-1) get_unaligned_be16(const void *p)
- {
--      return be16_to_cpup((__be16 *)p);
-+      return be16_to_cpup((const __be16 *)p);
- }
--static inline u32 get_unaligned_be32(const void *p)
-+static inline u32 __intentional_overflow(-1) get_unaligned_be32(const void *p)
- {
--      return be32_to_cpup((__be32 *)p);
-+      return be32_to_cpup((const __be32 *)p);
- }
--static inline u64 get_unaligned_be64(const void *p)
-+static inline u64 __intentional_overflow(-1) get_unaligned_be64(const void *p)
- {
--      return be64_to_cpup((__be64 *)p);
-+      return be64_to_cpup((const __be64 *)p);
- }
- static inline void put_unaligned_le16(u16 val, void *p)
-diff -Naur backports-4.2.6-1.org/include/media/v4l2-dev.h backports-4.2.6-1/include/media/v4l2-dev.h
---- backports-4.2.6-1.org/include/media/v4l2-dev.h     2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/include/media/v4l2-dev.h 2016-01-27 12:26:31.219959057 +0100
-@@ -74,7 +74,7 @@
-       int (*mmap) (struct file *, struct vm_area_struct *);
-       int (*open) (struct file *);
-       int (*release) (struct file *);
--};
-+} __do_const;
- /*
-  * Newer version of video_device, handled by videodev2.c
-diff -Naur backports-4.2.6-1.org/include/media/v4l2-device.h backports-4.2.6-1/include/media/v4l2-device.h
---- backports-4.2.6-1.org/include/media/v4l2-device.h  2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/include/media/v4l2-device.h      2016-01-27 12:26:31.219959057 +0100
-@@ -93,7 +93,7 @@
-    this function returns 0. If the name ends with a digit (e.g. cx18),
-    then the name will be set to cx18-0 since cx180 looks really odd. */
- int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename,
--                                              atomic_t *instance);
-+                                              atomic_unchecked_t *instance);
- /* Set v4l2_dev->dev to NULL. Call when the USB parent disconnects.
-    Since the parent disappears this ensures that v4l2_dev doesn't have an
-diff -Naur backports-4.2.6-1.org/include/net/bluetooth/l2cap.h backports-4.2.6-1/include/net/bluetooth/l2cap.h
---- backports-4.2.6-1.org/include/net/bluetooth/l2cap.h        2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/include/net/bluetooth/l2cap.h    2016-01-27 12:31:52.866600109 +0100
-@@ -615,7 +615,7 @@
-                                                    struct iovec *iov,
-                                                    int len);
- #endif
--};
-+} __do_const;
- struct l2cap_conn {
-       struct hci_conn         *hcon;
-diff -Naur backports-4.2.6-1.org/include/net/mac80211.h backports-4.2.6-1/include/net/mac80211.h
---- backports-4.2.6-1.org/include/net/mac80211.h       2015-11-15 22:19:38.000000000 +0100
-+++ backports-4.2.6-1/include/net/mac80211.h   2016-01-27 12:26:31.223292389 +0100
-@@ -5106,7 +5106,7 @@
-       struct sk_buff *skb;
-       struct ieee80211_tx_rate reported_rate;
-       bool rts, short_preamble;
--      u8 max_rate_idx;
-+      s8 max_rate_idx;
-       u32 rate_idx_mask;
-       u8 *rate_idx_mcs_mask;
-       bool bss;
-@@ -5143,7 +5143,7 @@
-       void (*remove_sta_debugfs)(void *priv, void *priv_sta);
-       u32 (*get_expected_throughput)(void *priv_sta);
--};
-+} __do_const;
- static inline int rate_supported(struct ieee80211_sta *sta,
-                                enum ieee80211_band band,
-diff -Naur backports-4.2.6-1.org/include/trace/events/fs.h backports-4.2.6-1/include/trace/events/fs.h
---- backports-4.2.6-1.org/include/trace/events/fs.h    1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/include/trace/events/fs.h        2016-01-27 12:26:31.226625722 +0100
-@@ -0,0 +1,53 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM fs
-+
-+#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_FS_H
-+
-+#include <linux/fs.h>
-+#include <linux/tracepoint.h>
-+
-+TRACE_EVENT(do_sys_open,
-+
-+      TP_PROTO(const char *filename, int flags, int mode),
-+
-+      TP_ARGS(filename, flags, mode),
-+
-+      TP_STRUCT__entry(
-+              __string(       filename, filename              )
-+              __field(        int, flags                      )
-+              __field(        int, mode                       )
-+      ),
-+
-+      TP_fast_assign(
-+              __assign_str(filename, filename);
-+              __entry->flags = flags;
-+              __entry->mode = mode;
-+      ),
-+
-+      TP_printk("\"%s\" %x %o",
-+                __get_str(filename), __entry->flags, __entry->mode)
-+);
-+
-+TRACE_EVENT(open_exec,
-+
-+      TP_PROTO(const char *filename),
-+
-+      TP_ARGS(filename),
-+
-+      TP_STRUCT__entry(
-+              __string(       filename, filename              )
-+      ),
-+
-+      TP_fast_assign(
-+              __assign_str(filename, filename);
-+      ),
-+
-+      TP_printk("\"%s\"",
-+                __get_str(filename))
-+);
-+
-+#endif /* _TRACE_FS_H */
-+
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-diff -Naur backports-4.2.6-1.org/net/bluetooth/hci_sock.c backports-4.2.6-1/net/bluetooth/hci_sock.c
---- backports-4.2.6-1.org/net/bluetooth/hci_sock.c     2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/bluetooth/hci_sock.c 2016-01-27 12:26:36.269958751 +0100
-@@ -1266,7 +1266,7 @@
-                       uf.event_mask[1] = *((u32 *) f->event_mask + 1);
-               }
--              len = min_t(unsigned int, len, sizeof(uf));
-+              len = min((size_t)len, sizeof(uf));
-               if (copy_from_user(&uf, optval, len)) {
-                       err = -EFAULT;
-                       break;
-diff -Naur backports-4.2.6-1.org/net/bluetooth/l2cap_core.c backports-4.2.6-1/net/bluetooth/l2cap_core.c
---- backports-4.2.6-1.org/net/bluetooth/l2cap_core.c   2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/bluetooth/l2cap_core.c       2016-01-27 12:26:36.269958751 +0100
-@@ -3547,8 +3547,10 @@
-                       break;
-               case L2CAP_CONF_RFC:
--                      if (olen == sizeof(rfc))
--                              memcpy(&rfc, (void *)val, olen);
-+                      if (olen != sizeof(rfc))
-+                              break;
-+
-+                      memcpy(&rfc, (void *)val, olen);
-                       if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) &&
-                           rfc.mode != chan->mode)
-diff -Naur backports-4.2.6-1.org/net/bluetooth/l2cap_sock.c backports-4.2.6-1/net/bluetooth/l2cap_sock.c
---- backports-4.2.6-1.org/net/bluetooth/l2cap_sock.c   2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/bluetooth/l2cap_sock.c       2016-01-27 12:26:36.269958751 +0100
-@@ -633,7 +633,8 @@
-       struct sock *sk = sock->sk;
-       struct l2cap_chan *chan = l2cap_pi(sk)->chan;
-       struct l2cap_options opts;
--      int len, err = 0;
-+      int err = 0;
-+      size_t len = optlen;
-       u32 opt;
-       BT_DBG("sk %p", sk);
-@@ -660,7 +661,7 @@
-               opts.max_tx   = chan->max_tx;
-               opts.txwin_size = chan->tx_win;
--              len = min_t(unsigned int, sizeof(opts), optlen);
-+              len = min(sizeof(opts), len);
-               if (copy_from_user((char *) &opts, optval, len)) {
-                       err = -EFAULT;
-                       break;
-@@ -747,7 +748,8 @@
-       struct bt_security sec;
-       struct bt_power pwr;
-       struct l2cap_conn *conn;
--      int len, err = 0;
-+      int err = 0;
-+      size_t len = optlen;
-       u32 opt;
-       BT_DBG("sk %p", sk);
-@@ -771,7 +773,7 @@
-               sec.level = BT_SECURITY_LOW;
--              len = min_t(unsigned int, sizeof(sec), optlen);
-+              len = min(sizeof(sec), len);
-               if (copy_from_user((char *) &sec, optval, len)) {
-                       err = -EFAULT;
-                       break;
-@@ -867,7 +869,7 @@
-               pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
--              len = min_t(unsigned int, sizeof(pwr), optlen);
-+              len = min(sizeof(pwr), len);
-               if (copy_from_user((char *) &pwr, optval, len)) {
-                       err = -EFAULT;
-                       break;
-diff -Naur backports-4.2.6-1.org/net/bluetooth/rfcomm/sock.c backports-4.2.6-1/net/bluetooth/rfcomm/sock.c
---- backports-4.2.6-1.org/net/bluetooth/rfcomm/sock.c  2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/bluetooth/rfcomm/sock.c      2016-01-27 12:26:36.269958751 +0100
-@@ -713,7 +713,7 @@
-       struct sock *sk = sock->sk;
-       struct bt_security sec;
-       int err = 0;
--      size_t len;
-+      size_t len = optlen;
-       u32 opt;
-       BT_DBG("sk %p", sk);
-@@ -735,7 +735,7 @@
-               sec.level = BT_SECURITY_LOW;
--              len = min_t(unsigned int, sizeof(sec), optlen);
-+              len = min(sizeof(sec), len);
-               if (copy_from_user((char *) &sec, optval, len)) {
-                       err = -EFAULT;
-                       break;
-diff -Naur backports-4.2.6-1.org/net/bluetooth/rfcomm/tty.c backports-4.2.6-1/net/bluetooth/rfcomm/tty.c
---- backports-4.2.6-1.org/net/bluetooth/rfcomm/tty.c   2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/bluetooth/rfcomm/tty.c       2016-01-27 12:26:36.269958751 +0100
-@@ -752,7 +752,7 @@
-       BT_DBG("tty %p id %d", tty, tty->index);
-       BT_DBG("dev %p dst %pMR channel %d opened %d", dev, &dev->dst,
--             dev->channel, dev->port.count);
-+             dev->channel, atomic_read(&dev->port.count));
-       err = tty_port_open(&dev->port, tty, filp);
-       if (err)
-@@ -775,7 +775,7 @@
-       struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-       BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc,
--                                              dev->port.count);
-+                                              atomic_read(&dev->port.count));
-       tty_port_close(&dev->port, tty, filp);
- }
-diff -Naur backports-4.2.6-1.org/net/ieee802154/6lowpan/core.c backports-4.2.6-1/net/ieee802154/6lowpan/core.c
---- backports-4.2.6-1.org/net/ieee802154/6lowpan/core.c        2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/ieee802154/6lowpan/core.c    2016-01-27 12:26:36.273292083 +0100
-@@ -191,7 +191,7 @@
-       dev_put(real_dev);
- }
--static struct rtnl_link_ops lowpan_link_ops __read_mostly = {
-+static struct rtnl_link_ops lowpan_link_ops = {
-       .kind           = "lowpan",
-       .priv_size      = sizeof(struct lowpan_dev_info),
-       .setup          = lowpan_setup,
-diff -Naur backports-4.2.6-1.org/net/ieee802154/6lowpan/reassembly.c backports-4.2.6-1/net/ieee802154/6lowpan/reassembly.c
---- backports-4.2.6-1.org/net/ieee802154/6lowpan/reassembly.c  2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/ieee802154/6lowpan/reassembly.c      2016-01-27 12:26:36.273292083 +0100
-@@ -435,14 +435,13 @@
- static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
- {
--      struct ctl_table *table;
-+      ctl_table_no_const *table = NULL;
-       struct ctl_table_header *hdr;
-       struct netns_ieee802154_lowpan *ieee802154_lowpan =
-               net_ieee802154_lowpan(net);
--      table = lowpan_frags_ns_ctl_table;
-       if (!net_eq(net, &init_net)) {
--              table = kmemdup(table, sizeof(lowpan_frags_ns_ctl_table),
-+              table = kmemdup(lowpan_frags_ns_ctl_table, sizeof(lowpan_frags_ns_ctl_table),
-                               GFP_KERNEL);
-               if (table == NULL)
-                       goto err_alloc;
-@@ -457,9 +456,9 @@
-               /* Don't export sysctls to unprivileged users */
-               if (net->user_ns != &init_user_ns)
-                       table[0].procname = NULL;
--      }
--
--      hdr = register_net_sysctl(net, "net/ieee802154/6lowpan", table);
-+              hdr = register_net_sysctl(net, "net/ieee802154/6lowpan", table);
-+      } else
-+              hdr = register_net_sysctl(net, "net/ieee802154/6lowpan", lowpan_frags_ns_ctl_table);
-       if (hdr == NULL)
-               goto err_reg;
-@@ -467,8 +466,7 @@
-       return 0;
- err_reg:
--      if (!net_eq(net, &init_net))
--              kfree(table);
-+      kfree(table);
- err_alloc:
-       return -ENOMEM;
- }
-diff -Naur backports-4.2.6-1.org/net/mac80211/cfg.c backports-4.2.6-1/net/mac80211/cfg.c
---- backports-4.2.6-1.org/net/mac80211/cfg.c   2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/mac80211/cfg.c       2016-01-27 12:26:36.286625417 +0100
-@@ -580,7 +580,7 @@
-                       ret = ieee80211_vif_use_channel(sdata, chandef,
-                                       IEEE80211_CHANCTX_EXCLUSIVE);
-               }
--      } else if (local->open_count == local->monitors) {
-+      } else if (local_read(&local->open_count) == local->monitors) {
-               local->_oper_chandef = *chandef;
-               ieee80211_hw_config(local, 0);
-       }
-@@ -3488,7 +3488,7 @@
-               else
-                       local->probe_req_reg--;
--              if (!local->open_count)
-+              if (!local_read(&local->open_count))
-                       break;
-               ieee80211_queue_work(&local->hw, &local->reconfig_filter);
-@@ -3637,8 +3637,8 @@
-       if (chanctx_conf) {
-               *chandef = sdata->vif.bss_conf.chandef;
-               ret = 0;
--      } else if (local->open_count > 0 &&
--                 local->open_count == local->monitors &&
-+      } else if (local_read(&local->open_count) > 0 &&
-+                 local_read(&local->open_count) == local->monitors &&
-                  sdata->vif.type == NL80211_IFTYPE_MONITOR) {
-               if (local->use_chanctx)
-                       *chandef = local->monitor_chandef;
-diff -Naur backports-4.2.6-1.org/net/mac80211/ieee80211_i.h backports-4.2.6-1/net/mac80211/ieee80211_i.h
---- backports-4.2.6-1.org/net/mac80211/ieee80211_i.h   2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/mac80211/ieee80211_i.h       2016-01-27 12:26:36.289958749 +0100
-@@ -30,6 +30,7 @@
- #include <net/ieee80211_radiotap.h>
- #include <net/cfg80211.h>
- #include <net/mac80211.h>
-+#include <asm/local.h>
- #include "key.h"
- #include "sta_info.h"
- #include "debug.h"
-@@ -1112,7 +1113,7 @@
-       /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
-       spinlock_t queue_stop_reason_lock;
--      int open_count;
-+      local_t open_count;
-       int monitors, cooked_mntrs;
-       /* number of interfaces with corresponding FIF_ flags */
-       int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll,
-diff -Naur backports-4.2.6-1.org/net/mac80211/iface.c backports-4.2.6-1/net/mac80211/iface.c
---- backports-4.2.6-1.org/net/mac80211/iface.c 2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/mac80211/iface.c     2016-01-27 12:26:36.289958749 +0100
-@@ -550,7 +550,7 @@
-               break;
-       }
--      if (local->open_count == 0) {
-+      if (local_read(&local->open_count) == 0) {
-               res = drv_start(local);
-               if (res)
-                       goto err_del_bss;
-@@ -597,7 +597,7 @@
-                       res = drv_add_interface(local, sdata);
-                       if (res)
-                               goto err_stop;
--              } else if (local->monitors == 0 && local->open_count == 0) {
-+              } else if (local->monitors == 0 && local_read(&local->open_count) == 0) {
-                       res = ieee80211_add_virtual_monitor(local);
-                       if (res)
-                               goto err_stop;
-@@ -704,7 +704,7 @@
-               atomic_inc(&local->iff_allmultis);
-       if (coming_up)
--              local->open_count++;
-+              local_inc(&local->open_count);
-       if (hw_reconf_flags)
-               ieee80211_hw_config(local, hw_reconf_flags);
-@@ -742,7 +742,7 @@
-  err_del_interface:
-       drv_remove_interface(local, sdata);
-  err_stop:
--      if (!local->open_count)
-+      if (!local_read(&local->open_count))
-               drv_stop(local);
-  err_del_bss:
-       sdata->bss = NULL;
-@@ -909,7 +909,7 @@
-       }
-       if (going_down)
--              local->open_count--;
-+              local_dec(&local->open_count);
-       switch (sdata->vif.type) {
-       case NL80211_IFTYPE_AP_VLAN:
-@@ -978,7 +978,7 @@
-               atomic_set(&sdata->txqs_len[txqi->txq.ac], 0);
-       }
--      if (local->open_count == 0)
-+      if (local_read(&local->open_count) == 0)
-               ieee80211_clear_tx_pending(local);
-       /*
-@@ -1021,7 +1021,7 @@
-       if (cancel_scan)
-               flush_delayed_work(&local->scan_work);
--      if (local->open_count == 0) {
-+      if (local_read(&local->open_count) == 0) {
-               ieee80211_stop_device(local);
-               /* no reconfiguring after stop! */
-@@ -1032,7 +1032,7 @@
-       ieee80211_configure_filter(local);
-       ieee80211_hw_config(local, hw_reconf_flags);
--      if (local->monitors == local->open_count)
-+      if (local->monitors == local_read(&local->open_count))
-               ieee80211_add_virtual_monitor(local);
- }
-@@ -1905,8 +1905,8 @@
-        */
-       cfg80211_shutdown_all_interfaces(local->hw.wiphy);
--      WARN(local->open_count, "%s: open count remains %d\n",
--           wiphy_name(local->hw.wiphy), local->open_count);
-+      WARN(local_read(&local->open_count), "%s: open count remains %ld\n",
-+           wiphy_name(local->hw.wiphy), local_read(&local->open_count));
-       mutex_lock(&local->iflist_mtx);
-       list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) {
-diff -Naur backports-4.2.6-1.org/net/mac80211/main.c backports-4.2.6-1/net/mac80211/main.c
---- backports-4.2.6-1.org/net/mac80211/main.c  2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/mac80211/main.c      2016-01-27 12:26:36.289958749 +0100
-@@ -172,7 +172,7 @@
-               changed &= ~(IEEE80211_CONF_CHANGE_CHANNEL |
-                            IEEE80211_CONF_CHANGE_POWER);
--      if (changed && local->open_count) {
-+      if (changed && local_read(&local->open_count)) {
-               ret = drv_config(local, changed);
-               /*
-                * Goal:
-diff -Naur backports-4.2.6-1.org/net/mac80211/pm.c backports-4.2.6-1/net/mac80211/pm.c
---- backports-4.2.6-1.org/net/mac80211/pm.c    2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/mac80211/pm.c        2016-01-27 12:26:36.289958749 +0100
-@@ -12,7 +12,7 @@
-       struct ieee80211_sub_if_data *sdata;
-       struct sta_info *sta;
--      if (!local->open_count)
-+      if (!local_read(&local->open_count))
-               goto suspend;
-       ieee80211_scan_cancel(local);
-@@ -166,7 +166,7 @@
-       WARN_ON(!list_empty(&local->chanctx_list));
-       /* stop hardware - this must stop RX */
--      if (local->open_count)
-+      if (local_read(&local->open_count))
-               ieee80211_stop_device(local);
-  suspend:
-diff -Naur backports-4.2.6-1.org/net/mac80211/rate.c backports-4.2.6-1/net/mac80211/rate.c
---- backports-4.2.6-1.org/net/mac80211/rate.c  2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/mac80211/rate.c      2016-01-27 12:26:36.289958749 +0100
-@@ -730,7 +730,7 @@
-       ASSERT_RTNL();
--      if (local->open_count)
-+      if (local_read(&local->open_count))
-               return -EBUSY;
-       if (ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL)) {
-diff -Naur backports-4.2.6-1.org/net/mac80211/sta_info.c backports-4.2.6-1/net/mac80211/sta_info.c
---- backports-4.2.6-1.org/net/mac80211/sta_info.c      2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/mac80211/sta_info.c  2016-01-27 12:26:36.289958749 +0100
-@@ -341,7 +341,7 @@
-               int size = sizeof(struct txq_info) +
-                          ALIGN(hw->txq_data_size, sizeof(void *));
--              txq_data = kcalloc(ARRAY_SIZE(sta->sta.txq), size, gfp);
-+              txq_data = kcalloc(size, ARRAY_SIZE(sta->sta.txq), gfp);
-               if (!txq_data)
-                       goto free;
-diff -Naur backports-4.2.6-1.org/net/mac80211/util.c backports-4.2.6-1/net/mac80211/util.c
---- backports-4.2.6-1.org/net/mac80211/util.c  2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/mac80211/util.c      2016-01-27 12:26:36.289958749 +0100
-@@ -1761,7 +1761,7 @@
-       bool sched_scan_stopped = false;
-       /* nothing to do if HW shouldn't run */
--      if (!local->open_count)
-+      if (!local_read(&local->open_count))
-               goto wake_up;
- #ifdef CONFIG_PM
-@@ -2033,7 +2033,7 @@
-       local->in_reconfig = false;
-       barrier();
--      if (local->monitors == local->open_count && local->monitors > 0)
-+      if (local->monitors == local_read(&local->open_count) && local->monitors > 0)
-               ieee80211_add_virtual_monitor(local);
-       /*
-@@ -2088,7 +2088,7 @@
-        * If this is for hw restart things are still running.
-        * We may want to change that later, however.
-        */
--      if (local->open_count && (!local->suspended || reconfig_due_to_wowlan))
-+      if (local_read(&local->open_count) && (!local->suspended || reconfig_due_to_wowlan))
-               drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_RESTART);
-       if (!local->suspended)
-@@ -2112,7 +2112,7 @@
-               flush_delayed_work(&local->scan_work);
-       }
--      if (local->open_count && !reconfig_due_to_wowlan)
-+      if (local_read(&local->open_count) && !reconfig_due_to_wowlan)
-               drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_SUSPEND);
-       list_for_each_entry(sdata, &local->interfaces, list) {
-diff -Naur backports-4.2.6-1.org/net/wireless/wext-core.c backports-4.2.6-1/net/wireless/wext-core.c
---- backports-4.2.6-1.org/net/wireless/wext-core.c     2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/net/wireless/wext-core.c 2016-01-27 12:26:36.303292082 +0100
-@@ -748,8 +748,7 @@
-                */
-               /* Support for very large requests */
--              if ((descr->flags & IW_DESCR_FLAG_NOMAX) &&
--                  (user_length > descr->max_tokens)) {
-+              if (user_length > descr->max_tokens) {
-                       /* Allow userspace to GET more than max so
-                        * we can support any size GET requests.
-                        * There is still a limit : -ENOMEM.
-@@ -788,22 +787,6 @@
-               }
-       }
--      if (IW_IS_GET(cmd) && !(descr->flags & IW_DESCR_FLAG_NOMAX)) {
--              /*
--               * If this is a GET, but not NOMAX, it means that the extra
--               * data is not bounded by userspace, but by max_tokens. Thus
--               * set the length to max_tokens. This matches the extra data
--               * allocation.
--               * The driver should fill it with the number of tokens it
--               * provided, and it may check iwp->length rather than having
--               * knowledge of max_tokens. If the driver doesn't change the
--               * iwp->length, this ioctl just copies back max_token tokens
--               * filled with zeroes. Hopefully the driver isn't claiming
--               * them to be valid data.
--               */
--              iwp->length = descr->max_tokens;
--      }
--
-       err = handler(dev, info, (union iwreq_data *) iwp, extra);
-       iwp->length += essid_compat;
-diff -Naur backports-4.2.6-1.org/scripts/gcc-plugin.sh backports-4.2.6-1/scripts/gcc-plugin.sh
---- backports-4.2.6-1.org/scripts/gcc-plugin.sh        1970-01-01 01:00:00.000000000 +0100
-+++ backports-4.2.6-1/scripts/gcc-plugin.sh    2016-01-27 12:26:36.303292082 +0100
-@@ -0,0 +1,51 @@
-+#!/bin/sh
-+srctree=$(dirname "$0")
-+gccplugins_dir=$($3 -print-file-name=plugin)
-+plugincc=$($1 -E -x c++ - -o /dev/null -I"${srctree}"/../tools/gcc -I"${gccplugins_dir}"/include 2>&1 <<EOF
-+#include "gcc-common.h"
-+#if BUILDING_GCC_VERSION >= 4008 || defined(ENABLE_BUILD_WITH_CXX)
-+#warning $2 CXX
-+#else
-+#warning $1 CC
-+#endif
-+EOF
-+)
-+
-+if [ $? -ne 0 ]
-+then
-+      exit 1
-+fi
-+
-+case "$plugincc" in
-+      *"$1 CC"*)
-+              echo "$1"
-+              exit 0
-+              ;;
-+
-+      *"$2 CXX"*)
-+              # the c++ compiler needs another test, see below
-+              ;;
-+
-+      *)
-+              exit 1
-+              ;;
-+esac
-+
-+# we need a c++ compiler that supports the designated initializer GNU extension
-+plugincc=$($2 -c -x c++ -std=gnu++98 - -fsyntax-only -I"${srctree}"/../tools/gcc -I"${gccplugins_dir}"/include 2>&1 <<EOF
-+#include "gcc-common.h"
-+class test {
-+public:
-+      int test;
-+} test = {
-+      .test = 1
-+};
-+EOF
-+)
-+
-+if [ $? -eq 0 ]
-+then
-+      echo "$2"
-+      exit 0
-+fi
-+exit 1
diff --git a/src/patches/backports-4.2.6-1-mt7601_upstream_fixes.patch b/src/patches/backports-4.2.6-1-mt7601_upstream_fixes.patch
deleted file mode 100644 (file)
index 9918d65..0000000
+++ /dev/null
@@ -1,441 +0,0 @@
-From bed429e1ae8b7ee207e01f3aa60dcc0d06a8ed4d Mon Sep 17 00:00:00 2001
-From: Jakub Kicinski <kubakici@wp.pl>
-Date: Fri, 31 Jul 2015 15:04:46 +0200
-Subject: mt7601u: fix dma from stack address
-
-DMA to variables located on the stack is a bad idea.
-For simplicity and to avoid frequent allocations create
-a buffer inside the device structure.  Protect this
-buffer with vendor_req_mutex.  Don't protect vendor
-requests which don't use this buffer.
-
-Signed-off-by: Jakub Kicinski <kubakici@wp.pl>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
- drivers/net/wireless/mediatek/mt7601u/mt7601u.h |  4 +-
- drivers/net/wireless/mediatek/mt7601u/usb.c     | 63 ++++++++++++-------------
- drivers/net/wireless/mediatek/mt7601u/usb.h     |  2 +
- 3 files changed, 34 insertions(+), 35 deletions(-)
-
-diff --git a/drivers/net/wireless/mediatek/mt7601u/mt7601u.h b/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
-index 9102be6b..6bdfc11 100644
---- a/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
-+++ b/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
-@@ -146,7 +146,7 @@ enum {
-  * @rx_lock:          protects @rx_q.
-  * @con_mon_lock:     protects @ap_bssid, @bcn_*, @avg_rssi.
-  * @mutex:            ensures exclusive access from mac80211 callbacks.
-- * @vendor_req_mutex: ensures atomicity of vendor requests.
-+ * @vendor_req_mutex: protects @vend_buf, ensures atomicity of split writes.
-  * @reg_atomic_mutex: ensures atomicity of indirect register accesses
-  *                    (accesses to RF and BBP).
-  * @hw_atomic_mutex:  ensures exclusive access to HW during critical
-@@ -184,6 +184,8 @@ struct mt7601u_dev {
-       struct mt7601u_eeprom_params *ee;
-       struct mutex vendor_req_mutex;
-+      void *vend_buf;
-+
-       struct mutex reg_atomic_mutex;
-       struct mutex hw_atomic_mutex;
-diff --git a/drivers/net/wireless/mediatek/mt7601u/usb.c b/drivers/net/wireless/mediatek/mt7601u/usb.c
-index 54dba40..416c604 100644
---- a/drivers/net/wireless/mediatek/mt7601u/usb.c
-+++ b/drivers/net/wireless/mediatek/mt7601u/usb.c
-@@ -92,10 +92,9 @@ void mt7601u_complete_urb(struct urb *urb)
-       complete(cmpl);
- }
--static int
--__mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req,
--                       const u8 direction, const u16 val, const u16 offset,
--                       void *buf, const size_t buflen)
-+int mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req,
-+                         const u8 direction, const u16 val, const u16 offset,
-+                         void *buf, const size_t buflen)
- {
-       int i, ret;
-       struct usb_device *usb_dev = mt7601u_to_usb_dev(dev);
-@@ -110,6 +109,8 @@ __mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req,
-               trace_mt_vend_req(dev, pipe, req, req_type, val, offset,
-                                 buf, buflen, ret);
-+              if (ret == -ENODEV)
-+                      set_bit(MT7601U_STATE_REMOVED, &dev->state);
-               if (ret >= 0 || ret == -ENODEV)
-                       return ret;
-@@ -122,25 +123,6 @@ __mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req,
-       return ret;
- }
--int
--mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req,
--                     const u8 direction, const u16 val, const u16 offset,
--                     void *buf, const size_t buflen)
--{
--      int ret;
--
--      mutex_lock(&dev->vendor_req_mutex);
--
--      ret = __mt7601u_vendor_request(dev, req, direction, val, offset,
--                                     buf, buflen);
--      if (ret == -ENODEV)
--              set_bit(MT7601U_STATE_REMOVED, &dev->state);
--
--      mutex_unlock(&dev->vendor_req_mutex);
--
--      return ret;
--}
--
- void mt7601u_vendor_reset(struct mt7601u_dev *dev)
- {
-       mt7601u_vendor_request(dev, MT_VEND_DEV_MODE, USB_DIR_OUT,
-@@ -150,19 +132,21 @@ void mt7601u_vendor_reset(struct mt7601u_dev *dev)
- u32 mt7601u_rr(struct mt7601u_dev *dev, u32 offset)
- {
-       int ret;
--      __le32 reg;
--      u32 val;
-+      u32 val = ~0;
-       WARN_ONCE(offset > USHRT_MAX, "read high off:%08x", offset);
-+      mutex_lock(&dev->vendor_req_mutex);
-+
-       ret = mt7601u_vendor_request(dev, MT_VEND_MULTI_READ, USB_DIR_IN,
--                                   0, offset, &reg, sizeof(reg));
--      val = le32_to_cpu(reg);
--      if (ret > 0 && ret != sizeof(reg)) {
-+                                   0, offset, dev->vend_buf, MT_VEND_BUF);
-+      if (ret == MT_VEND_BUF)
-+              val = get_unaligned_le32(dev->vend_buf);
-+      else if (ret > 0)
-               dev_err(dev->dev, "Error: wrong size read:%d off:%08x\n",
-                       ret, offset);
--              val = ~0;
--      }
-+
-+      mutex_unlock(&dev->vendor_req_mutex);
-       trace_reg_read(dev, offset, val);
-       return val;
-@@ -173,12 +157,17 @@ int mt7601u_vendor_single_wr(struct mt7601u_dev *dev, const u8 req,
- {
-       int ret;
-+      mutex_lock(&dev->vendor_req_mutex);
-+
-       ret = mt7601u_vendor_request(dev, req, USB_DIR_OUT,
-                                    val & 0xffff, offset, NULL, 0);
--      if (ret)
--              return ret;
--      return mt7601u_vendor_request(dev, req, USB_DIR_OUT,
--                                    val >> 16, offset + 2, NULL, 0);
-+      if (!ret)
-+              ret = mt7601u_vendor_request(dev, req, USB_DIR_OUT,
-+                                           val >> 16, offset + 2, NULL, 0);
-+
-+      mutex_unlock(&dev->vendor_req_mutex);
-+
-+      return ret;
- }
- void mt7601u_wr(struct mt7601u_dev *dev, u32 offset, u32 val)
-@@ -275,6 +264,12 @@ static int mt7601u_probe(struct usb_interface *usb_intf,
-       usb_set_intfdata(usb_intf, dev);
-+      dev->vend_buf = devm_kmalloc(dev->dev, MT_VEND_BUF, GFP_KERNEL);
-+      if (!dev->vend_buf) {
-+              ret = -ENOMEM;
-+              goto err;
-+      }
-+
-       ret = mt7601u_assign_pipes(usb_intf, dev);
-       if (ret)
-               goto err;
-diff --git a/drivers/net/wireless/mediatek/mt7601u/usb.h b/drivers/net/wireless/mediatek/mt7601u/usb.h
-index 49e188f..bc18202 100644
---- a/drivers/net/wireless/mediatek/mt7601u/usb.h
-+++ b/drivers/net/wireless/mediatek/mt7601u/usb.h
-@@ -23,6 +23,8 @@
- #define MT_VEND_DEV_MODE_RESET        1
-+#define MT_VEND_BUF           sizeof(__le32)
-+
- enum mt_vendor_req {
-       MT_VEND_DEV_MODE = 1,
-       MT_VEND_WRITE = 2,
--- 
-cgit v0.12
-
-From d9517c0a5d7468a7ea63086057604fcb0fff480e Mon Sep 17 00:00:00 2001
-From: Jakub Kicinski <kubakici@wp.pl>
-Date: Fri, 31 Jul 2015 15:04:47 +0200
-Subject: mt7601u: use correct ieee80211_rx variant
-
-Rx is run inside a tasklet so ieee80211_rx() should be used
-instead of ieee80211_rx_ni().
-
-Signed-off-by: Jakub Kicinski <kubakici@wp.pl>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
- drivers/net/wireless/mediatek/mt7601u/dma.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/mediatek/mt7601u/dma.c b/drivers/net/wireless/mediatek/mt7601u/dma.c
-index 7217da4..fb183e3 100644
---- a/drivers/net/wireless/mediatek/mt7601u/dma.c
-+++ b/drivers/net/wireless/mediatek/mt7601u/dma.c
-@@ -112,7 +112,7 @@ static void mt7601u_rx_process_seg(struct mt7601u_dev *dev, u8 *data,
-       if (!skb)
-               return;
--      ieee80211_rx_ni(dev->hw, skb);
-+      ieee80211_rx(dev->hw, skb);
- }
- static u16 mt7601u_rx_next_seg_len(u8 *data, u32 data_len)
--- 
-cgit v0.12
-
-From 4513493d188d5e3052aee68eda85eaaa1a4e41c2 Mon Sep 17 00:00:00 2001
-From: Jakub Kicinski <kubakici@wp.pl>
-Date: Fri, 31 Jul 2015 15:04:48 +0200
-Subject: mt7601u: fix tx status reporting contexts
-
-mac80211 requires that rx path does not run concurrently with
-tx status reporting.  Since rx path is run in driver tasklet,
-tx status cannot be reported directly from interrupt context
-(there would be no way to lock it out).
-
-Add tasklet for tx and move all possible code from irq handler
-there.
-
-Note: tx tasklet is needed because workqueue is queued very
-      rarely and that kills TCP performance.
-
-Signed-off-by: Jakub Kicinski <kubakici@wp.pl>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
- drivers/net/wireless/mediatek/mt7601u/dma.c     | 30 +++++++++++++++++++++----
- drivers/net/wireless/mediatek/mt7601u/init.c    |  1 +
- drivers/net/wireless/mediatek/mt7601u/mac.c     |  4 ++++
- drivers/net/wireless/mediatek/mt7601u/mt7601u.h |  2 ++
- 4 files changed, 33 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/wireless/mediatek/mt7601u/dma.c b/drivers/net/wireless/mediatek/mt7601u/dma.c
-index fb183e3..63c4854 100644
---- a/drivers/net/wireless/mediatek/mt7601u/dma.c
-+++ b/drivers/net/wireless/mediatek/mt7601u/dma.c
-@@ -236,23 +236,42 @@ static void mt7601u_complete_tx(struct urb *urb)
-       skb = q->e[q->start].skb;
-       trace_mt_tx_dma_done(dev, skb);
--      mt7601u_tx_status(dev, skb);
-+      __skb_queue_tail(&dev->tx_skb_done, skb);
-+      tasklet_schedule(&dev->tx_tasklet);
-       if (q->used == q->entries - q->entries / 8)
-               ieee80211_wake_queue(dev->hw, skb_get_queue_mapping(skb));
-       q->start = (q->start + 1) % q->entries;
-       q->used--;
-+out:
-+      spin_unlock_irqrestore(&dev->tx_lock, flags);
-+}
--      if (urb->status)
--              goto out;
-+static void mt7601u_tx_tasklet(unsigned long data)
-+{
-+      struct mt7601u_dev *dev = (struct mt7601u_dev *) data;
-+      struct sk_buff_head skbs;
-+      unsigned long flags;
-+
-+      __skb_queue_head_init(&skbs);
-+
-+      spin_lock_irqsave(&dev->tx_lock, flags);
-       set_bit(MT7601U_STATE_MORE_STATS, &dev->state);
-       if (!test_and_set_bit(MT7601U_STATE_READING_STATS, &dev->state))
-               queue_delayed_work(dev->stat_wq, &dev->stat_work,
-                                  msecs_to_jiffies(10));
--out:
-+
-+      skb_queue_splice_init(&dev->tx_skb_done, &skbs);
-+
-       spin_unlock_irqrestore(&dev->tx_lock, flags);
-+
-+      while (!skb_queue_empty(&skbs)) {
-+              struct sk_buff *skb = __skb_dequeue(&skbs);
-+
-+              mt7601u_tx_status(dev, skb);
-+      }
- }
- static int mt7601u_dma_submit_tx(struct mt7601u_dev *dev,
-@@ -475,6 +494,7 @@ int mt7601u_dma_init(struct mt7601u_dev *dev)
- {
-       int ret = -ENOMEM;
-+      tasklet_init(&dev->tx_tasklet, mt7601u_tx_tasklet, (unsigned long) dev);
-       tasklet_init(&dev->rx_tasklet, mt7601u_rx_tasklet, (unsigned long) dev);
-       ret = mt7601u_alloc_tx(dev);
-@@ -502,4 +522,6 @@ void mt7601u_dma_cleanup(struct mt7601u_dev *dev)
-       mt7601u_free_rx(dev);
-       mt7601u_free_tx(dev);
-+
-+      tasklet_kill(&dev->tx_tasklet);
- }
-diff --git a/drivers/net/wireless/mediatek/mt7601u/init.c b/drivers/net/wireless/mediatek/mt7601u/init.c
-index df3dd56..38eb20b 100644
---- a/drivers/net/wireless/mediatek/mt7601u/init.c
-+++ b/drivers/net/wireless/mediatek/mt7601u/init.c
-@@ -456,6 +456,7 @@ struct mt7601u_dev *mt7601u_alloc_device(struct device *pdev)
-       spin_lock_init(&dev->lock);
-       spin_lock_init(&dev->con_mon_lock);
-       atomic_set(&dev->avg_ampdu_len, 1);
-+      skb_queue_head_init(&dev->tx_skb_done);
-       dev->stat_wq = alloc_workqueue("mt7601u", WQ_UNBOUND, 0);
-       if (!dev->stat_wq) {
-diff --git a/drivers/net/wireless/mediatek/mt7601u/mac.c b/drivers/net/wireless/mediatek/mt7601u/mac.c
-index 7514bce..e3928cf 100644
---- a/drivers/net/wireless/mediatek/mt7601u/mac.c
-+++ b/drivers/net/wireless/mediatek/mt7601u/mac.c
-@@ -181,7 +181,11 @@ void mt76_send_tx_status(struct mt7601u_dev *dev, struct mt76_tx_status *stat)
-       }
-       mt76_mac_fill_tx_status(dev, &info, stat);
-+
-+      local_bh_disable();
-       ieee80211_tx_status_noskb(dev->hw, sta, &info);
-+      local_bh_enable();
-+
-       rcu_read_unlock();
- }
-diff --git a/drivers/net/wireless/mediatek/mt7601u/mt7601u.h b/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
-index 6bdfc11..bc5e294 100644
---- a/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
-+++ b/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
-@@ -199,7 +199,9 @@ struct mt7601u_dev {
-       /* TX */
-       spinlock_t tx_lock;
-+      struct tasklet_struct tx_tasklet;
-       struct mt7601u_tx_queue *tx_q;
-+      struct sk_buff_head tx_skb_done;
-       atomic_t avg_ampdu_len;
--- 
-cgit v0.12
-
-From 78623bfb6f4cbdba3183621e8e0e781611217022 Mon Sep 17 00:00:00 2001
-From: Jakub Kicinski <kubakici@wp.pl>
-Date: Fri, 31 Jul 2015 15:04:49 +0200
-Subject: mt7601u: lock out rx path and tx status reporting
-
-mac80211 requires that rx path does not run concurrently with
-tx status reporting.  Add a spinlock which will ensure that.
-
-Signed-off-by: Jakub Kicinski <kubakici@wp.pl>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
- drivers/net/wireless/mediatek/mt7601u/dma.c     | 2 ++
- drivers/net/wireless/mediatek/mt7601u/init.c    | 1 +
- drivers/net/wireless/mediatek/mt7601u/mac.c     | 4 ++--
- drivers/net/wireless/mediatek/mt7601u/mt7601u.h | 4 +++-
- drivers/net/wireless/mediatek/mt7601u/tx.c      | 3 +++
- 5 files changed, 11 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/wireless/mediatek/mt7601u/dma.c b/drivers/net/wireless/mediatek/mt7601u/dma.c
-index 63c4854..57a80cf 100644
---- a/drivers/net/wireless/mediatek/mt7601u/dma.c
-+++ b/drivers/net/wireless/mediatek/mt7601u/dma.c
-@@ -112,7 +112,9 @@ static void mt7601u_rx_process_seg(struct mt7601u_dev *dev, u8 *data,
-       if (!skb)
-               return;
-+      spin_lock(&dev->mac_lock);
-       ieee80211_rx(dev->hw, skb);
-+      spin_unlock(&dev->mac_lock);
- }
- static u16 mt7601u_rx_next_seg_len(u8 *data, u32 data_len)
-diff --git a/drivers/net/wireless/mediatek/mt7601u/init.c b/drivers/net/wireless/mediatek/mt7601u/init.c
-index 38eb20b..26190fd 100644
---- a/drivers/net/wireless/mediatek/mt7601u/init.c
-+++ b/drivers/net/wireless/mediatek/mt7601u/init.c
-@@ -454,6 +454,7 @@ struct mt7601u_dev *mt7601u_alloc_device(struct device *pdev)
-       spin_lock_init(&dev->tx_lock);
-       spin_lock_init(&dev->rx_lock);
-       spin_lock_init(&dev->lock);
-+      spin_lock_init(&dev->mac_lock);
-       spin_lock_init(&dev->con_mon_lock);
-       atomic_set(&dev->avg_ampdu_len, 1);
-       skb_queue_head_init(&dev->tx_skb_done);
-diff --git a/drivers/net/wireless/mediatek/mt7601u/mac.c b/drivers/net/wireless/mediatek/mt7601u/mac.c
-index e3928cf..e21c53e 100644
---- a/drivers/net/wireless/mediatek/mt7601u/mac.c
-+++ b/drivers/net/wireless/mediatek/mt7601u/mac.c
-@@ -182,9 +182,9 @@ void mt76_send_tx_status(struct mt7601u_dev *dev, struct mt76_tx_status *stat)
-       mt76_mac_fill_tx_status(dev, &info, stat);
--      local_bh_disable();
-+      spin_lock_bh(&dev->mac_lock);
-       ieee80211_tx_status_noskb(dev->hw, sta, &info);
--      local_bh_enable();
-+      spin_unlock_bh(&dev->mac_lock);
-       rcu_read_unlock();
- }
-diff --git a/drivers/net/wireless/mediatek/mt7601u/mt7601u.h b/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
-index bc5e294..428bd2f 100644
---- a/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
-+++ b/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
-@@ -141,8 +141,9 @@ enum {
- /**
-  * struct mt7601u_dev - adapter structure
-  * @lock:             protects @wcid->tx_rate.
-+ * @mac_lock:         locks out mac80211's tx status and rx paths.
-  * @tx_lock:          protects @tx_q and changes of MT7601U_STATE_*_STATS
--                      flags in @state.
-+ *                    flags in @state.
-  * @rx_lock:          protects @rx_q.
-  * @con_mon_lock:     protects @ap_bssid, @bcn_*, @avg_rssi.
-  * @mutex:            ensures exclusive access from mac80211 callbacks.
-@@ -177,6 +178,7 @@ struct mt7601u_dev {
-       struct mt76_wcid __rcu *wcid[N_WCIDS];
-       spinlock_t lock;
-+      spinlock_t mac_lock;
-       const u16 *beacon_offsets;
-diff --git a/drivers/net/wireless/mediatek/mt7601u/tx.c b/drivers/net/wireless/mediatek/mt7601u/tx.c
-index 0be2080..a0a33dc 100644
---- a/drivers/net/wireless/mediatek/mt7601u/tx.c
-+++ b/drivers/net/wireless/mediatek/mt7601u/tx.c
-@@ -116,7 +116,10 @@ void mt7601u_tx_status(struct mt7601u_dev *dev, struct sk_buff *skb)
-       ieee80211_tx_info_clear_status(info);
-       info->status.rates[0].idx = -1;
-       info->flags |= IEEE80211_TX_STAT_ACK;
-+
-+      spin_lock(&dev->mac_lock);
-       ieee80211_tx_status(dev->hw, skb);
-+      spin_unlock(&dev->mac_lock);
- }
- static int mt7601u_skb_rooms(struct mt7601u_dev *dev, struct sk_buff *skb)
--- 
-cgit v0.12
-
diff --git a/src/patches/backports-4.2.6-1_ath10k_remove_logspam.patch b/src/patches/backports-4.2.6-1_ath10k_remove_logspam.patch
deleted file mode 100644 (file)
index bdb1534..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htt_rx.c backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htt_rx.c
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htt_rx.c     2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htt_rx.c 2016-03-26 10:48:17.189430101 +0100
-@@ -1476,7 +1476,7 @@
-        */
-       if (!rx_status->freq) {
--              ath10k_warn(ar, "no channel configured; ignoring frame(s)!\n");
-+              ath10k_dbg(ar,ATH10K_DBG_DATA ,"no channel configured; ignoring frame(s)!\n");
-               return false;
-       }
diff --git a/src/patches/libloc-0.9.5-location-Fix-list-networks-by-as.patch b/src/patches/libloc-0.9.5-location-Fix-list-networks-by-as.patch
deleted file mode 100644 (file)
index ea29885..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From b178117bac33b4b1e7ce341a6f2eec493cca13f8 Mon Sep 17 00:00:00 2001
-From: Michael Tremer <michael.tremer@ipfire.org>
-Date: Mon, 21 Dec 2020 16:25:46 +0000
-Subject: [PATCH] location: Fix list-networks-by-as
-
-Fixes: #12554
-Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
----
- src/python/location.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/python/location.in b/src/python/location.in
-index b30beae..ad2ccf5 100644
---- a/src/python/location.in
-+++ b/src/python/location.in
-@@ -493,7 +493,7 @@ class CLI(object):
-                       f = writer(sys.stdout, prefix="AS%s" % asn)
-                       # Print all matching networks
--                      for n in db.search_networks(asn=asn, family=ns.family):
-+                      for n in db.search_networks(asns=[asn], family=ns.family):
-                               f.write(n)
-                       f.finish()
--- 
-2.26.2
-
diff --git a/src/patches/libtirpc-1.0.2-glibc-2.26.patch b/src/patches/libtirpc-1.0.2-glibc-2.26.patch
deleted file mode 100644 (file)
index 6d583e6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/xdr_sizeof.c b/src/xdr_sizeof.c
-index d23fbd1..79d6707 100644
---- a/src/xdr_sizeof.c
-+++ b/src/xdr_sizeof.c
-@@ -39,6 +39,7 @@
- #include <rpc/xdr.h>
- #include <sys/types.h>
- #include <stdlib.h>
-+#include <stdint.h>
- #include "un-namespace.h"
- /* ARGSUSED */
diff --git a/src/patches/linux/backports-4.2.6-1_ath10k_remove_logspam.patch b/src/patches/linux/backports-4.2.6-1_ath10k_remove_logspam.patch
deleted file mode 100644 (file)
index bdb1534..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htt_rx.c backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htt_rx.c
---- backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htt_rx.c     2015-11-15 22:19:40.000000000 +0100
-+++ backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htt_rx.c 2016-03-26 10:48:17.189430101 +0100
-@@ -1476,7 +1476,7 @@
-        */
-       if (!rx_status->freq) {
--              ath10k_warn(ar, "no channel configured; ignoring frame(s)!\n");
-+              ath10k_dbg(ar,ATH10K_DBG_DATA ,"no channel configured; ignoring frame(s)!\n");
-               return false;
-       }
diff --git a/src/patches/pakfire-database-Add-inst_size-column-when-creating-new-data.patch b/src/patches/pakfire-database-Add-inst_size-column-when-creating-new-data.patch
deleted file mode 100644 (file)
index f366f21..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-From 0d6d6fd2b89c609a6f8daff225c6c98b54a041cc Mon Sep 17 00:00:00 2001
-From: Michael Tremer <michael.tremer@ipfire.org>
-Date: Mon, 4 Mar 2013 17:18:52 +0100
-Subject: [PATCH] database: Add inst_size column when creating new databases.
-
----
- python/pakfire/repository/database.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/python/pakfire/repository/database.py b/python/pakfire/repository/database.py
-index fc8a1a9..d8751e9 100644
---- a/python/pakfire/repository/database.py
-+++ b/python/pakfire/repository/database.py
-@@ -190,6 +190,7 @@ class DatabaseLocal(Database):
-                               groups          TEXT,
-                               filename        TEXT,
-                               size            INTEGER,
-+                              inst_size       INTEGER,
-                               hash1           TEXT,
-                               provides        TEXT,
-                               requires        TEXT,
--- 
-1.7.11.7
-
diff --git a/src/patches/pakfire3-changes-for-ipfire2.diff b/src/patches/pakfire3-changes-for-ipfire2.diff
deleted file mode 100644 (file)
index e0f476a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-diff --git a/Makefile b/Makefile
-index 0361af6..0bcb1bf 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,7 +1,7 @@
- include Makeconfig
--SUBDIRS = po python tools tools/fake-environ
-+SUBDIRS = python tools tools/fake-environ
- all: build
-diff --git a/tools/Makefile b/tools/Makefile
-index d7cbf70..499beb4 100644
---- a/tools/Makefile
-+++ b/tools/Makefile
-@@ -12,7 +12,7 @@ LIBS_POPT = -lpopt
- SCRIPTS = $(SCRIPTS_BIN) $(SCRIPTS_SHELL)
- SCRIPTS_BIN   = \
--      debugedit
-+      #debugedit
- SCRIPTS_SHELL = \
-       chroot-shell \
-@@ -50,7 +50,7 @@ install: $(SCRIPTS)
-       # Create script aliases.
-       -mkdir -pv $(DESTDIR)/usr/bin
--      ln -svf ../..$(SCRIPT_DIR)/pakfire-multicall.py $(DESTDIR)/usr/bin/pakfire
-+      ln -svf ../..$(SCRIPT_DIR)/pakfire-multicall.py $(DESTDIR)/usr/bin/pakfire3
-       ln -svf ../..$(SCRIPT_DIR)/pakfire-multicall.py $(DESTDIR)/usr/bin/pakfire-builder
-       ln -svf ../..$(SCRIPT_DIR)/pakfire-multicall.py $(DESTDIR)/usr/bin/pakfire-client
-       ln -svf ../..$(SCRIPT_DIR)/pakfire-multicall.py $(DESTDIR)/usr/bin/pakfire-daemon
diff --git a/src/patches/parted-3.2-device-mapper.patch b/src/patches/parted-3.2-device-mapper.patch
deleted file mode 100644 (file)
index e866c88..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
---- parted-3.2/libparted/arch/linux.c.device-mapper    2014-06-15 20:15:54.000000000 +0100
-+++ parted-3.2/libparted/arch/linux.c  2014-07-29 22:27:54.487430030 +0100
-@@ -2307,6 +2307,7 @@ zasprintf (const char *format, ...)
- static char *
- dm_canonical_path (PedDevice const *dev)
- {
-+#ifdef ENABLE_DEVICE_MAPPER
-         LinuxSpecific const *arch_specific = LINUX_SPECIFIC (dev);
-         /* Get map name from devicemapper */
-@@ -2324,6 +2325,7 @@ dm_canonical_path (PedDevice const *dev)
-         dm_task_destroy (task);
-         return dev_name;
- err:
-+#endif
-         return NULL;
- }
-@@ -2944,13 +2946,14 @@ _disk_sync_part_table (PedDisk* disk)
-                                                unsigned long long *start,
-                                                unsigned long long *length);
--
-+#ifdef ENABLE_DEVICE_MAPPER
-         if (disk->dev->type == PED_DEVICE_DM) {
-                 add_partition = _dm_add_partition;
-                 remove_partition = _dm_remove_partition;
-                 resize_partition = _dm_resize_partition;
-                 get_partition_start_and_length = _dm_get_partition_start_and_length;
-         } else {
-+#endif
-                 add_partition = _blkpg_add_partition;
-                 remove_partition = _blkpg_remove_partition;
- #ifdef BLKPG_RESIZE_PARTITION
-@@ -2959,7 +2962,9 @@ _disk_sync_part_table (PedDisk* disk)
-                 resize_partition = NULL;
- #endif
-                 get_partition_start_and_length = _kernel_get_partition_start_and_length;
-+#ifdef ENABLE_DEVICE_MAPPER
-         }
-+#endif
-         /* lpn = largest partition number.
-          * for remove pass, use greater of device or label limit */
diff --git a/src/patches/parted-3.2-sysmacros.patch b/src/patches/parted-3.2-sysmacros.patch
deleted file mode 100644 (file)
index a29e761..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-https://bugs.gentoo.org/580022
-
-From dec8995fe80508374beba6356f6ecbba8ef6b18b Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Tue, 21 Jun 2016 15:01:08 -0400
-Subject: [PATCH] include sysmacros.h for major/minor/makedev
-
-Linux C libs are moving away from including this header implicitly via
-sys/types.h, so include it explicitly.
----
- libparted/arch/linux.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
-index 326b95619d31..e5c168be3c68 100644
---- a/libparted/arch/linux.c
-+++ b/libparted/arch/linux.c
-@@ -37,6 +37,7 @@
- #include <dirent.h>
- #include <sys/ioctl.h>
- #include <sys/stat.h>
-+#include <sys/sysmacros.h>
- #include <sys/types.h>
- #include <sys/utsname.h>        /* for uname() */
- #include <scsi/scsi.h>
--- 
-2.8.2
-
diff --git a/src/patches/perl-5.30.0-fix-build-failure-against-gcc-10.patch b/src/patches/perl-5.30.0-fix-build-failure-against-gcc-10.patch
deleted file mode 100644 (file)
index bb92527..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-https://bugs.gentoo.org/708744
-
-From 6bd6308fcea3541e505651bf8e8127a4a03d22cd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
-Date: Tue, 12 Nov 2019 09:19:18 +0100
-Subject: [PATCH] Adapt Configure to GCC version 10
-
-I got a notice from Jeff Law <law@redhat.com>:
-
-    Your particular package fails its testsuite. This was ultimately
-    tracked down to a Configure problem. The perl configure script treated
-    gcc-10 as gcc-1 and turned on -fpcc-struct-return. This is an ABI
-    changing flag and caused Perl to not be able to interact properly with
-    the dbm libraries on the system leading to a segfault.
-
-His proposed patch corrected only this one instance of the version
-mismatch. Reading the Configure script revealed more issues. This
-patch fixes all of them I found.
-
-Please note I do not have GCC 10 available, I tested it by faking the version
-with:
-
---- a/Configure
-+++ b/Configure
-@@ -4701,7 +4701,7 @@ else
- fi
- $rm -f try try.*
- case "$gccversion" in
--1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
-+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;;
- esac
- case "$gccversion" in
- '') gccosandvers='' ;;
-@@ -4741,7 +4741,7 @@ esac
- # gcc 3.* complain about adding -Idirectories that they already know about,
- # so we will take those off from locincpth.
- case "$gccversion" in
--3*)
-+3.*)
-     echo "main(){}">try.c
-     for incdir in $locincpth; do
-        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
-@@ -5467,13 +5467,13 @@ fi
- case "$hint" in
- default|recommended)
-       case "$gccversion" in
--      1*) dflt="$dflt -fpcc-struct-return" ;;
-+      1.*) dflt="$dflt -fpcc-struct-return" ;;
-       esac
-       case "$optimize:$DEBUGGING" in
-       *-g*:old) dflt="$dflt -DDEBUGGING";;
-       esac
-       case "$gccversion" in
--      2*) if $test -d /etc/conf/kconfig.d &&
-+      2.*) if $test -d /etc/conf/kconfig.d &&
-                       $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
-               then
-                       # Interactive Systems (ISC) POSIX mode.
-@@ -5482,7 +5482,7 @@ default|recommended)
-               ;;
-       esac
-       case "$gccversion" in
--      1*) ;;
-+      1.*) ;;
-       2.[0-8]*) ;;
-       ?*)     set strict-aliasing -fno-strict-aliasing
-               eval $checkccflag
-@@ -5600,7 +5600,7 @@ case "$cppflags" in
-     ;;
- esac
- case "$gccversion" in
--1*) cppflags="$cppflags -D__GNUC__"
-+1.*) cppflags="$cppflags -D__GNUC__"
- esac
- case "$mips_type" in
- '');;
-@@ -23103,7 +23103,7 @@ fi
- : add -D_FORTIFY_SOURCE if feasible and not already there
- case "$gccversion" in
--[456789].*)   case "$optimize$ccflags" in
-+[456789].*|[1-9][0-9]*)       case "$optimize$ccflags" in
-       *-O*)   case "$ccflags$cppsymbols" in
-               *_FORTIFY_SOURCE=*) # Don't add it again.
-                       echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4
---- a/cflags.SH
-+++ b/cflags.SH
-@@ -156,7 +156,7 @@ esac
- case "$gccversion" in
- '') ;;
--[12]*) ;; # gcc versions 1 (gasp!) and 2 are not good for this.
-+[12].*) ;; # gcc versions 1 (gasp!) and 2 are not good for this.
- Intel*) ;; # # Is that you, Intel C++?
- #
- # NOTE 1: the -std=c89 without -pedantic is a bit pointless.
--- 
-2.25.0
-
diff --git a/src/patches/python-pycurl-fix-do_curl_reset-refcount.patch b/src/patches/python-pycurl-fix-do_curl_reset-refcount.patch
deleted file mode 100644 (file)
index 7e20b15..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
---- a/src/pycurl.c     
-+++ a/src/pycurl.c     
-@@ -1452,6 +1452,7 @@ do_curl_reset(CurlObject *self)
-         }
-     }
-+    Py_INCREF(Py_None);
-     return Py_None;
- }
---- a/tests/test_internals.py  
-+++ a/tests/test_internals.py  
-@@ -245,6 +245,11 @@ if 1 and gc:
-     if opts.verbose >= 1:
-         print "Tracked objects:", len(gc.get_objects())
-+if 1:
-+    # Ensure that the refcounting error in "reset" is fixed:
-+    for i in xrange(100000):
-+        c = Curl()
-+        c.reset()
- # /***********************************************************************
- # // done
diff --git a/src/patches/rpcbind/rpcbind-0.2.3-tirpc_fix-1.patch b/src/patches/rpcbind/rpcbind-0.2.3-tirpc_fix-1.patch
deleted file mode 100644 (file)
index bdf73a3..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-Submitted By:            Bruce Dubbs <bdubbs_at_linuxfromscratch_dot_org>
-Date:                    2015-11-29
-Initial Package Version: 0.2.3
-Upstream Status:         Already in upstream git repository
-Origin:                  Upstream
-Description:             This patch fixes rpcbind to be able to build with 
-                         recent tirpc versions.
-
-From 9194122389f2a56b1cd1f935e64307e2e963c2da Mon Sep 17 00:00:00 2001
-From: Steve Dickson <steved@redhat.com>
-Date: Mon, 2 Nov 2015 17:05:18 -0500
-Subject: [PATCH] handle_reply: Don't use the xp_auth pointer directly
-
-In the latest libtirpc version to access the xp_auth
-one must use the SVC_XP_AUTH macro. To be backwards
-compatible a couple ifdefs were added to use the
-macro when it exists.
-
-Signed-off-by: Steve Dickson <steved@redhat.com>
----
- src/rpcb_svc_com.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
-index 4ae93f1..22d6c84 100644
---- a/src/rpcb_svc_com.c
-+++ b/src/rpcb_svc_com.c
-@@ -1295,10 +1295,17 @@ handle_reply(int fd, SVCXPRT *xprt)
-       a.rmt_localvers = fi->versnum;
-       xprt_set_caller(xprt, fi);
-+#if defined(SVC_XP_AUTH)
-+      SVC_XP_AUTH(xprt) = svc_auth_none;
-+#else 
-       xprt->xp_auth = &svc_auth_none;
-+#endif
-       svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a);
-+#if !defined(SVC_XP_AUTH)
-       SVCAUTH_DESTROY(xprt->xp_auth);
-       xprt->xp_auth = NULL;
-+#endif
-+
- done:
-       if (buffer)
-               free(buffer);
--- 
-1.8.2.1
-
index 1dc14b8a3e30a9132ccf6a0e117ebfb3570ea296..f8f6f70a9f2727884bdd866786bd51d30947d86d 100644 (file)
@@ -36,7 +36,7 @@ my $path_smartctl = "/usr/sbin/smartctl";
 my %color = ();
 my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 if ( $mainsettings{'RRDLOG'} eq "" ){
        $mainsettings{'RRDLOG'}="/var/log/rrd";
index 0fe5ff6b343e929676e2594241906ff784293111..751b6e8a5b8a33e07739ba98b84da2e1b4758e8b 100755 (executable)
@@ -60,7 +60,7 @@ my $mailfile="${General::swroot}/dma/mail.conf";
 
 &Header::getcgihash(\%cgiparams);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 &General::readhash("$settingsfile", \%settings) if(-f $settingsfile);
 
 if ( -f $mailfile){
index 0cfac20d6c5bfcca205aaf47aa43b21a92558b47..78b6f99dc4277ca2a7bb0d5d1ea4d82ad7c6cb67 100644 (file)
@@ -45,7 +45,7 @@ require '/var/ipfire/lang.pl';
 my ( %mainsettings, %color ) = ();
 
 &General::readhash('/var/ipfire/main/settings', \%mainsettings);
-&General::readhash('/srv/web/ipfire/html/themes/'.$mainsettings{'THEME'}.'/include/colors.txt', \%color);
+&General::readhash('/srv/web/ipfire/html/themes/ipfire/include/colors.txt', \%color);
 
 sub wiograph {
        my $hostid = $_[0];
index ac8fc1220a4a763b8f6e27db8d4de8f22699cb1c..1dcec52fe266e342eb02d7c5404ded26ec31118d 100644 (file)
@@ -62,7 +62,7 @@ my ( %mainsettings, %mailsettings, %wiosettings, %cgiparams, %netsettings, %ipsh
 &General::readhash('/var/ipfire/ethernet/settings', \%netsettings);
 &General::readhash('/var/ipfire/dma/mail.conf', \%mailsettings);
 &General::readhash('/var/ipfire/wio/wio.conf', \%wiosettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 &General::readhasharray('/var/ipfire/ovpn/ovpnconfig', \%ovpnconfighash);
 &General::readhash('/var/ipfire/ovpn/settings', \%ovpnsettings);
 &General::readhasharray('/var/ipfire/ovpn/ccd.conf', \%ovpnccdconfhash);