]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
Merge branch 'perl-system' into next
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 17 Jun 2021 20:11:47 +0000 (20:11 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 17 Jun 2021 20:11:47 +0000 (20:11 +0000)
87 files changed:
config/ca-certificates/certdata.txt
config/firewall/ipsec-policy
config/rootfiles/common/fuse
config/rootfiles/common/glib
config/rootfiles/common/libpcap
config/rootfiles/core/158/filelists/files
config/rootfiles/core/158/filelists/fuse [new symlink]
config/rootfiles/core/158/filelists/hwdata [new symlink]
config/rootfiles/core/158/filelists/libpcap [new symlink]
config/rootfiles/core/158/filelists/smartmontools [new symlink]
config/rootfiles/core/158/filelists/sudo [new symlink]
config/rootfiles/core/158/filelists/xfsprogs [new symlink]
html/cgi-bin/proxy.cgi
html/cgi-bin/vpnmain.cgi
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/avahi
lfs/bash
lfs/ca-certificates
lfs/cmake
lfs/coreutils
lfs/cups-filters
lfs/fuse
lfs/glib
lfs/grub
lfs/hwdata
lfs/libloc
lfs/libpcap
lfs/openvmtools
lfs/pam
lfs/postfix
lfs/smartmontools
lfs/sox
lfs/sudo
lfs/tcpdump
lfs/tmux
lfs/xfsprogs
src/hwdata/pci.ids
src/hwdata/usb.ids
src/patches/Python-2.7.3-gdbm-1.patch [deleted file]
src/patches/Python-2.7.9-gdbm-1.patch [deleted file]
src/patches/arm-dont-require-distutils.patch [deleted file]
src/patches/arm-multi-grsec-compile-fixes.patch [deleted file]
src/patches/bash/bash-3.2-ssh_source_bash.patch [moved from src/patches/bash-3.2-ssh_source_bash.patch with 100% similarity]
src/patches/bash/bash-4.0-paths-1.patch [moved from src/patches/bash-4.0-paths-1.patch with 100% similarity]
src/patches/bash/bash-4.0-profile-1.patch [moved from src/patches/bash-4.0-profile-1.patch with 100% similarity]
src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch [deleted file]
src/patches/coreutils/coreutils-8.27-uname-1.patch [moved from src/patches/coreutils-8.27-uname-1.patch with 100% similarity]
src/patches/coreutils/coreutils-8.32-i18n-1.patch [moved from src/patches/coreutils-8.32-i18n-1.patch with 100% similarity]
src/patches/cups-str4609.patch [deleted file]
src/patches/db-4.4.20-fixes-1.patch [deleted file]
src/patches/diffutils-2.8.1-i18n-1.patch [deleted file]
src/patches/grub/grub-2.02_disable_vga_fallback.patch [moved from src/patches/grub-2.02_disable_vga_fallback.patch with 100% similarity]
src/patches/igb-5.3.4.4_fix_hung_at_dev_get_stats.patch [deleted file]
src/patches/iptables-1.4.14-ipp2p-0.8.2-ipfire.patch [deleted file]
src/patches/iputils-20020927-headers.patch [deleted file]
src/patches/iputils-20020927-rh.patch [deleted file]
src/patches/iputils-glibckernheaders.patch [deleted file]
src/patches/kbd-1.12-backspace-1.patch [deleted file]
src/patches/kbd-1.12-gcc4_fixes-1.patch [deleted file]
src/patches/kbd-1.12-more-programs-1.patch [deleted file]
src/patches/libloc/libloc-0.9.3-perl-i586-regular-stack-protector.patch [moved from src/patches/libloc-0.9.3-perl-i586-regular-stack-protector.patch with 100% similarity]
src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch [deleted file]
src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch [deleted file]
src/patches/linux-3.10.39-add_libertas_uap.patch [deleted file]
src/patches/linux/linux-3.14.79-rpi-suspend-not-inline.patch [deleted file]
src/patches/linux/linux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch [deleted file]
src/patches/linux/linux-4.9.8-rt2x00usb_suppress_queue_warnings.patch [deleted file]
src/patches/lzo-2.06-CVE-2014-4607.patch [deleted file]
src/patches/netpbm-10.26.46-getline.patch [deleted file]
src/patches/openssl-1.0.0-beta5-enginesdir.patch [deleted file]
src/patches/openssl-1.0.2a-rpmbuild.patch [deleted file]
src/patches/openssl-1.0.2a_disable_ssse3_for_amd.patch [deleted file]
src/patches/openssl-1.0.2g-disable-sslv2v3.patch [deleted file]
src/patches/pam-0.99.10.0-rlimit-build-fix.patch [deleted file]
src/patches/pcre-8.38-upstream_fixes-1.patch [deleted file]
src/patches/python-pycurl-no-static-libs.patch [deleted file]
src/patches/tcp_wrappers-7.6-shared_lib_plus_plus-1.patch [deleted file]
src/patches/udev-208-fix_uint8_t.patch [deleted file]
src/patches/udev-208_remove_systemd_log.patch [deleted file]

index 19bd1b0ddd8ec4faef355049effaeec3b5a3cb4d..56ab1c19f7df82fcce332c5e672995cafbb9dba6 100644 (file)
@@ -1420,187 +1420,6 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
 CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
 CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
 
-#
-# Certificate "QuoVadis Root CA"
-#
-# Issuer: CN=QuoVadis Root Certification Authority,OU=Root Certification Authority,O=QuoVadis Limited,C=BM
-# Serial Number: 985026699 (0x3ab6508b)
-# Subject: CN=QuoVadis Root Certification Authority,OU=Root Certification Authority,O=QuoVadis Limited,C=BM
-# Not Valid Before: Mon Mar 19 18:33:33 2001
-# Not Valid After : Wed Mar 17 18:33:33 2021
-# Fingerprint (MD5): 27:DE:36:FE:72:B7:00:03:00:9D:F4:F0:1E:6C:04:24
-# Fingerprint (SHA1): DE:3F:40:BD:50:93:D3:9B:6C:60:F6:DA:BC:07:62:01:00:89:76:C9
-CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "QuoVadis Root CA"
-CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
-CKA_SUBJECT MULTILINE_OCTAL
-\060\177\061\013\060\011\006\003\125\004\006\023\002\102\115\061
-\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
-\151\163\040\114\151\155\151\164\145\144\061\045\060\043\006\003
-\125\004\013\023\034\122\157\157\164\040\103\145\162\164\151\146
-\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
-\171\061\056\060\054\006\003\125\004\003\023\045\121\165\157\126
-\141\144\151\163\040\122\157\157\164\040\103\145\162\164\151\146
-\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
-\171
-END
-CKA_ID UTF8 "0"
-CKA_ISSUER MULTILINE_OCTAL
-\060\177\061\013\060\011\006\003\125\004\006\023\002\102\115\061
-\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
-\151\163\040\114\151\155\151\164\145\144\061\045\060\043\006\003
-\125\004\013\023\034\122\157\157\164\040\103\145\162\164\151\146
-\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
-\171\061\056\060\054\006\003\125\004\003\023\045\121\165\157\126
-\141\144\151\163\040\122\157\157\164\040\103\145\162\164\151\146
-\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
-\171
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\004\072\266\120\213
-END
-CKA_VALUE MULTILINE_OCTAL
-\060\202\005\320\060\202\004\270\240\003\002\001\002\002\004\072
-\266\120\213\060\015\006\011\052\206\110\206\367\015\001\001\005
-\005\000\060\177\061\013\060\011\006\003\125\004\006\023\002\102
-\115\061\031\060\027\006\003\125\004\012\023\020\121\165\157\126
-\141\144\151\163\040\114\151\155\151\164\145\144\061\045\060\043
-\006\003\125\004\013\023\034\122\157\157\164\040\103\145\162\164
-\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
-\151\164\171\061\056\060\054\006\003\125\004\003\023\045\121\165
-\157\126\141\144\151\163\040\122\157\157\164\040\103\145\162\164
-\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
-\151\164\171\060\036\027\015\060\061\060\063\061\071\061\070\063
-\063\063\063\132\027\015\062\061\060\063\061\067\061\070\063\063
-\063\063\132\060\177\061\013\060\011\006\003\125\004\006\023\002
-\102\115\061\031\060\027\006\003\125\004\012\023\020\121\165\157
-\126\141\144\151\163\040\114\151\155\151\164\145\144\061\045\060
-\043\006\003\125\004\013\023\034\122\157\157\164\040\103\145\162
-\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
-\162\151\164\171\061\056\060\054\006\003\125\004\003\023\045\121
-\165\157\126\141\144\151\163\040\122\157\157\164\040\103\145\162
-\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
-\162\151\164\171\060\202\001\042\060\015\006\011\052\206\110\206
-\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012
-\002\202\001\001\000\277\141\265\225\123\272\127\374\372\362\147
-\013\072\032\337\021\200\144\225\264\321\274\315\172\317\366\051
-\226\056\044\124\100\044\070\367\032\205\334\130\114\313\244\047
-\102\227\320\237\203\212\303\344\006\003\133\000\245\121\036\160
-\004\164\342\301\324\072\253\327\255\073\007\030\005\216\375\203
-\254\352\146\331\030\033\150\212\365\127\032\230\272\365\355\166
-\075\174\331\336\224\152\073\113\027\301\325\217\275\145\070\072
-\225\320\075\125\066\116\337\171\127\061\052\036\330\131\145\111
-\130\040\230\176\253\137\176\237\351\326\115\354\203\164\251\307
-\154\330\356\051\112\205\052\006\024\371\124\346\323\332\145\007
-\213\143\067\022\327\320\354\303\173\040\101\104\243\355\313\240
-\027\341\161\145\316\035\146\061\367\166\001\031\310\175\003\130
-\266\225\111\035\246\022\046\350\306\014\166\340\343\146\313\352
-\135\246\046\356\345\314\137\275\147\247\001\047\016\242\312\124
-\305\261\172\225\035\161\036\112\051\212\003\334\152\105\301\244
-\031\136\157\066\315\303\242\260\267\376\134\070\342\122\274\370
-\104\103\346\220\273\002\003\001\000\001\243\202\002\122\060\202
-\002\116\060\075\006\010\053\006\001\005\005\007\001\001\004\061
-\060\057\060\055\006\010\053\006\001\005\005\007\060\001\206\041
-\150\164\164\160\163\072\057\057\157\143\163\160\056\161\165\157
-\166\141\144\151\163\157\146\146\163\150\157\162\145\056\143\157
-\155\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001
-\001\377\060\202\001\032\006\003\125\035\040\004\202\001\021\060
-\202\001\015\060\202\001\011\006\011\053\006\001\004\001\276\130
-\000\001\060\201\373\060\201\324\006\010\053\006\001\005\005\007
-\002\002\060\201\307\032\201\304\122\145\154\151\141\156\143\145
-\040\157\156\040\164\150\145\040\121\165\157\126\141\144\151\163
-\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164
-\145\040\142\171\040\141\156\171\040\160\141\162\164\171\040\141
-\163\163\165\155\145\163\040\141\143\143\145\160\164\141\156\143
-\145\040\157\146\040\164\150\145\040\164\150\145\156\040\141\160
-\160\154\151\143\141\142\154\145\040\163\164\141\156\144\141\162
-\144\040\164\145\162\155\163\040\141\156\144\040\143\157\156\144
-\151\164\151\157\156\163\040\157\146\040\165\163\145\054\040\143
-\145\162\164\151\146\151\143\141\164\151\157\156\040\160\162\141
-\143\164\151\143\145\163\054\040\141\156\144\040\164\150\145\040
-\121\165\157\126\141\144\151\163\040\103\145\162\164\151\146\151
-\143\141\164\145\040\120\157\154\151\143\171\056\060\042\006\010
-\053\006\001\005\005\007\002\001\026\026\150\164\164\160\072\057
-\057\167\167\167\056\161\165\157\166\141\144\151\163\056\142\155
-\060\035\006\003\125\035\016\004\026\004\024\213\113\155\355\323
-\051\271\006\031\354\071\071\251\360\227\204\152\313\357\337\060
-\201\256\006\003\125\035\043\004\201\246\060\201\243\200\024\213
-\113\155\355\323\051\271\006\031\354\071\071\251\360\227\204\152
-\313\357\337\241\201\204\244\201\201\060\177\061\013\060\011\006
-\003\125\004\006\023\002\102\115\061\031\060\027\006\003\125\004
-\012\023\020\121\165\157\126\141\144\151\163\040\114\151\155\151
-\164\145\144\061\045\060\043\006\003\125\004\013\023\034\122\157
-\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156
-\040\101\165\164\150\157\162\151\164\171\061\056\060\054\006\003
-\125\004\003\023\045\121\165\157\126\141\144\151\163\040\122\157
-\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156
-\040\101\165\164\150\157\162\151\164\171\202\004\072\266\120\213
-\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006
-\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003
-\202\001\001\000\212\324\024\265\376\364\232\222\247\031\324\244
-\176\162\030\217\331\150\174\122\044\335\147\157\071\172\304\252
-\136\075\342\130\260\115\160\230\204\141\350\033\343\151\030\016
-\316\373\107\120\240\116\377\360\044\037\275\262\316\365\047\374
-\354\057\123\252\163\173\003\075\164\156\346\026\236\353\245\056
-\304\277\126\047\120\053\142\272\276\113\034\074\125\134\101\035
-\044\276\202\040\107\135\325\104\176\172\026\150\337\175\115\121
-\160\170\127\035\063\036\375\002\231\234\014\315\012\005\117\307
-\273\216\244\165\372\112\155\261\200\216\011\126\271\234\032\140
-\376\135\301\327\172\334\021\170\320\326\135\301\267\325\255\062
-\231\003\072\212\314\124\045\071\061\201\173\023\042\121\272\106
-\154\241\273\236\372\004\154\111\046\164\217\322\163\353\314\060
-\242\346\352\131\042\207\370\227\365\016\375\352\314\222\244\026
-\304\122\030\352\041\316\261\361\346\204\201\345\272\251\206\050
-\362\103\132\135\022\235\254\036\331\250\345\012\152\247\177\240
-\207\051\317\362\211\115\324\354\305\342\346\172\320\066\043\212
-\112\164\066\371
-END
-CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
-CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE
-CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE
-
-# Trust for Certificate "QuoVadis Root CA"
-# Issuer: CN=QuoVadis Root Certification Authority,OU=Root Certification Authority,O=QuoVadis Limited,C=BM
-# Serial Number: 985026699 (0x3ab6508b)
-# Subject: CN=QuoVadis Root Certification Authority,OU=Root Certification Authority,O=QuoVadis Limited,C=BM
-# Not Valid Before: Mon Mar 19 18:33:33 2001
-# Not Valid After : Wed Mar 17 18:33:33 2021
-# Fingerprint (MD5): 27:DE:36:FE:72:B7:00:03:00:9D:F4:F0:1E:6C:04:24
-# Fingerprint (SHA1): DE:3F:40:BD:50:93:D3:9B:6C:60:F6:DA:BC:07:62:01:00:89:76:C9
-CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "QuoVadis Root CA"
-CKA_CERT_SHA1_HASH MULTILINE_OCTAL
-\336\077\100\275\120\223\323\233\154\140\366\332\274\007\142\001
-\000\211\166\311
-END
-CKA_CERT_MD5_HASH MULTILINE_OCTAL
-\047\336\066\376\162\267\000\003\000\235\364\360\036\154\004\044
-END
-CKA_ISSUER MULTILINE_OCTAL
-\060\177\061\013\060\011\006\003\125\004\006\023\002\102\115\061
-\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
-\151\163\040\114\151\155\151\164\145\144\061\045\060\043\006\003
-\125\004\013\023\034\122\157\157\164\040\103\145\162\164\151\146
-\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
-\171\061\056\060\054\006\003\125\004\003\023\045\121\165\157\126
-\141\144\151\163\040\122\157\157\164\040\103\145\162\164\151\146
-\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
-\171
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\004\072\266\120\213
-END
-CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
-CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
-CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
-CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
-
 #
 # Certificate "QuoVadis Root CA 2"
 #
@@ -2082,129 +1901,6 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
 CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
 CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
 
-#
-# Certificate "Sonera Class 2 Root CA"
-#
-# Issuer: CN=Sonera Class2 CA,O=Sonera,C=FI
-# Serial Number: 29 (0x1d)
-# Subject: CN=Sonera Class2 CA,O=Sonera,C=FI
-# Not Valid Before: Fri Apr 06 07:29:40 2001
-# Not Valid After : Tue Apr 06 07:29:40 2021
-# Fingerprint (MD5): A3:EC:75:0F:2E:88:DF:FA:48:01:4E:0B:5C:48:6F:FB
-# Fingerprint (SHA1): 37:F7:6D:E6:07:7C:90:C5:B1:3E:93:1A:B7:41:10:B4:F2:E4:9A:27
-CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "Sonera Class 2 Root CA"
-CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
-CKA_SUBJECT MULTILINE_OCTAL
-\060\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061
-\017\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141
-\061\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162
-\141\040\103\154\141\163\163\062\040\103\101
-END
-CKA_ID UTF8 "0"
-CKA_ISSUER MULTILINE_OCTAL
-\060\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061
-\017\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141
-\061\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162
-\141\040\103\154\141\163\163\062\040\103\101
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\001\035
-END
-CKA_VALUE MULTILINE_OCTAL
-\060\202\003\040\060\202\002\010\240\003\002\001\002\002\001\035
-\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
-\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061\017
-\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141\061
-\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162\141
-\040\103\154\141\163\163\062\040\103\101\060\036\027\015\060\061
-\060\064\060\066\060\067\062\071\064\060\132\027\015\062\061\060
-\064\060\066\060\067\062\071\064\060\132\060\071\061\013\060\011
-\006\003\125\004\006\023\002\106\111\061\017\060\015\006\003\125
-\004\012\023\006\123\157\156\145\162\141\061\031\060\027\006\003
-\125\004\003\023\020\123\157\156\145\162\141\040\103\154\141\163
-\163\062\040\103\101\060\202\001\042\060\015\006\011\052\206\110
-\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001
-\012\002\202\001\001\000\220\027\112\065\235\312\360\015\226\307
-\104\372\026\067\374\110\275\275\177\200\055\065\073\341\157\250
-\147\251\277\003\034\115\214\157\062\107\325\101\150\244\023\004
-\301\065\014\232\204\103\374\134\035\377\211\263\350\027\030\315
-\221\137\373\211\343\352\277\116\135\174\033\046\323\165\171\355
-\346\204\343\127\345\255\051\304\364\072\050\347\245\173\204\066
-\151\263\375\136\166\275\243\055\231\323\220\116\043\050\175\030
-\143\361\124\073\046\235\166\133\227\102\262\377\256\360\116\354
-\335\071\225\116\203\006\177\347\111\100\310\305\001\262\124\132
-\146\035\075\374\371\351\074\012\236\201\270\160\360\001\213\344
-\043\124\174\310\256\370\220\036\000\226\162\324\124\317\141\043
-\274\352\373\235\002\225\321\266\271\161\072\151\010\077\017\264
-\341\102\307\210\365\077\230\250\247\272\034\340\161\161\357\130
-\127\201\120\172\134\153\164\106\016\203\003\230\303\216\250\156
-\362\166\062\156\047\203\302\163\363\334\030\350\264\223\352\165
-\104\153\004\140\040\161\127\207\235\363\276\240\220\043\075\212
-\044\341\332\041\333\303\002\003\001\000\001\243\063\060\061\060
-\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377
-\060\021\006\003\125\035\016\004\012\004\010\112\240\252\130\204
-\323\136\074\060\013\006\003\125\035\017\004\004\003\002\001\006
-\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003
-\202\001\001\000\132\316\207\371\026\162\025\127\113\035\331\233
-\347\242\046\060\354\223\147\337\326\055\322\064\257\367\070\245
-\316\253\026\271\253\057\174\065\313\254\320\017\264\114\053\374
-\200\357\153\214\221\137\066\166\367\333\263\033\031\352\364\262
-\021\375\141\161\104\277\050\263\072\035\277\263\103\350\237\277
-\334\061\010\161\260\235\215\326\064\107\062\220\306\145\044\367
-\240\112\174\004\163\217\071\157\027\214\162\265\275\113\310\172
-\370\173\203\303\050\116\234\011\352\147\077\262\147\004\033\303
-\024\332\370\347\111\044\221\320\035\152\372\141\071\357\153\347
-\041\165\006\007\330\022\264\041\040\160\102\161\201\332\074\232
-\066\276\246\133\015\152\154\232\037\221\173\371\371\357\102\272
-\116\116\236\314\014\215\224\334\331\105\234\136\354\102\120\143
-\256\364\135\304\261\022\334\312\073\250\056\235\024\132\005\165
-\267\354\327\143\342\272\065\266\004\010\221\350\332\235\234\366
-\146\265\030\254\012\246\124\046\064\063\322\033\301\324\177\032
-\072\216\013\252\062\156\333\374\117\045\237\331\062\307\226\132
-\160\254\337\114
-END
-CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
-CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE
-CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE
-
-# Trust for Certificate "Sonera Class 2 Root CA"
-# Issuer: CN=Sonera Class2 CA,O=Sonera,C=FI
-# Serial Number: 29 (0x1d)
-# Subject: CN=Sonera Class2 CA,O=Sonera,C=FI
-# Not Valid Before: Fri Apr 06 07:29:40 2001
-# Not Valid After : Tue Apr 06 07:29:40 2021
-# Fingerprint (MD5): A3:EC:75:0F:2E:88:DF:FA:48:01:4E:0B:5C:48:6F:FB
-# Fingerprint (SHA1): 37:F7:6D:E6:07:7C:90:C5:B1:3E:93:1A:B7:41:10:B4:F2:E4:9A:27
-CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "Sonera Class 2 Root CA"
-CKA_CERT_SHA1_HASH MULTILINE_OCTAL
-\067\367\155\346\007\174\220\305\261\076\223\032\267\101\020\264
-\362\344\232\047
-END
-CKA_CERT_MD5_HASH MULTILINE_OCTAL
-\243\354\165\017\056\210\337\372\110\001\116\013\134\110\157\373
-END
-CKA_ISSUER MULTILINE_OCTAL
-\060\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061
-\017\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141
-\061\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162
-\141\040\103\154\141\163\163\062\040\103\101
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\001\035
-END
-CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
-CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
-CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
-CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
-
 #
 # Certificate "Camerfirma Chambers of Commerce Root"
 #
@@ -9277,140 +8973,6 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
 CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
 CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
 
-#
-# Certificate "Trustis FPS Root CA"
-#
-# Issuer: OU=Trustis FPS Root CA,O=Trustis Limited,C=GB
-# Serial Number:1b:1f:ad:b6:20:f9:24:d3:36:6b:f7:c7:f1:8c:a0:59
-# Subject: OU=Trustis FPS Root CA,O=Trustis Limited,C=GB
-# Not Valid Before: Tue Dec 23 12:14:06 2003
-# Not Valid After : Sun Jan 21 11:36:54 2024
-# Fingerprint (MD5): 30:C9:E7:1E:6B:E6:14:EB:65:B2:16:69:20:31:67:4D
-# Fingerprint (SHA1): 3B:C0:38:0B:33:C3:F6:A6:0C:86:15:22:93:D9:DF:F5:4B:81:C0:04
-CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "Trustis FPS Root CA"
-CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
-CKA_SUBJECT MULTILINE_OCTAL
-\060\105\061\013\060\011\006\003\125\004\006\023\002\107\102\061
-\030\060\026\006\003\125\004\012\023\017\124\162\165\163\164\151
-\163\040\114\151\155\151\164\145\144\061\034\060\032\006\003\125
-\004\013\023\023\124\162\165\163\164\151\163\040\106\120\123\040
-\122\157\157\164\040\103\101
-END
-CKA_ID UTF8 "0"
-CKA_ISSUER MULTILINE_OCTAL
-\060\105\061\013\060\011\006\003\125\004\006\023\002\107\102\061
-\030\060\026\006\003\125\004\012\023\017\124\162\165\163\164\151
-\163\040\114\151\155\151\164\145\144\061\034\060\032\006\003\125
-\004\013\023\023\124\162\165\163\164\151\163\040\106\120\123\040
-\122\157\157\164\040\103\101
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\020\033\037\255\266\040\371\044\323\066\153\367\307\361\214
-\240\131
-END
-CKA_VALUE MULTILINE_OCTAL
-\060\202\003\147\060\202\002\117\240\003\002\001\002\002\020\033
-\037\255\266\040\371\044\323\066\153\367\307\361\214\240\131\060
-\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\105
-\061\013\060\011\006\003\125\004\006\023\002\107\102\061\030\060
-\026\006\003\125\004\012\023\017\124\162\165\163\164\151\163\040
-\114\151\155\151\164\145\144\061\034\060\032\006\003\125\004\013
-\023\023\124\162\165\163\164\151\163\040\106\120\123\040\122\157
-\157\164\040\103\101\060\036\027\015\060\063\061\062\062\063\061
-\062\061\064\060\066\132\027\015\062\064\060\061\062\061\061\061
-\063\066\065\064\132\060\105\061\013\060\011\006\003\125\004\006
-\023\002\107\102\061\030\060\026\006\003\125\004\012\023\017\124
-\162\165\163\164\151\163\040\114\151\155\151\164\145\144\061\034
-\060\032\006\003\125\004\013\023\023\124\162\165\163\164\151\163
-\040\106\120\123\040\122\157\157\164\040\103\101\060\202\001\042
-\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003
-\202\001\017\000\060\202\001\012\002\202\001\001\000\305\120\173
-\236\073\065\320\337\304\214\315\216\233\355\243\300\066\231\364
-\102\352\247\076\200\203\017\246\247\131\207\311\220\105\103\176
-\000\352\206\171\052\003\275\075\067\231\211\146\267\345\212\126
-\206\223\234\150\113\150\004\214\223\223\002\076\060\322\067\072
-\042\141\211\034\205\116\175\217\325\257\173\065\366\176\050\107
-\211\061\334\016\171\144\037\231\322\133\272\376\177\140\277\255
-\353\347\074\070\051\152\057\345\221\013\125\377\354\157\130\325
-\055\311\336\114\146\161\217\014\327\004\332\007\346\036\030\343
-\275\051\002\250\372\034\341\133\271\203\250\101\110\274\032\161
-\215\347\142\345\055\262\353\337\174\317\333\253\132\312\061\361
-\114\042\363\005\023\367\202\371\163\171\014\276\327\113\034\300
-\321\025\074\223\101\144\321\346\276\043\027\042\000\211\136\037
-\153\245\254\156\247\113\214\355\243\162\346\257\143\115\057\205
-\322\024\065\232\056\116\214\352\062\230\050\206\241\221\011\101
-\072\264\341\343\362\372\360\311\012\242\101\335\251\343\003\307
-\210\025\073\034\324\032\224\327\237\144\131\022\155\002\003\001
-\000\001\243\123\060\121\060\017\006\003\125\035\023\001\001\377
-\004\005\060\003\001\001\377\060\037\006\003\125\035\043\004\030
-\060\026\200\024\272\372\161\045\171\213\127\101\045\041\206\013
-\161\353\262\144\016\213\041\147\060\035\006\003\125\035\016\004
-\026\004\024\272\372\161\045\171\213\127\101\045\041\206\013\161
-\353\262\144\016\213\041\147\060\015\006\011\052\206\110\206\367
-\015\001\001\005\005\000\003\202\001\001\000\176\130\377\375\065
-\031\175\234\030\117\236\260\053\274\216\214\024\377\054\240\332
-\107\133\303\357\201\055\257\005\352\164\110\133\363\076\116\007
-\307\155\305\263\223\317\042\065\134\266\077\165\047\137\011\226
-\315\240\376\276\100\014\134\022\125\370\223\202\312\051\351\136
-\077\126\127\213\070\066\367\105\032\114\050\315\236\101\270\355
-\126\114\204\244\100\310\270\260\245\053\151\160\004\152\303\370
-\324\022\062\371\016\303\261\334\062\204\104\054\157\313\106\017
-\352\146\101\017\117\361\130\245\246\015\015\017\141\336\245\236
-\135\175\145\241\074\027\347\250\125\116\357\240\307\355\306\104
-\177\124\365\243\340\217\360\174\125\042\217\051\266\201\243\341
-\155\116\054\033\200\147\354\255\040\237\014\142\141\325\227\377
-\103\355\055\301\332\135\051\052\205\077\254\145\356\206\017\005
-\215\220\137\337\356\237\364\277\356\035\373\230\344\177\220\053
-\204\170\020\016\154\111\123\357\025\133\145\106\112\135\257\272
-\373\072\162\035\315\366\045\210\036\227\314\041\234\051\001\015
-\145\353\127\331\363\127\226\273\110\315\201
-END
-CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
-CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL
-\062\060\060\067\060\061\060\060\060\060\060\060\132
-END
-CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE
-
-# Trust for "Trustis FPS Root CA"
-# Issuer: OU=Trustis FPS Root CA,O=Trustis Limited,C=GB
-# Serial Number:1b:1f:ad:b6:20:f9:24:d3:36:6b:f7:c7:f1:8c:a0:59
-# Subject: OU=Trustis FPS Root CA,O=Trustis Limited,C=GB
-# Not Valid Before: Tue Dec 23 12:14:06 2003
-# Not Valid After : Sun Jan 21 11:36:54 2024
-# Fingerprint (MD5): 30:C9:E7:1E:6B:E6:14:EB:65:B2:16:69:20:31:67:4D
-# Fingerprint (SHA1): 3B:C0:38:0B:33:C3:F6:A6:0C:86:15:22:93:D9:DF:F5:4B:81:C0:04
-CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "Trustis FPS Root CA"
-CKA_CERT_SHA1_HASH MULTILINE_OCTAL
-\073\300\070\013\063\303\366\246\014\206\025\042\223\331\337\365
-\113\201\300\004
-END
-CKA_CERT_MD5_HASH MULTILINE_OCTAL
-\060\311\347\036\153\346\024\353\145\262\026\151\040\061\147\115
-END
-CKA_ISSUER MULTILINE_OCTAL
-\060\105\061\013\060\011\006\003\125\004\006\023\002\107\102\061
-\030\060\026\006\003\125\004\012\023\017\124\162\165\163\164\151
-\163\040\114\151\155\151\164\145\144\061\034\060\032\006\003\125
-\004\013\023\023\124\162\165\163\164\151\163\040\106\120\123\040
-\122\157\157\164\040\103\101
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\020\033\037\255\266\040\371\044\323\066\153\367\307\361\214
-\240\131
-END
-CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
-CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
-CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
-CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
-
 #
 # Certificate "Buypass Class 2 Root CA"
 #
@@ -22091,3 +21653,654 @@ CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
 CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
 CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
 CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "GLOBALTRUST 2020"
+#
+# Issuer: CN=GLOBALTRUST 2020,O=e-commerce monitoring GmbH,C=AT
+# Serial Number:5a:4b:bd:5a:fb:4f:8a:5b:fa:65:e5
+# Subject: CN=GLOBALTRUST 2020,O=e-commerce monitoring GmbH,C=AT
+# Not Valid Before: Mon Feb 10 00:00:00 2020
+# Not Valid After : Sun Jun 10 00:00:00 2040
+# Fingerprint (SHA-256): 9A:29:6A:51:82:D1:D4:51:A2:E3:7F:43:9B:74:DA:AF:A2:67:52:33:29:F9:0F:9A:0D:20:07:C3:34:E2:3C:9A
+# Fingerprint (SHA1): D0:67:C1:13:51:01:0C:AA:D0:C7:6A:65:37:31:16:26:4F:53:71:A2
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GLOBALTRUST 2020"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\115\061\013\060\011\006\003\125\004\006\023\002\101\124\061
+\043\060\041\006\003\125\004\012\023\032\145\055\143\157\155\155
+\145\162\143\145\040\155\157\156\151\164\157\162\151\156\147\040
+\107\155\142\110\061\031\060\027\006\003\125\004\003\023\020\107
+\114\117\102\101\114\124\122\125\123\124\040\062\060\062\060
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\115\061\013\060\011\006\003\125\004\006\023\002\101\124\061
+\043\060\041\006\003\125\004\012\023\032\145\055\143\157\155\155
+\145\162\143\145\040\155\157\156\151\164\157\162\151\156\147\040
+\107\155\142\110\061\031\060\027\006\003\125\004\003\023\020\107
+\114\117\102\101\114\124\122\125\123\124\040\062\060\062\060
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\013\132\113\275\132\373\117\212\133\372\145\345
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\202\060\202\003\152\240\003\002\001\002\002\013\132
+\113\275\132\373\117\212\133\372\145\345\060\015\006\011\052\206
+\110\206\367\015\001\001\013\005\000\060\115\061\013\060\011\006
+\003\125\004\006\023\002\101\124\061\043\060\041\006\003\125\004
+\012\023\032\145\055\143\157\155\155\145\162\143\145\040\155\157
+\156\151\164\157\162\151\156\147\040\107\155\142\110\061\031\060
+\027\006\003\125\004\003\023\020\107\114\117\102\101\114\124\122
+\125\123\124\040\062\060\062\060\060\036\027\015\062\060\060\062
+\061\060\060\060\060\060\060\060\132\027\015\064\060\060\066\061
+\060\060\060\060\060\060\060\132\060\115\061\013\060\011\006\003
+\125\004\006\023\002\101\124\061\043\060\041\006\003\125\004\012
+\023\032\145\055\143\157\155\155\145\162\143\145\040\155\157\156
+\151\164\157\162\151\156\147\040\107\155\142\110\061\031\060\027
+\006\003\125\004\003\023\020\107\114\117\102\101\114\124\122\125
+\123\124\040\062\060\062\060\060\202\002\042\060\015\006\011\052
+\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060
+\202\002\012\002\202\002\001\000\256\056\126\255\033\034\357\366
+\225\217\240\167\033\053\323\143\217\204\115\105\242\017\237\133
+\105\253\131\173\121\064\371\354\213\212\170\305\335\153\257\275
+\304\337\223\105\036\277\221\070\013\256\016\026\347\101\163\370
+\333\273\321\270\121\340\313\203\073\163\070\156\167\212\017\131
+\143\046\315\247\052\316\124\373\270\342\300\174\107\316\140\174
+\077\262\163\362\300\031\266\212\222\207\065\015\220\050\242\344
+\025\004\143\076\272\257\356\174\136\314\246\213\120\262\070\367
+\101\143\312\316\377\151\217\150\016\225\066\345\314\271\214\011
+\312\113\335\061\220\226\310\314\037\375\126\226\064\333\216\034
+\352\054\276\205\056\143\335\252\251\225\323\375\051\225\023\360
+\310\230\223\331\055\026\107\220\021\203\242\072\042\242\050\127
+\242\353\376\300\214\050\240\246\175\347\052\102\073\202\200\143
+\245\143\037\031\314\174\262\146\250\302\323\155\067\157\342\176
+\006\121\331\105\204\037\022\316\044\122\144\205\013\110\200\116
+\207\261\042\042\060\252\353\256\276\340\002\340\100\350\260\102
+\200\003\121\252\264\176\252\104\327\103\141\363\242\153\026\211
+\111\244\243\244\053\212\002\304\170\364\150\212\301\344\172\066
+\261\157\033\226\033\167\111\215\324\311\006\162\217\317\123\343
+\334\027\205\040\112\334\230\047\323\221\046\053\107\036\151\007
+\257\336\242\344\344\324\153\013\263\136\174\324\044\200\107\051
+\151\073\156\350\254\375\100\353\330\355\161\161\053\362\350\130
+\035\353\101\227\042\305\037\324\071\320\047\217\207\343\030\364
+\340\251\106\015\365\164\072\202\056\320\156\054\221\243\061\134
+\073\106\352\173\004\020\126\136\200\035\365\245\145\350\202\374
+\342\007\214\142\105\365\040\336\106\160\206\241\274\223\323\036
+\164\246\154\260\054\367\003\014\210\014\313\324\162\123\206\274
+\140\106\363\230\152\302\361\277\103\371\160\040\167\312\067\101
+\171\125\122\143\215\133\022\237\305\150\304\210\235\254\362\060
+\253\267\243\061\227\147\255\217\027\017\154\307\163\355\044\224
+\153\310\203\232\320\232\067\111\004\253\261\026\310\154\111\111
+\055\253\241\320\214\222\362\101\112\171\041\045\333\143\327\266
+\234\247\176\102\151\373\072\143\002\003\001\000\001\243\143\060
+\141\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001
+\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002
+\001\006\060\035\006\003\125\035\016\004\026\004\024\334\056\037
+\321\141\067\171\344\253\325\325\263\022\161\150\075\152\150\234
+\042\060\037\006\003\125\035\043\004\030\060\026\200\024\334\056
+\037\321\141\067\171\344\253\325\325\263\022\161\150\075\152\150
+\234\042\060\015\006\011\052\206\110\206\367\015\001\001\013\005
+\000\003\202\002\001\000\221\360\102\002\150\100\356\303\150\300
+\124\057\337\354\142\303\303\236\212\240\061\050\252\203\216\244
+\126\226\022\020\206\126\272\227\162\322\124\060\174\255\031\325
+\035\150\157\373\024\102\330\215\016\363\265\321\245\343\002\102
+\136\334\350\106\130\007\065\002\060\340\274\164\112\301\103\052
+\377\333\032\320\260\257\154\303\375\313\263\365\177\155\003\056
+\131\126\235\055\055\065\214\262\326\103\027\054\222\012\313\135
+\350\214\017\113\160\103\320\202\377\250\314\277\244\224\300\276
+\207\275\212\343\223\173\306\217\233\026\235\047\145\274\172\305
+\102\202\154\134\007\320\251\301\210\140\104\351\230\205\026\137
+\370\217\312\001\020\316\045\303\371\140\033\240\305\227\303\323
+\054\210\061\242\275\060\354\320\320\300\022\361\301\071\343\345
+\365\370\326\112\335\064\315\373\157\301\117\343\000\213\126\342
+\222\367\050\262\102\167\162\043\147\307\077\021\025\262\304\003
+\005\276\273\021\173\012\277\250\156\347\377\130\103\317\233\147
+\240\200\007\266\035\312\255\155\352\101\021\176\055\164\223\373
+\302\274\276\121\104\305\357\150\045\047\200\343\310\240\324\022
+\354\331\245\067\035\067\174\264\221\312\332\324\261\226\201\357
+\150\134\166\020\111\257\176\245\067\200\261\034\122\275\063\201
+\114\217\371\335\145\331\024\315\212\045\130\364\342\305\203\245
+\011\220\324\154\024\143\265\100\337\353\300\374\304\130\176\015
+\024\026\207\124\047\156\126\344\160\204\270\154\062\022\176\202
+\061\103\276\327\335\174\241\255\256\326\253\040\022\357\012\303
+\020\214\111\226\065\334\013\165\136\261\117\325\117\064\016\021
+\040\007\165\103\105\351\243\021\332\254\243\231\302\266\171\047
+\342\271\357\310\342\366\065\051\172\164\372\305\177\202\005\142
+\246\012\352\150\262\171\107\006\156\362\127\250\025\063\306\367
+\170\112\075\102\173\153\176\376\367\106\352\321\353\216\357\210
+\150\133\350\301\331\161\176\375\144\357\377\147\107\210\130\045
+\057\076\206\007\275\373\250\345\202\250\254\245\323\151\103\315
+\061\210\111\204\123\222\300\261\071\033\071\203\001\060\304\362
+\251\372\320\003\275\162\067\140\126\037\066\174\275\071\221\365
+\155\015\277\173\327\222
+END
+CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
+CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE
+CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE
+
+# Trust for "GLOBALTRUST 2020"
+# Issuer: CN=GLOBALTRUST 2020,O=e-commerce monitoring GmbH,C=AT
+# Serial Number:5a:4b:bd:5a:fb:4f:8a:5b:fa:65:e5
+# Subject: CN=GLOBALTRUST 2020,O=e-commerce monitoring GmbH,C=AT
+# Not Valid Before: Mon Feb 10 00:00:00 2020
+# Not Valid After : Sun Jun 10 00:00:00 2040
+# Fingerprint (SHA-256): 9A:29:6A:51:82:D1:D4:51:A2:E3:7F:43:9B:74:DA:AF:A2:67:52:33:29:F9:0F:9A:0D:20:07:C3:34:E2:3C:9A
+# Fingerprint (SHA1): D0:67:C1:13:51:01:0C:AA:D0:C7:6A:65:37:31:16:26:4F:53:71:A2
+CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GLOBALTRUST 2020"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\320\147\301\023\121\001\014\252\320\307\152\145\067\061\026\046
+\117\123\161\242
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\212\307\157\313\155\343\314\242\361\174\203\372\016\170\327\350
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\115\061\013\060\011\006\003\125\004\006\023\002\101\124\061
+\043\060\041\006\003\125\004\012\023\032\145\055\143\157\155\155
+\145\162\143\145\040\155\157\156\151\164\157\162\151\156\147\040
+\107\155\142\110\061\031\060\027\006\003\125\004\003\023\020\107
+\114\117\102\101\114\124\122\125\123\124\040\062\060\062\060
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\013\132\113\275\132\373\117\212\133\372\145\345
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "ANF Secure Server Root CA"
+#
+# Issuer: CN=ANF Secure Server Root CA,OU=ANF CA Raiz,O=ANF Autoridad de Certificacion,C=ES,serialNumber=G63287510
+# Serial Number:0d:d3:e3:bc:6c:f9:6b:b1
+# Subject: CN=ANF Secure Server Root CA,OU=ANF CA Raiz,O=ANF Autoridad de Certificacion,C=ES,serialNumber=G63287510
+# Not Valid Before: Wed Sep 04 10:00:38 2019
+# Not Valid After : Tue Aug 30 10:00:38 2039
+# Fingerprint (SHA-256): FB:8F:EC:75:91:69:B9:10:6B:1E:51:16:44:C6:18:C5:13:04:37:3F:6C:06:43:08:8D:8B:EF:FD:1B:99:75:99
+# Fingerprint (SHA1): 5B:6E:68:D0:CC:15:B6:A0:5F:1E:C1:5F:AE:02:FC:6B:2F:5D:6F:74
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ANF Secure Server Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\204\061\022\060\020\006\003\125\004\005\023\011\107\066
+\063\062\070\067\065\061\060\061\013\060\011\006\003\125\004\006
+\023\002\105\123\061\047\060\045\006\003\125\004\012\023\036\101
+\116\106\040\101\165\164\157\162\151\144\141\144\040\144\145\040
+\103\145\162\164\151\146\151\143\141\143\151\157\156\061\024\060
+\022\006\003\125\004\013\023\013\101\116\106\040\103\101\040\122
+\141\151\172\061\042\060\040\006\003\125\004\003\023\031\101\116
+\106\040\123\145\143\165\162\145\040\123\145\162\166\145\162\040
+\122\157\157\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\204\061\022\060\020\006\003\125\004\005\023\011\107\066
+\063\062\070\067\065\061\060\061\013\060\011\006\003\125\004\006
+\023\002\105\123\061\047\060\045\006\003\125\004\012\023\036\101
+\116\106\040\101\165\164\157\162\151\144\141\144\040\144\145\040
+\103\145\162\164\151\146\151\143\141\143\151\157\156\061\024\060
+\022\006\003\125\004\013\023\013\101\116\106\040\103\101\040\122
+\141\151\172\061\042\060\040\006\003\125\004\003\023\031\101\116
+\106\040\123\145\143\165\162\145\040\123\145\162\166\145\162\040
+\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\010\015\323\343\274\154\371\153\261
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\357\060\202\003\327\240\003\002\001\002\002\010\015
+\323\343\274\154\371\153\261\060\015\006\011\052\206\110\206\367
+\015\001\001\013\005\000\060\201\204\061\022\060\020\006\003\125
+\004\005\023\011\107\066\063\062\070\067\065\061\060\061\013\060
+\011\006\003\125\004\006\023\002\105\123\061\047\060\045\006\003
+\125\004\012\023\036\101\116\106\040\101\165\164\157\162\151\144
+\141\144\040\144\145\040\103\145\162\164\151\146\151\143\141\143
+\151\157\156\061\024\060\022\006\003\125\004\013\023\013\101\116
+\106\040\103\101\040\122\141\151\172\061\042\060\040\006\003\125
+\004\003\023\031\101\116\106\040\123\145\143\165\162\145\040\123
+\145\162\166\145\162\040\122\157\157\164\040\103\101\060\036\027
+\015\061\071\060\071\060\064\061\060\060\060\063\070\132\027\015
+\063\071\060\070\063\060\061\060\060\060\063\070\132\060\201\204
+\061\022\060\020\006\003\125\004\005\023\011\107\066\063\062\070
+\067\065\061\060\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\047\060\045\006\003\125\004\012\023\036\101\116\106\040
+\101\165\164\157\162\151\144\141\144\040\144\145\040\103\145\162
+\164\151\146\151\143\141\143\151\157\156\061\024\060\022\006\003
+\125\004\013\023\013\101\116\106\040\103\101\040\122\141\151\172
+\061\042\060\040\006\003\125\004\003\023\031\101\116\106\040\123
+\145\143\165\162\145\040\123\145\162\166\145\162\040\122\157\157
+\164\040\103\101\060\202\002\042\060\015\006\011\052\206\110\206
+\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002\012
+\002\202\002\001\000\333\353\153\053\346\144\124\225\202\220\243
+\162\244\031\001\235\234\013\201\137\163\111\272\247\254\363\004
+\116\173\226\013\354\021\340\133\246\034\316\033\322\015\203\034
+\053\270\236\035\176\105\062\140\017\007\351\167\130\176\237\152
+\310\141\116\266\046\301\114\215\377\114\357\064\262\037\145\330
+\271\170\365\255\251\161\271\357\117\130\035\245\336\164\040\227
+\241\355\150\114\336\222\027\113\274\253\377\145\232\236\373\107
+\331\127\162\363\011\241\256\166\104\023\156\234\055\104\071\274
+\371\307\073\244\130\075\101\275\264\302\111\243\310\015\322\227
+\057\007\145\122\000\247\156\310\257\150\354\364\024\226\266\127
+\037\126\303\071\237\053\155\344\363\076\366\065\144\332\014\034
+\241\204\113\057\113\113\342\054\044\235\155\223\100\353\265\043
+\216\062\312\157\105\323\250\211\173\036\317\036\372\133\103\213
+\315\315\250\017\152\312\014\136\271\236\107\217\360\331\266\012
+\013\130\145\027\063\271\043\344\167\031\175\313\112\056\222\173
+\117\057\020\167\261\215\057\150\234\142\314\340\120\370\354\221
+\247\124\114\127\011\325\166\143\305\350\145\036\356\155\152\317
+\011\235\372\174\117\255\140\010\375\126\231\017\025\054\173\251
+\200\253\214\141\217\112\007\166\102\336\075\364\335\262\044\063
+\133\270\265\243\104\311\254\177\167\074\035\043\354\202\251\246
+\342\310\006\114\002\376\254\134\231\231\013\057\020\212\246\364
+\177\325\207\164\015\131\111\105\366\360\161\134\071\051\326\277
+\112\043\213\365\137\001\143\322\207\163\050\265\113\012\365\370
+\253\202\054\176\163\045\062\035\013\143\012\027\201\000\377\266
+\166\136\347\264\261\100\312\041\273\325\200\121\345\110\122\147
+\054\322\141\211\007\015\017\316\102\167\300\104\163\234\104\120
+\240\333\020\012\055\225\034\201\257\344\034\345\024\036\361\066
+\101\001\002\057\175\163\247\336\102\314\114\351\211\015\126\367
+\237\221\324\003\306\154\311\217\333\330\034\340\100\230\135\146
+\231\230\200\156\055\377\001\305\316\313\106\037\254\002\306\103
+\346\256\242\204\074\305\116\036\075\155\311\024\114\343\056\101
+\273\312\071\277\066\074\052\031\252\101\207\116\245\316\113\062
+\171\335\220\111\177\002\003\001\000\001\243\143\060\141\060\037
+\006\003\125\035\043\004\030\060\026\200\024\234\137\320\154\143
+\243\137\223\312\223\230\010\255\214\207\245\054\134\301\067\060
+\035\006\003\125\035\016\004\026\004\024\234\137\320\154\143\243
+\137\223\312\223\230\010\255\214\207\245\054\134\301\067\060\016
+\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060\017
+\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060
+\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003\202
+\002\001\000\116\036\271\212\306\240\230\077\156\303\151\300\152
+\134\111\122\254\313\053\135\170\070\301\325\124\204\237\223\360
+\207\031\075\054\146\211\353\015\102\374\314\360\165\205\077\213
+\364\200\135\171\345\027\147\275\065\202\342\362\074\216\175\133
+\066\313\132\200\000\051\362\316\053\054\361\217\252\155\005\223
+\154\162\307\126\353\337\120\043\050\345\105\020\075\350\147\243
+\257\016\125\017\220\011\142\357\113\131\242\366\123\361\300\065
+\344\057\301\044\275\171\057\116\040\042\073\375\032\040\260\244
+\016\054\160\355\164\077\270\023\225\006\121\310\350\207\046\312
+\244\133\152\026\041\222\335\163\140\236\020\030\336\074\201\352
+\350\030\303\174\211\362\213\120\076\275\021\342\025\003\250\066
+\175\063\001\154\110\025\327\210\220\231\004\305\314\346\007\364
+\274\364\220\355\023\342\352\213\303\217\243\063\017\301\051\114
+\023\116\332\025\126\161\163\162\202\120\366\232\063\174\242\261
+\250\032\064\164\145\134\316\321\353\253\123\340\032\200\330\352
+\072\111\344\046\060\233\345\034\212\250\251\025\062\206\231\222
+\012\020\043\126\022\340\366\316\114\342\273\276\333\215\222\163
+\001\146\057\142\076\262\162\047\105\066\355\115\126\343\227\231
+\377\072\065\076\245\124\112\122\131\113\140\333\356\376\170\021
+\177\112\334\024\171\140\266\153\144\003\333\025\203\341\242\276
+\366\043\227\120\360\011\063\066\247\161\226\045\363\271\102\175
+\333\070\077\054\130\254\350\102\341\016\330\323\073\114\056\202
+\351\203\056\153\061\331\335\107\206\117\155\227\221\056\117\342
+\050\161\065\026\321\362\163\376\045\053\007\107\044\143\047\310
+\370\366\331\153\374\022\061\126\010\300\123\102\257\234\320\063
+\176\374\006\360\061\104\003\024\361\130\352\362\152\015\251\021
+\262\203\276\305\032\277\007\352\131\334\243\210\065\357\234\166
+\062\074\115\006\042\316\025\345\335\236\330\217\332\336\322\304
+\071\345\027\201\317\070\107\353\177\210\155\131\033\337\237\102
+\024\256\176\317\250\260\146\145\332\067\257\237\252\075\352\050
+\266\336\325\061\130\026\202\133\352\273\031\165\002\163\032\312
+\110\032\041\223\220\012\216\223\204\247\175\073\043\030\222\211
+\240\215\254
+END
+CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
+CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE
+CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE
+
+# Trust for "ANF Secure Server Root CA"
+# Issuer: CN=ANF Secure Server Root CA,OU=ANF CA Raiz,O=ANF Autoridad de Certificacion,C=ES,serialNumber=G63287510
+# Serial Number:0d:d3:e3:bc:6c:f9:6b:b1
+# Subject: CN=ANF Secure Server Root CA,OU=ANF CA Raiz,O=ANF Autoridad de Certificacion,C=ES,serialNumber=G63287510
+# Not Valid Before: Wed Sep 04 10:00:38 2019
+# Not Valid After : Tue Aug 30 10:00:38 2039
+# Fingerprint (SHA-256): FB:8F:EC:75:91:69:B9:10:6B:1E:51:16:44:C6:18:C5:13:04:37:3F:6C:06:43:08:8D:8B:EF:FD:1B:99:75:99
+# Fingerprint (SHA1): 5B:6E:68:D0:CC:15:B6:A0:5F:1E:C1:5F:AE:02:FC:6B:2F:5D:6F:74
+CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ANF Secure Server Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\133\156\150\320\314\025\266\240\137\036\301\137\256\002\374\153
+\057\135\157\164
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\046\246\104\132\331\257\116\057\262\035\266\145\260\116\350\226
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\204\061\022\060\020\006\003\125\004\005\023\011\107\066
+\063\062\070\067\065\061\060\061\013\060\011\006\003\125\004\006
+\023\002\105\123\061\047\060\045\006\003\125\004\012\023\036\101
+\116\106\040\101\165\164\157\162\151\144\141\144\040\144\145\040
+\103\145\162\164\151\146\151\143\141\143\151\157\156\061\024\060
+\022\006\003\125\004\013\023\013\101\116\106\040\103\101\040\122
+\141\151\172\061\042\060\040\006\003\125\004\003\023\031\101\116
+\106\040\123\145\143\165\162\145\040\123\145\162\166\145\162\040
+\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\010\015\323\343\274\154\371\153\261
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Certum EC-384 CA"
+#
+# Issuer: CN=Certum EC-384 CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL
+# Serial Number:78:8f:27:5c:81:12:52:20:a5:04:d0:2d:dd:ba:73:f4
+# Subject: CN=Certum EC-384 CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL
+# Not Valid Before: Mon Mar 26 07:24:54 2018
+# Not Valid After : Thu Mar 26 07:24:54 2043
+# Fingerprint (SHA-256): 6B:32:80:85:62:53:18:AA:50:D1:73:C9:8D:8B:DA:09:D5:7E:27:41:3D:11:4C:F7:87:A0:F5:D0:6C:03:0C:F6
+# Fingerprint (SHA1): F3:3E:78:3C:AC:DF:F4:A2:CC:AC:67:55:69:56:D7:E5:16:3C:E1:ED
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certum EC-384 CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\164\061\013\060\011\006\003\125\004\006\023\002\120\114\061
+\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157
+\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056
+\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162
+\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\031\060\027\006
+\003\125\004\003\023\020\103\145\162\164\165\155\040\105\103\055
+\063\070\064\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\164\061\013\060\011\006\003\125\004\006\023\002\120\114\061
+\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157
+\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056
+\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162
+\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\031\060\027\006
+\003\125\004\003\023\020\103\145\162\164\165\155\040\105\103\055
+\063\070\064\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\170\217\047\134\201\022\122\040\245\004\320\055\335\272
+\163\364
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\145\060\202\001\353\240\003\002\001\002\002\020\170
+\217\047\134\201\022\122\040\245\004\320\055\335\272\163\364\060
+\012\006\010\052\206\110\316\075\004\003\003\060\164\061\013\060
+\011\006\003\125\004\006\023\002\120\114\061\041\060\037\006\003
+\125\004\012\023\030\101\163\163\145\143\157\040\104\141\164\141
+\040\123\171\163\164\145\155\163\040\123\056\101\056\061\047\060
+\045\006\003\125\004\013\023\036\103\145\162\164\165\155\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\031\060\027\006\003\125\004\003\023
+\020\103\145\162\164\165\155\040\105\103\055\063\070\064\040\103
+\101\060\036\027\015\061\070\060\063\062\066\060\067\062\064\065
+\064\132\027\015\064\063\060\063\062\066\060\067\062\064\065\064
+\132\060\164\061\013\060\011\006\003\125\004\006\023\002\120\114
+\061\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143
+\157\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123
+\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145
+\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171\061\031\060\027
+\006\003\125\004\003\023\020\103\145\162\164\165\155\040\105\103
+\055\063\070\064\040\103\101\060\166\060\020\006\007\052\206\110
+\316\075\002\001\006\005\053\201\004\000\042\003\142\000\004\304
+\050\216\253\030\133\152\276\156\144\067\143\344\315\354\253\072
+\367\314\241\270\016\202\111\327\206\051\237\241\224\362\343\140
+\170\230\201\170\006\115\362\354\232\016\127\140\203\237\264\346
+\027\057\032\263\135\002\133\211\043\074\302\021\005\052\247\210
+\023\030\363\120\204\327\275\064\054\047\211\125\377\316\114\347
+\337\246\037\050\304\360\124\303\271\174\267\123\255\353\302\243
+\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060
+\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\215
+\006\146\164\044\166\072\363\211\367\274\326\275\107\175\057\274
+\020\137\113\060\016\006\003\125\035\017\001\001\377\004\004\003
+\002\001\006\060\012\006\010\052\206\110\316\075\004\003\003\003
+\150\000\060\145\002\060\003\125\055\246\346\030\304\174\357\311
+\120\156\301\047\017\234\207\257\156\325\033\010\030\275\222\051
+\301\357\224\221\170\322\072\034\125\211\142\345\033\011\036\272
+\144\153\361\166\264\324\002\061\000\264\102\204\231\377\253\347
+\236\373\221\227\047\135\334\260\133\060\161\316\136\070\032\152
+\331\045\347\352\367\141\222\126\370\352\332\066\302\207\145\226
+\056\162\045\057\177\337\303\023\311
+END
+CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
+CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE
+CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE
+
+# Trust for "Certum EC-384 CA"
+# Issuer: CN=Certum EC-384 CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL
+# Serial Number:78:8f:27:5c:81:12:52:20:a5:04:d0:2d:dd:ba:73:f4
+# Subject: CN=Certum EC-384 CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL
+# Not Valid Before: Mon Mar 26 07:24:54 2018
+# Not Valid After : Thu Mar 26 07:24:54 2043
+# Fingerprint (SHA-256): 6B:32:80:85:62:53:18:AA:50:D1:73:C9:8D:8B:DA:09:D5:7E:27:41:3D:11:4C:F7:87:A0:F5:D0:6C:03:0C:F6
+# Fingerprint (SHA1): F3:3E:78:3C:AC:DF:F4:A2:CC:AC:67:55:69:56:D7:E5:16:3C:E1:ED
+CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certum EC-384 CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\363\076\170\074\254\337\364\242\314\254\147\125\151\126\327\345
+\026\074\341\355
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\266\145\263\226\140\227\022\241\354\116\341\075\243\306\311\361
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\164\061\013\060\011\006\003\125\004\006\023\002\120\114\061
+\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157
+\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056
+\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162
+\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\031\060\027\006
+\003\125\004\003\023\020\103\145\162\164\165\155\040\105\103\055
+\063\070\064\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\170\217\047\134\201\022\122\040\245\004\320\055\335\272
+\163\364
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Certum Trusted Root CA"
+#
+# Issuer: CN=Certum Trusted Root CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL
+# Serial Number:1e:bf:59:50:b8:c9:80:37:4c:06:f7:eb:55:4f:b5:ed
+# Subject: CN=Certum Trusted Root CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL
+# Not Valid Before: Fri Mar 16 12:10:13 2018
+# Not Valid After : Mon Mar 16 12:10:13 2043
+# Fingerprint (SHA-256): FE:76:96:57:38:55:77:3E:37:A9:5E:7A:D4:D9:CC:96:C3:01:57:C1:5D:31:76:5B:A9:B1:57:04:E1:AE:78:FD
+# Fingerprint (SHA1): C8:83:44:C0:18:AE:9F:CC:F1:87:B7:8F:22:D1:C5:D7:45:84:BA:E5
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certum Trusted Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\172\061\013\060\011\006\003\125\004\006\023\002\120\114\061
+\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157
+\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056
+\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162
+\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\037\060\035\006
+\003\125\004\003\023\026\103\145\162\164\165\155\040\124\162\165
+\163\164\145\144\040\122\157\157\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\172\061\013\060\011\006\003\125\004\006\023\002\120\114\061
+\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157
+\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056
+\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162
+\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\037\060\035\006
+\003\125\004\003\023\026\103\145\162\164\165\155\040\124\162\165
+\163\164\145\144\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\036\277\131\120\270\311\200\067\114\006\367\353\125\117
+\265\355
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\300\060\202\003\250\240\003\002\001\002\002\020\036
+\277\131\120\270\311\200\067\114\006\367\353\125\117\265\355\060
+\015\006\011\052\206\110\206\367\015\001\001\015\005\000\060\172
+\061\013\060\011\006\003\125\004\006\023\002\120\114\061\041\060
+\037\006\003\125\004\012\023\030\101\163\163\145\143\157\040\104
+\141\164\141\040\123\171\163\164\145\155\163\040\123\056\101\056
+\061\047\060\045\006\003\125\004\013\023\036\103\145\162\164\165
+\155\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\037\060\035\006\003\125
+\004\003\023\026\103\145\162\164\165\155\040\124\162\165\163\164
+\145\144\040\122\157\157\164\040\103\101\060\036\027\015\061\070
+\060\063\061\066\061\062\061\060\061\063\132\027\015\064\063\060
+\063\061\066\061\062\061\060\061\063\132\060\172\061\013\060\011
+\006\003\125\004\006\023\002\120\114\061\041\060\037\006\003\125
+\004\012\023\030\101\163\163\145\143\157\040\104\141\164\141\040
+\123\171\163\164\145\155\163\040\123\056\101\056\061\047\060\045
+\006\003\125\004\013\023\036\103\145\162\164\165\155\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171\061\037\060\035\006\003\125\004\003\023\026
+\103\145\162\164\165\155\040\124\162\165\163\164\145\144\040\122
+\157\157\164\040\103\101\060\202\002\042\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202
+\002\012\002\202\002\001\000\321\055\216\273\267\066\352\155\067
+\221\237\116\223\247\005\344\051\003\045\316\034\202\367\174\231
+\237\101\006\315\355\243\272\300\333\011\054\301\174\337\051\176
+\113\145\057\223\247\324\001\153\003\050\030\243\330\235\005\301
+\052\330\105\361\221\336\337\073\320\200\002\214\317\070\017\352
+\247\134\170\021\244\301\310\205\134\045\323\323\262\347\045\317
+\021\124\227\253\065\300\036\166\034\357\000\123\237\071\334\024
+\245\054\042\045\263\162\162\374\215\263\345\076\010\036\024\052
+\067\013\210\074\312\260\364\310\302\241\256\274\301\276\051\147
+\125\342\374\255\131\134\376\275\127\054\260\220\215\302\355\067
+\266\174\231\210\265\325\003\232\075\025\015\075\072\250\250\105
+\360\225\116\045\131\035\315\230\151\273\323\314\062\311\215\357
+\201\376\255\175\211\273\272\140\023\312\145\225\147\240\363\031
+\366\003\126\324\152\323\047\342\241\255\203\360\112\022\042\167
+\034\005\163\342\031\161\102\300\354\165\106\232\220\130\340\152
+\216\053\245\106\060\004\216\031\262\027\343\276\251\272\177\126
+\361\044\003\327\262\041\050\166\016\066\060\114\171\325\101\232
+\232\250\270\065\272\014\072\362\104\033\040\210\367\305\045\327
+\075\306\343\076\103\335\207\376\304\352\365\123\076\114\145\377
+\073\112\313\170\132\153\027\137\015\307\303\117\116\232\052\242
+\355\127\115\042\342\106\232\077\017\221\064\044\175\125\343\214
+\225\067\323\032\360\011\053\054\322\311\215\264\015\000\253\147
+\051\050\330\001\365\031\004\266\035\276\166\376\162\134\304\205
+\312\322\200\101\337\005\250\243\325\204\220\117\013\363\340\077
+\233\031\322\067\211\077\362\173\122\034\214\366\341\367\074\007
+\227\214\016\242\131\201\014\262\220\075\323\343\131\106\355\017
+\251\247\336\200\153\132\252\007\266\031\313\274\127\363\227\041
+\172\014\261\053\164\076\353\332\247\147\055\114\304\230\236\066
+\011\166\146\146\374\032\077\352\110\124\034\276\060\275\200\120
+\277\174\265\316\000\366\014\141\331\347\044\003\340\343\001\201
+\016\275\330\205\064\210\275\262\066\250\173\134\010\345\104\200
+\214\157\370\057\325\041\312\035\034\320\373\304\265\207\321\072
+\116\307\166\265\065\110\265\002\003\001\000\001\243\102\060\100
+\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001
+\377\060\035\006\003\125\035\016\004\026\004\024\214\373\034\165
+\274\002\323\237\116\056\110\331\371\140\124\252\304\263\117\372
+\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006
+\060\015\006\011\052\206\110\206\367\015\001\001\015\005\000\003
+\202\002\001\000\110\242\325\000\013\056\320\077\274\034\325\265
+\124\111\036\132\153\364\344\362\340\100\067\340\314\024\173\271
+\311\372\065\265\165\027\223\152\005\151\205\234\315\117\031\170
+\133\031\201\363\143\076\303\316\133\217\365\057\136\001\166\023
+\077\054\000\271\315\226\122\071\111\155\004\116\305\351\017\206
+\015\341\372\263\137\202\022\361\072\316\146\006\044\064\053\350
+\314\312\347\151\334\207\235\302\064\327\171\321\323\167\270\252
+\131\130\376\235\046\372\070\206\076\235\212\207\144\127\345\027
+\072\342\371\215\271\343\063\170\301\220\330\270\335\267\203\121
+\344\304\314\043\325\006\174\346\121\323\315\064\061\300\366\106
+\273\013\255\374\075\020\005\052\073\112\221\045\356\214\324\204
+\207\200\052\274\011\214\252\072\023\137\350\064\171\120\301\020
+\031\371\323\050\036\324\321\121\060\051\263\256\220\147\326\037
+\012\143\261\305\251\306\102\061\143\027\224\357\151\313\057\372
+\214\024\175\304\103\030\211\331\360\062\100\346\200\342\106\137
+\345\343\301\000\131\250\371\350\040\274\211\054\016\107\064\013
+\352\127\302\123\066\374\247\324\257\061\315\376\002\345\165\372
+\271\047\011\371\363\365\073\312\175\237\251\042\313\210\311\252
+\321\107\075\066\167\250\131\144\153\047\317\357\047\301\343\044
+\265\206\367\256\176\062\115\260\171\150\321\071\350\220\130\303
+\203\274\017\054\326\227\353\316\014\341\040\307\332\267\076\303
+\077\277\057\334\064\244\373\053\041\315\147\217\113\364\343\352
+\324\077\347\117\272\271\245\223\105\034\146\037\041\372\144\136
+\157\340\166\224\062\313\165\365\156\345\366\217\307\270\244\314
+\250\226\175\144\373\044\132\112\003\154\153\070\306\350\003\103
+\232\367\127\271\263\051\151\223\070\364\003\362\273\373\202\153
+\007\040\321\122\037\232\144\002\173\230\146\333\134\115\132\017
+\320\204\225\240\074\024\103\006\312\312\333\270\101\066\332\152
+\104\147\207\257\257\343\105\021\025\151\010\262\276\026\071\227
+\044\157\022\105\321\147\135\011\250\311\025\332\372\322\246\137
+\023\141\037\277\205\254\264\255\255\005\224\010\203\036\165\027
+\323\161\073\223\120\043\131\240\355\074\221\124\235\166\000\305
+\303\270\070\333
+END
+CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
+CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE
+CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE
+
+# Trust for "Certum Trusted Root CA"
+# Issuer: CN=Certum Trusted Root CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL
+# Serial Number:1e:bf:59:50:b8:c9:80:37:4c:06:f7:eb:55:4f:b5:ed
+# Subject: CN=Certum Trusted Root CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL
+# Not Valid Before: Fri Mar 16 12:10:13 2018
+# Not Valid After : Mon Mar 16 12:10:13 2043
+# Fingerprint (SHA-256): FE:76:96:57:38:55:77:3E:37:A9:5E:7A:D4:D9:CC:96:C3:01:57:C1:5D:31:76:5B:A9:B1:57:04:E1:AE:78:FD
+# Fingerprint (SHA1): C8:83:44:C0:18:AE:9F:CC:F1:87:B7:8F:22:D1:C5:D7:45:84:BA:E5
+CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certum Trusted Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\310\203\104\300\030\256\237\314\361\207\267\217\042\321\305\327
+\105\204\272\345
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\121\341\302\347\376\114\204\257\131\016\057\364\124\157\352\051
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\172\061\013\060\011\006\003\125\004\006\023\002\120\114\061
+\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157
+\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056
+\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162
+\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\037\060\035\006
+\003\125\004\003\023\026\103\145\162\164\165\155\040\124\162\165
+\163\164\145\144\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\036\277\131\120\270\311\200\067\114\006\367\353\125\117
+\265\355
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
index 1ad4de65013fe66c8d3e36fb62c370256b865289..334e2d9bbdd9f0b383ad0a960c579985c4d79ad1 100644 (file)
@@ -34,6 +34,11 @@ block_subnet() {
        local subnet="${1}"
        local action="${2}"
 
+       # Nothing to be done if no action is requested
+       if [ "${action}" = "none" ]; then
+               return 0
+       fi
+
        # Don't block a wildcard subnet
        if [ "${subnet}" = "0.0.0.0/0" ] || [ "${subnet}" = "0.0.0.0/0.0.0.0" ]; then
                return 0
@@ -108,7 +113,7 @@ install_policy() {
 
                case "${route}" in
                        route)
-                               action="drop"
+                               action="none"
                                ;;
                        *)
                                action="reject"
index 3a0a52378f44f1194fb03b409441949c7a7c6012..86fa084fd253beec9de9af18d3c847cf27c29821 100644 (file)
@@ -12,7 +12,7 @@ usr/bin/fusermount3
 #usr/include/fuse3/fuse_opt.h
 #usr/lib/libfuse3.so
 usr/lib/libfuse3.so.3
-usr/lib/libfuse3.so.3.10.3
+usr/lib/libfuse3.so.3.10.4
 #usr/lib/pkgconfig/fuse3.pc
 #usr/share/man/man1/fusermount3.1
 #usr/share/man/man8/mount.fuse3.8
index bbfa11b5d7ec4a96fc3eb2a0a5293ce78cd36581..d3973a99d96bcd0eb138a539e397c5b83005dad4 100644 (file)
 #usr/lib/glib-2.0/include/glibconfig.h
 #usr/lib/libgio-2.0.so
 usr/lib/libgio-2.0.so.0
-usr/lib/libgio-2.0.so.0.6800.2
+usr/lib/libgio-2.0.so.0.6800.3
 #usr/lib/libglib-2.0.so
 usr/lib/libglib-2.0.so.0
-usr/lib/libglib-2.0.so.0.6800.2
+usr/lib/libglib-2.0.so.0.6800.3
 #usr/lib/libgmodule-2.0.so
 usr/lib/libgmodule-2.0.so.0
-usr/lib/libgmodule-2.0.so.0.6800.2
+usr/lib/libgmodule-2.0.so.0.6800.3
 #usr/lib/libgobject-2.0.so
 usr/lib/libgobject-2.0.so.0
-usr/lib/libgobject-2.0.so.0.6800.2
+usr/lib/libgobject-2.0.so.0.6800.3
 #usr/lib/libgthread-2.0.so
 usr/lib/libgthread-2.0.so.0
-usr/lib/libgthread-2.0.so.0.6800.2
+usr/lib/libgthread-2.0.so.0.6800.3
 #usr/lib/pkgconfig/gio-2.0.pc
 #usr/lib/pkgconfig/gio-unix-2.0.pc
 #usr/lib/pkgconfig/glib-2.0.pc
@@ -326,8 +326,8 @@ usr/lib/libgthread-2.0.so.0.6800.2
 #usr/share/gdb/auto-load
 #usr/share/gdb/auto-load/usr
 #usr/share/gdb/auto-load/usr/lib
-#usr/share/gdb/auto-load/usr/lib/libglib-2.0.so.0.6800.2-gdb.py
-#usr/share/gdb/auto-load/usr/lib/libgobject-2.0.so.0.6800.2-gdb.py
+#usr/share/gdb/auto-load/usr/lib/libglib-2.0.so.0.6800.3-gdb.py
+#usr/share/gdb/auto-load/usr/lib/libgobject-2.0.so.0.6800.3-gdb.py
 #usr/share/gettext/its
 #usr/share/gettext/its/gschema.its
 #usr/share/gettext/its/gschema.loc
index c97b9e8c0355e6b1ea04a22d53b37ca1c8e5208b..514f57558b05d7506dcff1626330ea88ce866b78 100644 (file)
@@ -21,7 +21,7 @@
 #usr/lib/libpcap.a
 usr/lib/libpcap.so
 usr/lib/libpcap.so.1
-usr/lib/libpcap.so.1.10.0
+usr/lib/libpcap.so.1.10.1
 #usr/lib/pkgconfig/libpcap.pc
 #usr/share/man/man1/pcap-config.1
 #usr/share/man/man3/pcap.3pcap
index e7a6a30739ffab4e4f8f9d50efe15fa62af3731b..e39449614e2add6c6fc82440d72748cb041c9bbd 100644 (file)
@@ -8,6 +8,7 @@ srv/web/ipfire/cgi-bin/pakfire.cgi
 srv/web/ipfire/cgi-bin/traffic.cgi
 srv/web/ipfire/cgi-bin/vpnmain.cgi
 srv/web/ipfire/html/images/apple.png
+usr/lib/firewall/ipsec-policy
 var/ipfire/backup/bin/backup.pl
 var/ipfire/countries.pl
 var/ipfire/general-functions.pl
diff --git a/config/rootfiles/core/158/filelists/fuse b/config/rootfiles/core/158/filelists/fuse
new file mode 120000 (symlink)
index 0000000..570edaa
--- /dev/null
@@ -0,0 +1 @@
+../../../common/fuse
\ No newline at end of file
diff --git a/config/rootfiles/core/158/filelists/hwdata b/config/rootfiles/core/158/filelists/hwdata
new file mode 120000 (symlink)
index 0000000..ced9116
--- /dev/null
@@ -0,0 +1 @@
+../../../common/hwdata
\ No newline at end of file
diff --git a/config/rootfiles/core/158/filelists/libpcap b/config/rootfiles/core/158/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/158/filelists/smartmontools b/config/rootfiles/core/158/filelists/smartmontools
new file mode 120000 (symlink)
index 0000000..fb66daf
--- /dev/null
@@ -0,0 +1 @@
+../../../common/smartmontools
\ No newline at end of file
diff --git a/config/rootfiles/core/158/filelists/sudo b/config/rootfiles/core/158/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/158/filelists/xfsprogs b/config/rootfiles/core/158/filelists/xfsprogs
new file mode 120000 (symlink)
index 0000000..9103296
--- /dev/null
@@ -0,0 +1 @@
+../../../common/xfsprogs
\ No newline at end of file
index 83411e4ac0b78297eaa68465fde756380ebdd846..78ad33ad249079ebeb7c38c2fd83f774930b2b61 100644 (file)
@@ -2,7 +2,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        #
@@ -226,8 +226,6 @@ $proxysettings{'THROTTLING_GREEN_HOST'} = 'unlimited';
 $proxysettings{'THROTTLING_BLUE_TOTAL'} = 'unlimited';
 $proxysettings{'THROTTLING_BLUE_HOST'} = 'unlimited';
 $proxysettings{'ENABLE_MIME_FILTER'} = 'off';
-$proxysettings{'FAKE_USERAGENT'} = '';
-$proxysettings{'FAKE_REFERER'} = '';
 $proxysettings{'AUTH_METHOD'} = 'none';
 $proxysettings{'AUTH_REALM'} = '';
 $proxysettings{'AUTH_MAX_USERIP'} = '';
@@ -1629,21 +1627,6 @@ END
 print <<END
 </table>
 
-<hr size='1'>
-
-<table width='100%'>
-<tr>
-       <td><b>$Lang::tr{'advproxy privacy'}</b></td>
-</tr>
-<tr>
-       <td class='base'>$Lang::tr{'advproxy fake useragent'}:</td>
-       <td class='base'>$Lang::tr{'advproxy fake referer'}:</td>
-</tr>
-<tr>
-       <td><input type='text' name='FAKE_USERAGENT' value='$proxysettings{'FAKE_USERAGENT'}' size='40%' /></td>
-       <td><input type='text' name='FAKE_REFERER' value='$proxysettings{'FAKE_REFERER'}' size='40%' /></td>
-</tr>
-</table>
 <hr size='1'>
 END
 ;
@@ -3846,8 +3829,7 @@ END
 
        print FILE "http_access deny  all\n\n";
 
-       if (($proxysettings{'FORWARD_IPADDRESS'} eq 'off') || ($proxysettings{'FORWARD_VIA'} eq 'off') ||
-               (!($proxysettings{'FAKE_USERAGENT'} eq '')) || (!($proxysettings{'FAKE_REFERER'} eq '')))
+       if (($proxysettings{'FORWARD_IPADDRESS'} eq 'off') || ($proxysettings{'FORWARD_VIA'} eq 'off'))
        {
                print FILE "#Strip HTTP Header\n";
 
@@ -3861,31 +3843,9 @@ END
                        print FILE "request_header_access Via deny all\n";
                        print FILE "reply_header_access Via deny all\n";
                }
-               if (!($proxysettings{'FAKE_USERAGENT'} eq ''))
-               {
-                       print FILE "request_header_access User-Agent deny all\n";
-                       print FILE "reply_header_access User-Agent deny all\n";
-               }
-               if (!($proxysettings{'FAKE_REFERER'} eq ''))
-               {
-                       print FILE "request_header_access Referer deny all\n";
-                       print FILE "reply_header_access Referer deny all\n";
-               }
 
                print FILE "\n";
 
-               if ((!($proxysettings{'FAKE_USERAGENT'} eq '')) || (!($proxysettings{'FAKE_REFERER'} eq '')))
-               {
-                       if (!($proxysettings{'FAKE_USERAGENT'} eq ''))
-                       {
-                               print FILE "header_replace User-Agent $proxysettings{'FAKE_USERAGENT'}\n";
-                       }
-                       if (!($proxysettings{'FAKE_REFERER'} eq ''))
-                       {
-                               print FILE "header_replace Referer $proxysettings{'FAKE_REFERER'}\n";
-                       }
-                       print FILE "\n";
-               }
        }
 
        if ($proxysettings{'SUPPRESS_VERSION'} eq 'on') { print FILE "httpd_suppress_version_string on\n\n" }
index 29b8c80705ff8194796ae5d89263be9a6384c774..79a2943d4dc732d543ac9429b4a103df2096a869 100644 (file)
@@ -2375,11 +2375,11 @@ END
        #use default advanced value
        $cgiparams{'IKE_ENCRYPTION'}    = 'chacha20poly1305|aes256gcm128|aes256gcm96|aes256gcm64|aes256|aes192gcm128|aes192gcm96|aes192gcm64|aes192|aes128gcm128|aes128gcm96|aes128gcm64|aes128'; #[18];
        $cgiparams{'IKE_INTEGRITY'}             = 'sha2_512|sha2_256'; #[19];
-       $cgiparams{'IKE_GROUPTYPE'}             = 'curve25519|curve448|4096|3072|2048'; #[20];
+       $cgiparams{'IKE_GROUPTYPE'}             = 'curve448|curve25519|4096|3072|2048'; #[20];
        $cgiparams{'IKE_LIFETIME'}              = '3'; #[16];
        $cgiparams{'ESP_ENCRYPTION'}    = 'chacha20poly1305|aes256gcm128|aes256gcm96|aes256gcm64|aes256|aes192gcm128|aes192gcm96|aes192gcm64|aes192|aes128gcm128|aes128gcm96|aes128gcm64|aes128'; #[21];
        $cgiparams{'ESP_INTEGRITY'}             = 'sha2_512|sha2_256'; #[22];
-       $cgiparams{'ESP_GROUPTYPE'}             = 'curve25519|curve448|4096|3072|2048'; #[23];
+       $cgiparams{'ESP_GROUPTYPE'}             = 'curve448|curve25519|4096|3072|2048'; #[23];
        $cgiparams{'ESP_KEYLIFE'}               = '1'; #[17];
        $cgiparams{'COMPRESSION'}               = 'off'; #[13];
        $cgiparams{'ONLY_PROPOSED'}             = 'on'; #[24];
@@ -2760,7 +2760,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                        goto ADVANCED_ERROR;
                }
                foreach my $val (@temp) {
-                       if ($val !~ /^(curve25519|curve448|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|768|1024|1536|2048|3072|4096|6144|8192)$/) {
+                       if ($val !~ /^(curve448|curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|768|1024|1536|2048|3072|4096|6144|8192)$/) {
                                $errormessage = $Lang::tr{'invalid input'};
                                goto ADVANCED_ERROR;
                        }
@@ -2801,7 +2801,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                        goto ADVANCED_ERROR;
                }
                foreach my $val (@temp) {
-                       if ($val !~ /^(curve25519|curve448|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|768|1024|1536|2048|3072|4096|6144|8192|none)$/) {
+                       if ($val !~ /^(curve448|curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|768|1024|1536|2048|3072|4096|6144|8192|none)$/) {
                                $errormessage = $Lang::tr{'invalid input'};
                                goto ADVANCED_ERROR;
                        }
@@ -2941,8 +2941,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
        $checked{'IKE_INTEGRITY'}{'aesxcbc'} = '';
        @temp = split('\|', $cgiparams{'IKE_INTEGRITY'});
        foreach my $key (@temp) {$checked{'IKE_INTEGRITY'}{$key} = "selected='selected'"; }
-       $checked{'IKE_GROUPTYPE'}{'curve25519'} = '';
        $checked{'IKE_GROUPTYPE'}{'curve448'} = '';
+       $checked{'IKE_GROUPTYPE'}{'curve25519'} = '';
        $checked{'IKE_GROUPTYPE'}{'768'} = '';
        $checked{'IKE_GROUPTYPE'}{'1024'} = '';
        $checked{'IKE_GROUPTYPE'}{'1536'} = '';
@@ -2981,8 +2981,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
        $checked{'ESP_INTEGRITY'}{'aesxcbc'} = '';
        @temp = split('\|', $cgiparams{'ESP_INTEGRITY'});
        foreach my $key (@temp) {$checked{'ESP_INTEGRITY'}{$key} = "selected='selected'"; }
-       $checked{'ESP_GROUPTYPE'}{'curve25519'} = '';
        $checked{'ESP_GROUPTYPE'}{'curve448'} = '';
+       $checked{'ESP_GROUPTYPE'}{'curve25519'} = '';
        $checked{'ESP_GROUPTYPE'}{'768'} = '';
        $checked{'ESP_GROUPTYPE'}{'1024'} = '';
        $checked{'ESP_GROUPTYPE'}{'1536'} = '';
@@ -3146,8 +3146,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                        <td class='boldbase' width="15%">$Lang::tr{'grouptype'}</td>
                        <td class='boldbase'>
                                <select name='IKE_GROUPTYPE' multiple='multiple' size='6' style='width: 100%'>
-                                       <option value='curve25519' $checked{'IKE_GROUPTYPE'}{'curve25519'}>Curve 25519 (256 bit)</option>
                                        <option value='curve448' $checked{'IKE_GROUPTYPE'}{'curve448'}>Curve 448 (224 bit)</option>
+                                       <option value='curve25519' $checked{'IKE_GROUPTYPE'}{'curve25519'}>Curve 25519 (128 bit)</option>
                                        <option value='e521' $checked{'IKE_GROUPTYPE'}{'e521'}>ECP-521 (NIST)</option>
                                        <option value='e512bp' $checked{'IKE_GROUPTYPE'}{'e512bp'}>ECP-512 (Brainpool)</option>
                                        <option value='e384' $checked{'IKE_GROUPTYPE'}{'e384'}>ECP-384 (NIST)</option>
@@ -3169,8 +3169,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                        </td>
                        <td class='boldbase'>
                                <select name='ESP_GROUPTYPE' multiple='multiple' size='6' style='width: 100%'>
-                                       <option value='curve25519' $checked{'ESP_GROUPTYPE'}{'curve25519'}>Curve 25519 (256 bit)</option>
                                        <option value='curve448' $checked{'ESP_GROUPTYPE'}{'curve448'}>Curve 448 (224 bit)</option>
+                                       <option value='curve25519' $checked{'ESP_GROUPTYPE'}{'curve25519'}>Curve 25519 (128 bit)</option>
                                        <option value='e521' $checked{'ESP_GROUPTYPE'}{'e521'}>ECP-521 (NIST)</option>
                                        <option value='e512bp' $checked{'ESP_GROUPTYPE'}{'e512bp'}>ECP-512 (Brainpool)</option>
                                        <option value='e384' $checked{'ESP_GROUPTYPE'}{'e384'}>ECP-384 (NIST)</option>
@@ -3743,7 +3743,7 @@ sub make_algos($$$$$) {
 
                                        if ($grp =~ m/^e(.*)$/) {
                                                push(@algo, "ecp$1");
-                                       } elsif ($grp =~ m/curve(25519|448)/) {
+                                       } elsif ($grp =~ m/curve(448|25519)/) {
                                                push(@algo, "$grp");
                                        } else {
                                                push(@algo, "modp$grp");
@@ -3760,7 +3760,7 @@ sub make_algos($$$$$) {
                                                # noop
                                        } elsif ($grp =~ m/^e(.*)$/) {
                                                push(@algo, "ecp$1");
-                                       } elsif ($grp =~ m/curve(25519|448)/) {
+                                       } elsif ($grp =~ m/curve(448|25519)/) {
                                                push(@algo, "$grp");
                                        } else {
                                                push(@algo, "modp$grp");
index eee51575be353ec9139a35df28d67d8a12899b6f..0d2228edec102b515ec4252ca1f256e969d7a97c 100644 (file)
 'advproxy errmsg wpad invalid ip or mask' => 'WPAD: Ungültige IP oder Subnetz für ausgenommenes IP-Subnetz',
 'advproxy error design' => 'Design der Fehlermeldungen',
 'advproxy error language' => 'Sprache der Fehlermeldungen',
-'advproxy fake referer' => 'Gefälschter Referer für externe Webseiten',
-'advproxy fake useragent' => 'Gefälschter User-Agent für externe Webseiten',
 'advproxy friday' => 'Fr',
 'advproxy from' => 'Von',
 'advproxy group access control' => 'Gruppenbasierte Zugriffskontrolle',
 'advproxy off' => 'Proxy aus',
 'advproxy offline mode' => 'Aktiviere Offline-Modus',
 'advproxy on' => 'Proxy ein',
-'advproxy privacy' => 'Datenschutz',
 'advproxy proxy port' => 'Proxyport',
 'advproxy proxy port transparent' => 'Transparenter Port',
 'advproxy ram cache size' => 'Cachegröße im Arbeitsspeicher (MB)',
index a48deeeca5959c7e264ac8c2f332a330128b47f0..2ba6961f3ae76e1b16c240f428f76be4b4724e3c 100644 (file)
 'advproxy errmsg wpad invalid ip or mask' => 'WPAD: Invalid IP or subnet for excluded IP subnet',
 'advproxy error design' => 'Error messages design',
 'advproxy error language' => 'Error messages language',
-'advproxy fake referer' => 'Fake referer submitted to external sites',
-'advproxy fake useragent' => 'Fake useragent submitted to external sites',
 'advproxy friday' => 'Fri',
 'advproxy from' => 'From',
 'advproxy group access control' => 'Group based access control',
 'advproxy off' => 'Proxy off',
 'advproxy offline mode' => 'Enable offline mode',
 'advproxy on' => 'Proxy on',
-'advproxy privacy' => 'Privacy',
 'advproxy proxy port' => 'Proxy port',
 'advproxy proxy port transparent' => 'Transparent port',
 'advproxy ram cache size' => 'Memory cache size (MB)',
index e76c987bc5f0833b64daab7d9fb1bfc305183c74..1080afdead08052439b701af9afd4d57eaf84a1f 100644 (file)
 'advproxy errmsg time restriction' => 'Restricción de tiempo no válida',
 'advproxy error design' => 'Diseño de mensajes de error',
 'advproxy error language' => 'Idioma de Mensajes de error',
-'advproxy fake referer' => 'Referer falso enviado a sitios externos',
-'advproxy fake useragent' => 'Useragent falso enviado a sitios externos',
 'advproxy friday' => 'Vie',
 'advproxy from' => 'De',
 'advproxy hdd cache size' => 'Tamaño del caché en disco duro (MB)',
 'advproxy off' => 'Proxy Apagado',
 'advproxy offline mode' => 'Activar modo fuera de línea',
 'advproxy on' => 'Proxy Encendido',
-'advproxy privacy' => 'Privacidad',
 'advproxy proxy port' => 'Puerto del proxy',
 'advproxy ram cache size' => 'Tamaño de memoria caché',
 'advproxy redirector children' => 'Número de procesos filtrados',
index 840292f9cf83431769829c706e2ea5bc6633bae0..1b6d30111919de5235ef9052c340fce84e10f595 100644 (file)
 'advproxy errmsg wpad invalid ip or mask' => 'WPAD : IP ou sous-réseau invalide pour le sous-réseau IP exclu',
 'advproxy error design' => 'Construction messages erronés ',
 'advproxy error language' => 'Langage des messages erronés ',
-'advproxy fake referer' => 'Fausses références soumises aux sites externes ',
-'advproxy fake useragent' => 'Faux useragent soumis aux sites externes ',
 'advproxy friday' => 'Ven',
 'advproxy from' => 'De',
 'advproxy group access control' => 'Contrôle d\'accès basé sur le groupe',
 'advproxy off' => 'Proxy inactif',
 'advproxy offline mode' => 'Autoriser le mode hors connexion ',
 'advproxy on' => 'Proxy actif',
-'advproxy privacy' => 'Privé',
 'advproxy proxy port' => 'Port proxy ',
 'advproxy proxy port transparent' => 'Port transparent ',
 'advproxy ram cache size' => 'Taille cache mémoire (Mo) ',
index 57585dd270fc9850e2c1d04b76987403475dc9bd..e9bd157a30e523f5c0454489c1dd7b5042ef33b2 100644 (file)
 'advproxy errmsg time restriction' => 'Invalid time restriction',
 'advproxy error design' => 'Design dei messaggi di errore',
 'advproxy error language' => 'Lingua dei messaggi di errore',
-'advproxy fake referer' => 'Fake referer submitted to external sites',
-'advproxy fake useragent' => 'Fake useragent submitted to external sites',
 'advproxy friday' => 'Ven',
 'advproxy from' => 'Da',
 'advproxy hdd cache size' => 'Harddisk cache size (MB)',
 'advproxy off' => 'Proxy off',
 'advproxy offline mode' => 'Attiva modalit&agrave; offline',
 'advproxy on' => 'Proxy Acceso',
-'advproxy privacy' => 'Privacy',
 'advproxy proxy port' => 'Porta Proxy',
 'advproxy proxy port transparent' => 'Porta Transparente',
 'advproxy ram cache size' => 'Dimensione della Memoria di cache (MB)',
index fb5a932f9c7d98c26cc45e33a5f2ef65a590a028..d607e4f89e288e74450e7546233840e2b0c7c993 100644 (file)
 'advproxy errmsg time restriction' => 'Ongeldige tijdsbeperking',
 'advproxy error design' => 'Opmaak foutmeldingen',
 'advproxy error language' => 'Taal foutmeldingen',
-'advproxy fake referer' => 'Nepverwijzing die wordt gestuurd naar externe sites',
-'advproxy fake useragent' => 'Nep useragent die wordt gestuurd naar externe sites',
 'advproxy friday' => 'Vri',
 'advproxy from' => 'Van',
 'advproxy hdd cache size' => 'Harddisk cache-grootte (MB)',
 'advproxy off' => 'Proxy uit',
 'advproxy offline mode' => 'Schakel offline modus in',
 'advproxy on' => 'Proxy aan',
-'advproxy privacy' => 'Privacy',
 'advproxy proxy port' => 'Proxy poort',
 'advproxy proxy port transparent' => 'Transparante poort',
 'advproxy ram cache size' => 'Geheugen cache-grootte (MB)',
index d3540cc62aec1ac5b341ac8f91e9e5479b363a1a..a44f43fa446e67b0790b9fb46a8b135c7aac31c1 100644 (file)
 'advproxy errmsg time restriction' => 'Niepoprawne ograniczenia czase',
 'advproxy error design' => 'Styl komunikatów o błędach',
 'advproxy error language' => 'Język komunikatów o błędach',
-'advproxy fake referer' => 'Fake referer submitted to external sites',
-'advproxy fake useragent' => 'Fake useragent submitted to external sites',
 'advproxy friday' => 'Pią',
 'advproxy from' => 'Od',
 'advproxy hdd cache size' => 'Rozmiar cache na dysku (MB)',
 'advproxy off' => 'Proxy wyłączone',
 'advproxy offline mode' => 'Włącz tryb offline',
 'advproxy on' => 'Proxy wł',
-'advproxy privacy' => 'Prywatność',
 'advproxy proxy port' => 'Port proxy',
 'advproxy ram cache size' => 'Rozmiar RAM cache (MB)',
 'advproxy redirector children' => 'Liczba procesów filtrujących',
index 12afa0b928a12e15e12ddd6bf3f1558a04c4e478..c0342eb253828719f9438a0fd4f5fb04d6f46daf 100644 (file)
 'advproxy errmsg time restriction' => 'Неверное ограничение по времени',
 'advproxy error design' => 'Оформление ошибок',
 'advproxy error language' => 'Язык, на котором отображаются ошибки',
-'advproxy fake referer' => 'Липовый referer Для внешних сайтов',
-'advproxy fake useragent' => 'Липовый useragent для внешних сайтов',
 'advproxy friday' => 'Пт',
 'advproxy from' => 'C',
 'advproxy hdd cache size' => 'Размер кэша жёсткого диска (MB)',
 'advproxy off' => 'Proxy выкл',
 'advproxy offline mode' => 'Включить автономный режим',
 'advproxy on' => 'Proxy вкл',
-'advproxy privacy' => 'Приватность',
 'advproxy proxy port' => 'Порт Proxy',
 'advproxy ram cache size' => 'Размер памяти кэша (MB)',
 'advproxy redirector children' => 'Количество фильтруемых процессов',
index 83416ebe72f68478635814a58e2c3482457c23dd..f90bee0ea7ae35fab8eeba3bd9369ea0ac63ee1b 100644 (file)
 'advproxy errmsg time restriction' => 'Geçersiz zaman kısıtlaması',
 'advproxy error design' => 'Hata mesajları tasarımı',
 'advproxy error language' => 'Hata mesajları dili',
-'advproxy fake referer' => 'Sahte referansı harici sitelere gönder',
-'advproxy fake useragent' => 'Sahte yönlendiriciyi harici sitelere gönder',
 'advproxy friday' => 'Cum',
 'advproxy from' => 'Başlangıç',
 'advproxy group access control' => 'Grup tabanlı erişim kontrolü',
 'advproxy off' => 'Vekil sunucu kapalı',
 'advproxy offline mode' => 'Çevrimdışı yöntemi aktifleştir',
 'advproxy on' => 'Vekil sunucu',
-'advproxy privacy' => 'Gizlilik',
 'advproxy proxy port' => 'Vekil sunucu bağlantı noktası',
 'advproxy proxy port transparent' => 'Şeffaf bağlantı noktası',
 'advproxy ram cache size' => 'Bellek önbellek boyutu (MB)',
index 2ed13dd4440217aadff28723a4166701ca04782b..4b2b79ded006029db20ab1a6c348d61098f501c7 100644 (file)
--- a/lfs/avahi
+++ b/lfs/avahi
@@ -88,7 +88,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                --disable-qt5 \
                --disable-gtk \
                --disable-gtk3 \
-               --disable-pygtk \
                --disable-python \
                --disable-pygobject \
                --disable-python-dbus \
index 214894ad273b4e0e50974b1d52a776eb7df576cb..7b0baccadaf6b2cdee783ba0c758ca82d00db22e 100644 (file)
--- a/lfs/bash
+++ b/lfs/bash
@@ -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        #
@@ -91,9 +91,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash51-$$(printf "%03d" "$${i}") || exit 1; \
        done
 
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-paths-1.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-profile-1.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-3.2-ssh_source_bash.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-4.0-paths-1.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-4.0-profile-1.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-3.2-ssh_source_bash.patch
 
        cd $(DIR_APP) && ./configure --prefix=$(PREFIX) $(CONFIGURE_OPTIONS)
        cd $(DIR_APP) && make $(MAKETUNING)
index 371a0b3e74abe98e28a8fa1a4e8eac1f11548dda..f3c68a7c0523e4c60f4fdcf60396dcee5f5e93cc 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 20210521
+VER        = 20210611
 
 THISAPP    = ca-certificates
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
index 489513b908e4117528962a01259205d7dcffaff6..85ac8690c2483bf3a1a15b433fb9770f11ab309b 100644 (file)
--- a/lfs/cmake
+++ b/lfs/cmake
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.20.3
+VER        = 3.20.4
 
 THISAPP    = cmake-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 57ddb91cd14cb7e58a34f1f1066bf8c2
+$(DL_FILE)_MD5 = 99e849c6910f1df027cc0365027fa19b
 
 install : $(TARGET)
 
index 63395ba2f8a5b616e0949310ad23007be598165b..18a740e6a43838d031b195df376aaead56cf011f 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        #
@@ -93,8 +93,8 @@ $(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/coreutils-8.27-uname-1.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils-8.32-i18n-1.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils/coreutils-8.27-uname-1.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils/coreutils-8.32-i18n-1.patch
        # this is upstream and also fix the aarch64 build
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils/ls-restore-8.31-behavior-on-removed-directories.patch
        cd $(DIR_APP) && FORCE_UNSAFE_CONFIGURE=1 && ./configure $(CONFIGURE_OPTIONS)
index aedaaf92761c09821d67a09ae56da641d98b9a91..d00b5ccb254b4fe6d22bacd7cf414e24478b4982 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.28.8
+VER        = 1.28.9
 
 THISAPP    = cups-filters-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = cups-filters
-PAK_VER    = 5
+PAK_VER    = 6
 
 DEPS       = cups ghostscript
 
@@ -46,7 +46,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 914fb53d31ff8500dc25d2e2c68ca5c1
+$(DL_FILE)_MD5 = 1ea8d0311463d4026f0f631a4843dec2
 
 install : $(TARGET)
 
@@ -85,7 +85,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                        --sysconfdir=/etc \
                        --localstatedir=/var \
                        --with-pdftops=hybrid \
-                       --disable-ijs \
                        --disable-mutool \
                        --disable-avahi
        cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
index 5235348a5721f515c48f0e391d1e21ce0d2f69cf..99291527bb50519cf65bf052048c68ab9685c42a 100644 (file)
--- a/lfs/fuse
+++ b/lfs/fuse
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.10.3
+VER        = 3.10.4
 
 THISAPP    = fuse-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 75546f9070323b8ce69c2ed8ffff20c4
+$(DL_FILE)_MD5 = 55b87e9ed691c2fa698e491241985b4a
 
 install : $(TARGET)
 
index 011e0564c37322f50d60ae570d1146fbb69ba30b..522c542581aff38b227e046f23226e5a9840b81a 100644 (file)
--- a/lfs/glib
+++ b/lfs/glib
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.68.2
+VER        = 2.68.3
 
 THISAPP    = glib-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 8d288416da38476c71998e5c2d3602ed
+$(DL_FILE)_MD5 = a3968c7510447f055fd2204ba947f80f
 
 install : $(TARGET)
 
index 811c2f745e267e5ff6c246b66bc5f2196e12b780..972bb46c34323fef3b37f934725cfe3348c87e25 100644 (file)
--- a/lfs/grub
+++ b/lfs/grub
@@ -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        #
@@ -99,7 +99,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @rm -rf $(DIR_APP) $(DIR_APP_EFI) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
 
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub/grub-2.04-BootHole.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-2.02_disable_vga_fallback.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub/grub-2.02_disable_vga_fallback.patch
        cd $(DIR_APP) && autoreconf -vfi
 
        # Install unifont
index de7d26e1fc13d20c2df0edb7af2f043ac7bad58d..6f03612726b2ae3ef2b8a2cbf8572556c099b4ca 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        #
index da684c771ff05c3fea8de25cbd33241af1364682..8f6b35c32cba302d904204d0974ca2e16a44768c 100644 (file)
@@ -80,7 +80,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 
        # 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
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/libloc/libloc-0.9.3-perl-i586-regular-stack-protector.patch
 endif
 
        cd $(DIR_APP) && ./autogen.sh
index 14ce62676b475cb79096a1e60cd54e7752f3321c..0cdc06e8fa478ec448805e11d3fa1ccba9bf934a 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.10.0
+VER        = 1.10.1
 
 THISAPP    = libpcap-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 8c12dc19dd7e0d02d2bb6596eb5a71c7
+$(DL_FILE)_MD5 = 28e17495004036567c2cc884b51eba45
 
 install : $(TARGET)
 
index 5e8789130e8cf5ef8c02c07ec3eed0bd882a6d78..01915d6a619c095a6e5211c7fcaaa605fd8949d4 100644 (file)
@@ -87,7 +87,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                --without-pam \
                --without-gtk2 \
                --without-gtkmm \
-               --without-procps \
                --without-icu \
                --without-x \
                --with-linuxdir=/usr/src/linux \
diff --git a/lfs/pam b/lfs/pam
index daae2def3eab19af2c16e180cf7983f1da9db014..463ee71daf7d6c905cc8b4db4b77f63ad19b9832 100644 (file)
--- a/lfs/pam
+++ b/lfs/pam
@@ -74,7 +74,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && ./configure --libdir=/usr/lib \
                --sbindir=/lib/security \
                --enable-securedir=/lib/security \
-               --enable-docdir=/usr/share/doc/Linux-PAM-$(VER) \
                --enable-read-both-confs \
                --disable-nls
 
index 628704152b7df418abcc34a1f7c434a9e711db08..3735f7e69b3c2f8fd7e39c1f7edfa243a68e0988 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.5.9
+VER        = 3.6.1
 
 THISAPP    = postfix-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = postfix
-PAK_VER    = 29
+PAK_VER    = 31
 
 DEPS       =
 
@@ -66,7 +66,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a4d1b2df03a500cf8f9759d5fca1c1f6
+$(DL_FILE)_MD5 = 85d1c2b06a469ba6cc61946c7042e40e
 
 install : $(TARGET)
 
index 98f6a5ecaa7be9708c167c6120e9eec32318ce54..8428ce012a6acc95b72b68ba5b5b8d70b02b12be 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        = 7.1
+VER        = 7.2
 
 THISAPP    = smartmontools-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 430cd5f64caa4524018b536e5ecd9c29
+$(DL_FILE)_MD5 = e8d134c69ae4959a05cb56b31172ffb1
 
 install : $(TARGET)
 
diff --git a/lfs/sox b/lfs/sox
index f2d57a6ee74a58f78e28536cb21a78d24e940947..8388c57fcbb39fe91d645d0457b10b19da15b072 100644 (file)
--- a/lfs/sox
+++ b/lfs/sox
@@ -78,8 +78,7 @@ $(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 --disable-alsa-dsp --disable-oss-dsp \
-                               --disable-sun-audio --disable-mad
+       cd $(DIR_APP) && ./configure --prefix=/usr
        cd $(DIR_APP) && make $(EXTRA_MAKE)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
index ab6fbf99b4d6c35ad805927af63c8a43118b4ab0..9edd089617aeb3bb3f0f754222168195f3cf8502 100644 (file)
--- a/lfs/sudo
+++ b/lfs/sudo
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.9.7
+VER        = 1.9.7p1
 
 THISAPP    = sudo-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 1ed8b73ba56c9b05ed22681b7b92d1b2
+$(DL_FILE)_MD5 = 0ea3649ef66df80e6ecd04d45ea0f762
 
 install : $(TARGET)
 
index 86c54738d6e751bec8b8baa893db021af283203f..2fcac6d4caff15e340922070238751622ae4dbce 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 4.99.0
+VER        = 4.99.1
 
 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    = 12
+PAK_VER    = 13
 
 DEPS       =
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = b10aa2f497def7283bc060f626879ce5
+$(DL_FILE)_MD5 = 929a255c71a9933608bd7c31927760f7
 
 install : $(TARGET)
 
index aae90dab18231c207533d4f8b43c1ea883d60223..e55d38a27ec56aca60ace41b42a4992d42ba4712 100644 (file)
--- a/lfs/tmux
+++ b/lfs/tmux
@@ -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.1
+VER        = 3.2a
 
 THISAPP    = tmux-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = tmux
-PAK_VER    = 8
+PAK_VER    = 9
 
 DEPS       =
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 76c3ef9d40d2c1ade7a6cd7993b549ac
+$(DL_FILE)_MD5 = 61fba141303aeaf8d9a6931d247f2f4a
 
 install : $(TARGET)
 
index 29aabc0d9be908ca27c12f202ace7f373ad32211..90a43d34d76b1a36a5f35fa5d81a9d0fed621369 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.11.0
+VER        = 5.12.0
 
 THISAPP    = xfsprogs-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -32,9 +32,6 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
-CONFIGURE_OPTIONS = \
-       --enable-readline=yes
-
 ifeq "$(BUILD_ARCH)" "armv5tel"
        CONFIGURE_OPTIONS += \
                --enable-lto=no
@@ -48,7 +45,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 803bcddd983803b339acfb76064dfd84
+$(DL_FILE)_MD5 = b401d76ccd66e4fdf3d123193e5e1b91
 
 install : $(TARGET)
 
index 4ef971f0433373c64fbc719fe24c632486b894bf..d2c6db4c0de4c62e3867f691c67f03473071a88d 100644 (file)
@@ -1,8 +1,8 @@
 #
 #      List of PCI ID's
 #
-#      Version: 2020.10.25
-#      Date:    2020-10-25 03:15:01
+#      Version: 2021.05.16
+#      Date:    2021-05-16 03:15:02
 #
 #      Maintained by Albert Pool, Martin Mares, and other volunteers from
 #      the PCI ID Project at https://pci-ids.ucw.cz/.
@@ -70,6 +70,8 @@
 018a  LevelOne
        0106  FPC-0106TX misprogrammed [RTL81xx]
 01de  Oxide Computer Company
+# probably misprogrammed Intel Atom C2338 on Dell 0K8Y0N board
+0200  Dell (wrong ID)
 # 021b is not Compaq but there is a board misprogrammed
 021b  Compaq Computer Corporation
        8139  HNE-300 (RealTek RTL8139c) [iPaq Networking]
                1000 3040  9210-8i
                1000 3080  9200-8e [LSI SAS 6Gb/s SAS/SATA PCIe x8 External HBA]
                1000 30b0  9200-8e [LSI SAS 6Gb/s SAS/SATA PCIe x8 External HBA]
+               1014 03ca  IBM 6Gb SAS HBA [9212-4i4e]
                1028 1f1c  6Gbps SAS HBA Adapter
                1028 1f1d  PERC H200 Adapter
                1028 1f1e  PERC H200 Integrated
                1d49 0200  ThinkSystem 430-8i SAS/SATA 12Gb HBA
                1d49 0202  ThinkSystem 430-8e SAS/SATA 12Gb HBA
                1d49 0204  ThinkSystem 430-8i SAS/SATA 12Gb Dense HBA
-# PCIe switch SES management endpoint
-       00b2  PEX880xx PCIe Gen 4 Switch SES management endpoint
+       00b2  PCIe Switch management endpoint
+               1d49 0003  ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter
        00be  SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC)
        00bf  SAS3404 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)
        00c0  SAS3324 PCI-Express Fusion-MPT SAS-3
                1d49 060e  ThinkSystem RAID 940-32i 8GB Flash PCIe Gen4 12Gb Adapter
                1d49 060f  ThinkSystem RAID 940-8e 4GB Flash PCIe Gen4 12Gb Adapter
        10e2  MegaRAID 12GSAS/PCIe Secure SAS39xx
+# 9560 16 internal port RAID controller
+               1000 4000  MegaRAID 9560-16i
+# 9560 8 internal port RAID controller
+               1000 4010  MegaRAID 9560-8i
+# 9580 8 internal & 8 external port RAID controller
+               1000 4020  MegaRAID 9580-8i8e
+# MegaRAID 9562-16i 9562 16 internal port RAID controller
+               1000 40b0  MegaRAID 9562-16i
                1028 1ae0  PERC H755 Adapter
                1028 1ae1  PERC H755 Front
                1028 1ae2  PERC H755N Front
                8086 0523  MegaRAID RAID Controller SRCS16
        3050  SAS2008 PCI-Express Fusion-MPT SAS-2
        6001  DX1 Multiformat Broadcast HD/SD Encoder/Decoder
+       c010  PEX88048 50 lane, 50 port, PCI Express Gen 4.0 ExpressFabric Platform
+       c012  PEX880xx PCIe Gen 4 Switch
+               1d49 0003  ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter
 1001  Kolter Electronic
        0010  PCI 1616 Measurement card with 32 digital I/O lines
        0011  OPTO-PCI Opto-Isolated digital I/O board
        1478  Navi 10 XL Upstream Port of PCI Express Switch
        1479  Navi 10 XL Downstream Port of PCI Express Switch
        154c  Kryptos [Radeon RX 350]
+               1462 7c28  MS-7C28 Motherboard
        154e  Garfield
        1551  Arlene
        1552  Pooky
        1561  Anubis
        15d8  Picasso
                103c 8615  Pavilion Laptop 15-cw1xxx
+               17aa 3181  ThinkCentre M75n IoT
                17aa 5124  ThinkPad E595
+               ea50 cc10  RXi2-BP
        15dd  Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series]
                103c 83c6  Radeon Vega 8 Mobile
+               1043 876b  PRIME Motherboard
                1458 d000  Radeon RX Vega 11
+               ea50 cc10  RXi2-BP
        15de  Raven/Raven2/Fenghuang HDMI/DP Audio Controller
                103c 8615  Pavilion Laptop 15-cw1xxx
+               1043 876b  PRIME B450M-A Motherboard
                17aa 5124  ThinkPad E595
+               ea50 cc10  RXi2-BP
        15df  Raven/Raven2/Fenghuang/Renoir Cryptographic Coprocessor
                103c 8615  Pavilion Laptop 15-cw1xxx
+               ea50 ce19  mCOM10-L1900
        15ff  Fenghuang [Zhongshan Subor Z+]
        1607  Arden
        1636  Renoir
+       1638  Cezanne
+       163f  VanGogh
+       164c  Lucienne
+       164d  Rembrandt
        1714  BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
                103c 168b  ProBook 4535s
        3150  RV380/M24 [Mobility Radeon X600]
                1179 ff50  Satellite P305D-S8995E
                1458 a022  GA-MA770-DS3rev2.0 Motherboard
                1458 a102  GA-880GMA-USB3
+               1462 7596  760GM-E51(MS-7596) Motherboard
                17f2 5000  KI690-AM2 Motherboard
        4384  SBx00 PCI to PCI Bridge
        4385  SBx00 SMBus Controller
                1179 ff50  Satellite P305D-S8995E
                1458 4385  GA-MA770-DS3rev2.0 Motherboard
                1462 7368  K9AG Neo2
+               1462 7596  760GM-E51(MS-7596) Motherboard
                15d9 a811  H8DGU
                174b 1001  PURE Fusion Mini
                17f2 5000  KI690-AM2 Motherboard
                1043 8389  M4A785TD Motherboard
                105b 0e13  N15235/A74MX mainboard / AMD SB700
                1458 b002  GA-MA770-DS3rev2.0 Motherboard
+               1462 7596  760GM-E51(MS-7596) Motherboard
                1849 4390  Motherboard (one of many)
        4391  SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
                103c 1609  ProLiant MicroServer N36L
                1043 8443  M5A88-V EVO
                105b 0e13  N15235/A74MX mainboard / AMD SB700
                1458 5004  GA-880GMA-USB3
+               1462 7596  760GM-E51(MS-7596) Motherboard
                15d9 a811  H8DGU
                174b 1001  PURE Fusion Mini
        4397  SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
                1043 8443  M5A88-V EVO
                105b 0e13  N15235/A74MX mainboard / AMD SB700
                1458 5004  GA-880GMA-USB3
+               1462 7596  760GM-E51(MS-7596) Motherboard
                15d9 a811  H8DGU
                174b 1001  PURE Fusion Mini
        4398  SB7x0 USB OHCI1 Controller
                1019 2120  A785GM-M
                1043 82ef  M3A78-EH Motherboard
                105b 0e13  N15235/A74MX mainboard / AMD SB700
+               1462 7596  760GM-E51(MS-7596) Motherboard
                15d9 a811  H8DGU
        4399  SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
                1019 2120  A785GM-M
                1043 8443  M5A88-V EVO
                105b 0e13  N15235/A74MX mainboard / AMD SB700
                1458 5004  GA-880GMA-USB3
+               1462 7596  760GM-E51(MS-7596) Motherboard
                174b 1001  PURE Fusion Mini
        439c  SB7x0/SB8x0/SB9x0 IDE Controller
                1002 4392  MSI MS-7713 motherboard
                103c 1609  ProLiant MicroServer N36L
                1043 82ef  M3A78-EH Motherboard
                105b 0e13  N15235/A74MX mainboard / AMD SB700
+               1462 7596  760GM-E51(MS-7596) Motherboard
        439d  SB7x0/SB8x0/SB9x0 LPC host controller
                1019 2120  A785GM-M
                103c 1609  ProLiant MicroServer N36L
                1043 82ef  M3A78-EH Motherboard
                1043 8443  M5A88-V EVO
                105b 0e13  N15235/A74MX mainboard / AMD SB700
+               1462 7596  760GM-E51(MS-7596) Motherboard
                174b 1001  PURE Fusion Mini
        43a0  SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0)
        43a1  SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1)
        5964  RV280 [Radeon 9200 SE]
                1002 5964  Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz
                1043 c006  Radeon 9200 SE / TD / 128M
-               1458 4018  Radeon 9200 SE
+               1458 4018  R92S128T (Radeon 9200 SE 128MB)
                1458 4032  Radeon 9200 SE 128MB
                147b 6191  R9200SE-DT
                148c 2073  CN-AG92E
                1002 5c63  Apple iBook G4 2004
                144d c00c  P30 notebook
        5d44  RV280 [Radeon 9200 SE] (Secondary)
-               1458 4019  Radeon 9200 SE (Secondary)
+               1458 4019  R92S128T (Radeon 9200 SE 128MB Secondary)
                1458 4032  Radeon 9200 SE 128MB
                147b 6190  R9200SE-DT (Secondary)
                174b 7c12  Radeon 9200 SE (Secondary)
        5e6d  RV410 [Radeon X700] (Secondary)
                148c 2117  Bravo X700 (Secondary)
        5f57  R423 [Radeon X800 XT]
-       6600  Mars [Radeon HD 8670A/8670M/8750M]
+       6600  Mars [Radeon HD 8670A/8670M/8750M / R7 M370]
                103c 1952  ProBook 455 G1
        6601  Mars [Radeon HD 8730M]
                103c 2100  FirePro M4100
        6607  Mars LE [Radeon HD 8530M / R5 M240]
        6608  Oland GL [FirePro W2100]
                13cc 3d28  MXRT-2600
-       6610  Oland XT [Radeon HD 8670 / R7 250/350]
+       6609  Oland GL [FirePro W2100 / Barco MXRT 2600]
+       6610  Oland XT [Radeon HD 8670 / R5 340X OEM / R7 250/350/350X OEM]
                1019 0030  Radeon HD 8670
+               1028 0081  Radeon R7 350X OEM
+               1028 0083  Radeon R5 340X OEM
                1028 2120  Radeon R7 250
                1028 2322  Radeon R7 250
                1462 2910  Radeon HD 8670
                1642 3c91  Radeon HD 8670
                1642 3f09  Radeon R7 350
        6611  Oland [Radeon HD 8570 / R5 430 OEM / R7 240/340 / Radeon 520 OEM]
+               1028 1001  Radeon R5 430 OEM (1024 MByte)
+               1028 1002  Radeon R5 430 OEM (2048 MByte)
+# The 'AMD Radeon R5 430' instead of 240/340 is NOT a typo! It's actually correct.
+               1028 1711  R5 430 OEM (2048 MByte)
                1028 210b  Radeon R5 240 OEM
+# OEM-card for Dell; verified through AMD's own drivers (*.inf) and a TPU BIOS in database
+               1028 2121  Radeon HD 8570 OEM
+# OEM-card from Fujitsu; verified through AMD's own drivers (*.inf)
+               10cf 1889  Radeon HD 8570 OEM
                1642 1869  Radeon 520 OEM
                174b 4248  Radeon R7 240 OEM
                174b a240  Radeon R7 240 OEM
        6667  Jet ULT [Radeon R5 M230]
        666f  Sun LE [Radeon HD 8550M / R5 M230]
        66a0  Vega 20 [Radeon Instinct]
-       66a1  Vega 20
+       66a1  Vega 20 WKS GL-XE [Radeon Pro VII]
        66a2  Vega 20
-       66a3  Vega 20
+       66a3  Vega 20 [Radeon Pro Vega II/Radeon Pro Vega II Duo]
        66a7  Vega 20 [Radeon Pro Vega 20]
        66af  Vega 20 [Radeon VII]
        6704  Cayman PRO GL [FirePro V7900]
                8086 2111  Radeon HD 6625M
        6743  Whistler [Radeon E6760]
        6749  Turks GL [FirePro V4900]
-               15c3 2b06  MED-X4900
+               15c3 2b06  MED-X4900 (EIZO)
        674a  Turks GL [FirePro V3900]
                13cc 3d22  MXRT-2500
                15c3 0106  MED-X3900
                174b 7670  Radeon HD 7670
                174b e181  Radeon HD 6670
                1787 2309  Radeon HD 6670
-       6759  Turks PRO [Radeon HD 6570/7570/8550]
+       6759  Turks PRO [Radeon HD 6570/7570/8550 / R5 230]
                103c 3130  Radeon HD 6570
                1043 0403  Radeon HD 6570
                1462 2500  Radeon HD 6570
                1642 3a67  Radeon HD 6570
                1682 3280  Radeon HD 7570
                1682 3530  Radeon HD 8550
+               1682 5230  Radeon R5 230 series
+               1682 6450  Radeon HD 6450 series
                174b 7570  Radeon HD 7570
+               174b 8550  Radeon HD8550 OEM
+               174b 8570  Radeon HD8550 OEM
                174b e142  Radeon HD 6570
                174b e181  Radeon HD 6570
+               1787 a230  Radeon R5 230 series
+               1787 a450  Radeon HD 6450 series
                1b0a 908f  Radeon HD 6570
                1b0a 9090  Radeon HD 6570
                1b0a 9091  Radeon HD 6570
                1043 04dd  STRIX R9 390
                148c 2358  Radeon R9 390
                174b e324  Sapphire Nitro R9 390
+       67b8  Hawaii XT [Radeon R9 290X Engineering Sample]
        67b9  Vesuvius [Radeon R9 295X2]
        67be  Hawaii LE
        67c0  Ellesmere [Radeon Pro WX 7100 Mobile]
                1462 3418  Radeon RX 580 Armor 4G OC
                1462 341b  Radeon RX 570 Armor 8G OC
                1462 341e  Radeon RX 570 Armor 4G OC
+               1462 809e  Radeon RX 480 4GB
                1462 8a92  Radeon RX 580
                148c 2372  Radeon RX 480 [Red Dragon]
                148c 2373  Radeon RX 470
 # https://www.techpowerup.com/vgabios/?manufacturer=Powercolor&model=RX+580
                148c 2378  Radeon RX 580
                148c 2379  Radeon RX 570 4G [Red Dragon]
+               148c 2391  Radeon RX 590 [Red Devil]
                1682 9470  Radeon RX 470
                1682 9480  Radeon RX 480
+               1682 9587  Radeon RX 590 FATBOY 8GB
                1682 9588  Radeon RX 580 XTR
                1682 c570  Radeon RX 570
                1682 c580  Radeon RX 580
                17aa 3643  Radeon R9 A375
                17aa 3801  Radeon R9 M275
                17aa 3824  Radeon R9 M375
+               1da2 e26a  Radeon R7 250
        6821  Venus XT [Radeon HD 8870M / R9 M270X/M370X]
                1002 031e  FirePro SX4000
                1028 05cc  FirePro M5100
        6864  Vega 10 [Radeon Pro V340]
        6867  Vega 10 XL [Radeon Pro Vega 56]
        6868  Vega 10 [Radeon PRO WX 8100/8200]
+       6869  Vega 10 XGA [Radeon Pro Vega 48]
+       686a  Vega 10 LEA
+       686b  Vega 10 XTXA [Radeon Pro Vega 64X]
        686c  Vega 10 [Radeon Instinct MI25 MxGPU]
+       686d  Vega 10 GLXTA
+       686e  Vega 10 GLXLA
        687f  Vega 10 XL/XT [Radeon RX Vega 56/64]
                1002 0b36  RX Vega64
                1002 6b76  RX Vega64
                1458 230c  Radeon RX VEGA 56 GAMING OC 8G
+               1da2 e376  Radeon RX VEGA 56 Pulse 8GB OC HBM2
        6880  Lexington [Radeon HD 6550M]
                103c 163c  Pavilion dv6 Radeon HD 6550M
        6888  Cypress XT [FirePro V8800]
                17af 3000  Radeon HD 6510
                17af 3010  Radeon HD 5630
        68da  Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570]
+               1462 8071  VR5550-MD1G (Radeon HD 5550)
                148c 3000  Radeon HD 6390
                148c 3001  Radeon HD 6490
                1545 7570  Radeon HD 7570
                148c 9380  Radeon R9 380
 # Make naming scheme consistent
                174b e308  Radeon R9 380 Nitro 4G D5
+               174b e315  Radeon R9 285
        693b  Tonga PRO GL [FirePro W7100 / Barco MXRT-7600]
        694c  Polaris 22 XT [Radeon RX Vega M GH]
        694e  Polaris 22 XL [Radeon RX Vega M GL]
        6985  Lexa XT [Radeon PRO WX 3100]
        6986  Polaris12
        6987  Lexa [Radeon 540X/550X/630 / RX 640 / E9171 MCM]
+       698f  Lexa XT [Radeon PRO WX 3100 / Barco MXRT 4700]
        6995  Lexa XT [Radeon PRO WX 2100]
        699f  Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X]
                1028 1720  Radeon RX 550X
                174b e329  Radeon R9 FURY
        7310  Navi 10 [Radeon Pro W5700X]
        7312  Navi 10 [Radeon Pro W5700]
+       7314  Navi 10 USB
        731f  Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]
                1458 2313  Radeon RX 5700 XT Gaming OC
+               1682 5701  RX 5700 XT RAW II
+               1849 5120  Radeon RX 5600 XT
                1da2 e411  Radeon RX 5600 XT
        7340  Navi 14 [Radeon RX 5500/5500M / Pro 5500M]
        7341  Navi 14 [Radeon Pro W5500]
        7347  Navi 14 [Radeon Pro W5500M]
        734f  Navi 14 [Radeon Pro W5300M]
-       7360  Navi 12 [Radeon Pro 5600M]
-       73bf  Navi 21 [Radeon RX 6900 Series]
-       73c3  Navi 23
-       73df  Navi 22
+       7360  Navi 12 [Radeon Pro 5600M / V520]
+       7362  Navi 12 [Radeon Pro V520]
+       7388  Arcturus GL-XL
+       738c  Arcturus GL-XL [AMD Instinct MI100]
+       738e  Arcturus GL-XL
+       73a3  Navi 21 [Radeon PRO W6800]
+       73a4  Navi 21 USB
+       73af  Navi 21 [Radeon RX 6900 XT]
+       73bf  Navi 21 [Radeon RX 6800/6800 XT / 6900 XT]
+               1eae 6701  XFX Speedster MERC 319 AMD Radeon RX 6800 XT Black
+       73c3  Navi 22
+       73c4  Navi 22 USB
+       73df  Navi 22 [Radeon RX 6700/6700 XT / 6800M]
+       73e0  Navi 23
+       73e1  Navi 23
+       73e4  Navi 23 USB
+       73ff  Navi 23 [Radeon RX 6600/6600 XT/6600M]
+       7408  Aldebaran
+       740c  Aldebaran
+       740f  Aldebaran
        7833  RS350 Host Bridge
        7834  RS350 [Radeon 9100 PRO/XT IGP]
        7835  RS350M [Mobility Radeon 9000 IGP]
        95cd  RV620 GL [FirePro 2450]
        95cf  RV620 GL [FirePro 2260]
        960f  RS780 HDMI Audio [Radeon 3000/3100 / HD 3200/3300]
+               1462 7596  760GM-E51(MS-7596) Motherboard
        9610  RS780 [Radeon HD 3200]
                1458 d000  GA-MA78GM-S2H Motherboard
        9611  RS780C [Radeon 3100]
        9614  RS780D [Radeon HD 3300]
        9615  RS780E [Radeon HD 3200]
        9616  RS780L [Radeon 3000]
+# ID is probably a copy-paste error by a MSI developer from another mainboard, since all other ID numbers on this mainboard including the sub-device of this device has used subsystem ID 1462:7596
+               1462 7501  760GM-E51(MS-7596) Motherboard
        9640  Sumo [Radeon HD 6550D]
        9641  Sumo [Radeon HD 6620G]
        9642  SuperSumo [Radeon HD 6370D]
        9809  Wrestler [Radeon HD 7310]
        980a  Wrestler [Radeon HD 7290]
        9830  Kabini [Radeon HD 8400 / R3 Series]
+               1043 8623  AM1I-A Motherboard
        9831  Kabini [Radeon HD 8400E]
        9832  Kabini [Radeon HD 8330]
                1849 9832  QC5000-ITX/PH
        9839  Kabini [Radeon HD 8180]
        983d  Temash [Radeon HD 8250/8280G]
        9840  Kabini HDMI/DP Audio
+               1043 8623  AM1I-A Motherboard
                1849 9840  QC5000-ITX/PH
        9850  Mullins [Radeon R3 Graphics]
        9851  Mullins [Radeon R4/R5 Graphics]
        ab10  Lexa HDMI Audio
        ab18  Vega 12 HDMI Audio
        ab20  Vega 20 HDMI Audio [Radeon VII]
+       ab28  Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT]
        ab38  Navi 10 HDMI Audio
        ac00  Theater 506 World-Wide Analog Decoder
        ac01  Theater 506 World-Wide Analog Decoder
                2646 0001  KNE100TX Fast Ethernet
        000a  21230 Video Codec
        000d  PBXGB [TGA2]
-       000f  DEFPA FDDI PCI-to-PDQ Interface Chip [PFI]
-               1011 def1  FDDI controller (DEFPA)
-               103c def1  FDDI controller (3X-DEFPA)
+       000f  PCI-to-PDQ Interface Chip [PFI] FDDI (DEFPA)
+               1011 def1  FDDIcontroller/PCI (DEFPA)
+               103c def1  FDDIcontroller/PCI (3X-DEFPA)
        0014  DECchip 21041 [Tulip Pass 3]
                1186 0100  DE-530+
-       0016  DGLPB [OPPO]
+       0016  ATMworks 350 Adapter [OPPO] (DGLPB)
        0017  PV-PCI Graphics Controller (ZLXp-L)
        0018  Memory Channel interface
        0019  DECchip 21142/43
        1450  Family 17h (Models 00h-0fh) Root Complex
        1451  Family 17h (Models 00h-0fh) I/O Memory Management Unit
        1452  Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
+               ea50 ce19  mCOM10-L1900
        1453  Family 17h (Models 00h-0fh) PCIe GPP Bridge
        1454  Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B
        1455  Zeppelin/Renoir PCIe Dummy Function
        149b  Starship Reserved SSP
        149c  Matisse USB 3.0 Host Controller
                1462 7c37  X570-A PRO motherboard
+       149d  Vangogh CVIP
        1510  Family 14h Processor Root Complex
                174b 1001  PURE Fusion Mini
        1512  Family 14h Processor Root Port
        1534  Family 16h Processor Function 4
        1535  Family 16h Processor Function 5
        1536  Family 16h Processor Root Complex
+               1043 8623  AM1I-A Motherboard
                1849 1536  QC5000-ITX/PH
        1537  Kabini/Mullins PSP-Platform Security Processor
        1538  Family 16h Processor Function 0
        15be  Stoney Audio Processor
        15d0  Raven/Raven2 Root Complex
                103c 8615  Pavilion Laptop 15-cw1xxx
+               1043 876b  PRIME B450M-A Motherboard
        15d1  Raven/Raven2 IOMMU
                103c 8615  Pavilion Laptop 15-cw1xxx
+               1043 876b  PRIME B450M-A Motherboard
+               ea50 ce19  mCOM10-L1900
        15d2  Raven/Raven2 PCIe Dummy Host Bridge
        15d3  Raven/Raven2 PCIe GPP Bridge [6:0]
        15d4  FireFlight USB 3.1
        15d5  FireFlight USB 3.1
        15da  Raven/Raven2 PCIe Dummy Host Bridge
        15db  Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A
+               ea50 ce19  mCOM10-L1900
        15dc  Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus B
+               ea50 ce19  mCOM10-L1900
        15de  Raven/Raven2/FireFlight HD Audio Controller
        15df  Family 17h (Models 10h-1fh) Platform Security Processor
+               1043 876b  PRIME Motherboard
                17aa 5124  ThinkPad E595
+               ea50 ce19  mCOM10-L1900
        15e0  Raven USB 3.1
                103c 8615  Pavilion Laptop 15-cw1xxx
+               1043 876b  PRIME Motherboard
                17aa 5124  ThinkPad E595
+               ea50 ce19  mCOM10-L1900
        15e1  Raven USB 3.1
                103c 8615  Pavilion Laptop 15-cw1xxx
+               1043 876b  PRIME Motherboard
                17aa 5124  ThinkPad E595
+               ea50 ce19  mCOM10-L1900
        15e2  Raven/Raven2/FireFlight/Renoir Audio Processor
                17aa 5124  ThinkPad E595
        15e3  Family 17h (Models 10h-1fh) HD Audio Controller
                103c 8615  Pavilion Laptop 15-cw1xxx
+               1043 86c7  PRIME B450M-A Motherboard
                17aa 5124  ThinkPad E595
        15e4  Raven/Raven2/Renoir Sensor Fusion Hub
        15e5  Raven2 USB 3.1
        1642  Renoir WLAN
        1643  Renoir BT
        1644  Renoir I2S
+       1648  VanGogh Root Complex
+       1649  VanGogh PSP/CCP
        1700  Family 12h/14h Processor Function 0
        1701  Family 12h/14h Processor Function 1
        1702  Family 12h/14h Processor Function 2
                4c53 1030  PC5 mainboard
                4c53 1040  CL7 mainboard
                4c53 1060  PC7 mainboard
-       2001  79c978 [HomePNA]
+# Via AMD's own technical reference on their Am79C978 NICs; https://www.amd.com/system/files/TechDocs/22206.pdf
+       2001  Am79C978 PCnet Home (HomePNA) 1/10 PCI Ethernet Adapter [Am79C971 PHY]
                1092 0a78  Multimedia Home Network Adapter
                1668 0299  ActionLink Home Network Adapter
        2003  Am 1771 MBW [Alchemy]
        2096  CS5536 [Geode companion] UDC
        2097  CS5536 [Geode companion] UOC
        209a  CS5536 [Geode companion] IDE
+       2625  Am79C973 [Lance/PCI PCNet/32]
+       2627  Am79C975 [Lance/PCI PCNet/32]
        3000  ELanSC520 Microcontroller
        43a0  Hudson PCI to PCI bridge (PCIE port 0)
        43a1  Hudson PCI to PCI bridge (PCIE port 1)
        7801  FCH SATA Controller [AHCI mode]
                103c 168b  ProBook 4535s Notebook
                103c 194e  ProBook 455 G1 Notebook
+               1043 8623  AM1I-A Motherboard
                17aa 3988  Z50-75
                1849 7801  QC5000-ITX/PH
        7802  FCH SATA Controller [RAID mode]
        7807  FCH USB OHCI Controller
                103c 194e  ProBook 455 G1 Notebook
                103c 1985  Pavilion 17-e163sg Notebook PC
+               1043 8623  AM1I-A Motherboard
                17aa 3988  Z50-75
                1849 7807  QC5000-ITX/PH
        7808  FCH USB EHCI Controller
                103c 194e  ProBook 455 G1 Notebook
                103c 1985  Pavilion 17-e163sg Notebook PC
+               1043 8623  AM1I-A Motherboard
                17aa 3988  Z50-75
                1849 7808  QC5000-ITX/PH
        7809  FCH USB OHCI Controller
        780b  FCH SMBus Controller
                103c 194e  ProBook 455 G1 Notebook
                103c 1985  Pavilion 17-e163sg Notebook PC
+               1043 8623  AM1I-A Motherboard
                17aa 3988  Z50-75
                1849 780b  QC5000-ITX/PH
        780c  FCH IDE Controller
                103c 194e  ProBook 455 G1 Notebook
                103c 1985  Pavilion 17-e163sg Notebook PC
                1043 8444  F2A85-M Series
+               1043 8576  AM1I-A Motherboard
                17aa 3988  Z50-75
                1849 8892  QC5000-ITX/PH
        780e  FCH LPC Bridge
                103c 194e  ProBook 455 G1 Notebook
                103c 1985  Pavilion 17-e163sg Notebook PC
+               1043 8623  AM1I-A Motherboard
                17aa 3988  Z50-75
                1849 780e  QC5000-ITX/PH
        780f  FCH PCI Bridge
        7814  FCH USB XHCI Controller
                103c 194e  ProBook 455 G1 Notebook
                103c 1985  Pavilion 17-e163sg Notebook PC
+               1043 8623  AM1I-A Motherboard
                17aa 3988  Z50-75
                1849 7814  QC5000-ITX/PH
        7900  FCH SATA Controller [IDE mode]
        7901  FCH SATA Controller [AHCI mode]
                103c 8615  Pavilion Laptop 15-cw1xxx
+               1043 876b  PRIME Motherboard
                1462 7c37  X570-A PRO motherboard
+               ea50 ce19  mCOM10-L1900
        7902  FCH SATA Controller [RAID mode]
        7903  FCH SATA Controller [RAID mode]
        7904  FCH SATA Controller [AHCI mode]
        7908  FCH USB EHCI Controller
        790b  FCH SMBus Controller
                103c 8615  Pavilion Laptop 15-cw1xxx
+               1043 876b  PRIME Motherboard
                1462 7c37  X570-A PRO motherboard
                17aa 5124  ThinkPad E595
+               ea50 ce19  mCOM10-L1900
        790e  FCH LPC Bridge
                103c 8615  Pavilion Laptop 15-cw1xxx
+               1043 876b  PRIME B450M-A Motherboard
                1462 7c37  X570-A PRO motherboard
                17aa 5124  ThinkPad E595
+               ea50 ce19  mCOM10-L1900
        790f  FCH PCI Bridge
        7914  FCH USB XHCI Controller
        9600  RS780 Host Bridge
                1931 000a  GlobeTrotter Fusion Quad Lite (PPP data)
                1931 000b  GlobeTrotter Fusion Quad Lite (GSM data)
                807d 0035  PCI-USB2 (OHCI subsystem)
+               8086 4d44  D850EMV2 motherboard
        003b  PCI to C-bus Bridge
        003e  NAPCCARD Cardbus Controller
        0046  PowerVR PCX2 [midas]
                14c2 0205  PTI-205N USB 2.0 Host Controller
                1799 0002  Root Hub
                807d 1043  PCI-USB2 (EHCI subsystem)
+               8086 4d44  D850EMV2 motherboard
        00e7  uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller
        00f2  uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller
        00f3  uPD6113x Multimedia Decoder/Processor [EMMA2]
        0003  Control Video
        0004  PlanB Video-In
        0007  O'Hare I/O
+       000b  Apple Camera
        000c  DOS on Mac
        000e  Hydra Mac I/O
        0010  Heathrow Mac I/O
                103c 17e8  SN1000Q 16Gb Dual Port Fibre Channel Adapter
                103c 1939  QMH2672 16Gb Dual Port Fibre Channel Adapter
                103c 8002  3830C 16G Fibre Channel Host Bus Adapter
+               1077 0241  QLE2670 16Gb Single Port Fibre Channel Adapter
        2071  ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter
                1077 0283  QLE2764 Quad Port 32Gb Fibre Channel to PCIe Adapter
                1077 029e  QLE2694 Quad Port 16Gb Fibre Channel to PCIe Adapter
        2081  ISP2814-based 64/32G Fibre Channel to PCIe Controller
                1077 02e1  QLE2874 Quad Port 64GFC PCIe Gen4 x16 Adapter
                1077 02e3  QLE2774 Quad Port 32GFC PCIe Gen4 x16 Adapter
+       2089  ISP2854-based 64/32G Fibre Channel to PCIe Controller with StorCryption
+               1077 02e8  QLE2884 Quad Port 64GFC PCIe Gen4 x16 Adapter with StorCryption
+               1077 02ea  QLE2784 Quad Port 32GFC PCIe Gen4 x16 Adapter with StorCryption
        2100  QLA2100 64-bit Fibre Channel Adapter
                1077 0001  QLA2100 64-bit Fibre Channel Adapter
        2200  QLA2200 64-bit Fibre Channel Adapter
                1590 0203  StoreFabric SN1600Q 32Gb Single Port Fibre Channel Host Bus Adapter
                1590 0204  StoreFabric SN1600Q 32Gb Dual Port Fibre Channel Host Bus Adapter
                1590 022d  5830C 32Gb Dual Port Fibre Channel Adapter
+               193d 100d  NIC-FC680i-Mb-2x16G
        2281  ISP2812-based 64/32G Fibre Channel to PCIe Controller
                1077 02e2  QLE2872 Dual Port 64GFC PCIe Gen4 x8 Adapter
                1077 02e4  QLE2772 Dual Port 32GFC PCIe Gen4 x8 Adapter
                1077 02f3  QLogic 2x32Gb QLE2772 FC HBA
                1590 02d3  SN1610Q - 1P Enhanced 32GFC Single Port Fibre Channel Host Bus Adapter
                1590 02d4  SN1610Q – 2P Enhanced 32GFC Dual Port Fibre Channel Host Bus Adapter
+       2289  ISP2852-based 64/32G Fibre Channel to PCIe Controller with StorCryption
+               1077 02e9  QLE2882 Dual Port 64GFC PCIe Gen4 x8 Adapter with StorCryption
+               1077 02eb  QLE2782 Dual Port 32GFC PCIe Gen4 x8 Adapter with StorCryption
+               1077 02ef  QLE2880 Single Port 64GFC PCIe Gen4 x8 Adapter with StorCryption
+               1077 02f1  QLE2780 Single Port 32GFC PCIe Gen4 x8 Adapter with StorCryption
        2300  QLA2300 64-bit Fibre Channel Adapter
        2312  ISP2312-based 2Gb Fibre Channel to PCI-X HBA
                103c 0131  2Gb Fibre Channel - Single port [A7538A]
                103c 12dd  4Gb Fibre Channel [AB429A]
        2432  ISP2432-based 4Gb Fibre Channel to PCI Express HBA
                103c 7040  FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A]
-               1077 0137  QLE2460 4 GB PCI-X Host-Bus-Adapter
+               1077 0137  QLE2460 Single-Port 4Gbps FC-to-PCI-X/PCIe Host Bus Adapter
+               1077 0138  QLE2462 Dual-Port 4Gbps FC-to-PCI-X/PCIe Host Bus Adapter
        2532  ISP2532-based 8Gb Fibre Channel to PCI Express HBA
                1014 041e  FC EN0Y/EN12 PCIe2 LP 8 Gb 4-port Fibre Channel Adapter for POWER
                103c 3262  StorageWorks 81Q
                1590 021f  10/25GbE 2P QL41262HMCU-HP Adapter
                1590 0220  10/25GbE 2P QL41122HLRJ-HP Adapter
                1590 02bd  10Gb 2P 524SFP+ NIC
+               193d 1030  NIC-ETH681i-Mb-2x25G
+               193d 1032  NIC-ETH682i-Mb-2x25G
        8080  FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE)
                1077 0001  10GE 2P QL41162HxRJ-DE Adapter
                1077 0002  10GE 2P QL41112HxCU-DE Adapter
                10b5 2905  Alpermann+Velte PCI TS: Time Synchronisation Board
                10b5 3196  Goramo PLX200SYN sync serial card
                10b5 9050  PCI-I04 PCI Passive PC/CAN Interface
+               12fe 0001  CAN-PCI/331 CAN bus controller
                1369 8901  PCX11+ PCI
                1369 8f01  VX222
                1369 9401  PCX924
                1682 211c  GeForce 6600 256MB DDR DUAL DVI TV
        00f3  NV43 [GeForce 6200]
        00f4  NV43 [GeForce 6600 LE]
-       00f5  G71 [GeForce 7800 GS AGP]
+       00f5  G70/G71 [GeForce 7800 GS AGP]
        00f6  NV43 [GeForce 6800 GS/XT]
                1682 217e  XFX GeForce 6800 XTreme 256MB DDR3 AGP
        00f8  NV45GL [Quadro FX 3400/4400]
        0331  NV35 [GeForce FX 5900]
                1043 8145  V9950GE
        0332  NV35 [GeForce FX 5900XT]
-       0333  NV38 [GeForce FX 5950 Ultra]
+       0333  NV38 [GeForce FX 5950 Ultra / PCX 5950]
        0334  NV35 [GeForce FX 5900ZT]
                1462 9373  FX5900ZT-VTD128 (MS-8937)
        0338  NV35GL [Quadro FX 3000]
        0a21  GT216M [GeForce GT 330M]
        0a22  GT216 [GeForce 315]
        0a23  GT216 [GeForce 210]
+       0a24  GT216 [GeForce 405]
        0a26  GT216 [GeForce 405]
        0a27  GT216 [GeForce 405]
        0a28  GT216M [GeForce GT 230M]
        1184  GK104 [GeForce GTX 770]
        1185  GK104 [GeForce GTX 660 OEM]
                10de 106f  GK104 [GeForce GTX 760 OEM]
+       1186  GK104 [GeForce GTX 660 Ti]
        1187  GK104 [GeForce GTX 760]
        1188  GK104 [GeForce GTX 690]
        1189  GK104 [GeForce GTX 670]
        128a  GK208B
        128b  GK208B [GeForce GT 710]
                1043 85f7  GT710-SL-1GD5
+               1043 8770  GT710-4H-SL-2GD5
        128c  GK208B
        1290  GK208M [GeForce GT 730M]
                103c 2afa  GeForce GT 730A
        1aeb  TU116 High Definition Audio Controller
        1aec  TU116 USB 3.1 Host Controller
        1aed  TU116 USB Type-C UCSI Controller
+       1aef  GA102 High Definition Audio Controller
        1b00  GP102 [TITAN X]
        1b01  GP102 [GeForce GTX 1080 Ti 10GB]
        1b02  GP102 [TITAN Xp]
        1b07  GP102 [P102-100]
        1b30  GP102GL [Quadro P6000]
        1b38  GP102GL [Tesla P40]
+       1b39  GP102GL [Tesla P10]
        1b70  GP102GL
        1b78  GP102GL
        1b80  GP104 [GeForce GTX 1080]
        1c2d  GP106M
        1c30  GP106GL [Quadro P2000]
        1c31  GP106GL [Quadro P2200]
-       1c35  GP106
-       1c36  GP106
+       1c35  GP106M [Quadro P2000 Mobile]
+       1c36  GP106 [P106M]
        1c60  GP106BM [GeForce GTX 1060 Mobile 6GB]
                103c 8390  GeForce GTX 1060 Max-Q 6GB
        1c61  GP106BM [GeForce GTX 1050 Ti Mobile]
        1e04  TU102 [GeForce RTX 2080 Ti]
        1e07  TU102 [GeForce RTX 2080 Ti Rev. A]
                1462 3715  RTX 2080 Ti GAMING X TRIO
+       1e09  TU102 [CMP 50HX]
        1e2d  TU102 [GeForce RTX 2080 Ti Engineering Sample]
        1e2e  TU102 [GeForce RTX 2080 Ti 12GB Engineering Sample]
        1e30  TU102GL [Quadro RTX 6000/8000]
        1f08  TU106 [GeForce RTX 2060 Rev. A]
        1f09  TU106 [GeForce GTX 1660 SUPER]
        1f0a  TU106 [GeForce GTX 1650]
+       1f0b  TU106 [CMP 40HX]
        1f10  TU106M [GeForce RTX 2070 Mobile]
        1f11  TU106M [GeForce RTX 2060 Mobile]
        1f12  TU106M [GeForce RTX 2060 Max-Q]
        1f98  TU117M [GeForce MX450]
        1f99  TU117M
        1f9c  TU117M [GeForce MX450]
+       1f9d  TU117M [GeForce GTX 1650 Mobile / Max-Q]
        1fae  TU117GL
+       1fb0  TU117GLM [Quadro T1000 Mobile]
+       1fb1  TU117GLM [Quadro T600 Mobile]
+       1fb2  TU117GLM [Quadro T400 Mobile]
        1fb8  TU117GLM [Quadro T2000 Mobile / Max-Q]
        1fb9  TU117GLM [Quadro T1000 Mobile]
+       1fbb  TU117GLM [Quadro T500 Mobile]
        1fbf  TU117GL
        1fd9  TU117BM [GeForce GTX 1650 Mobile Refresh]
+       1fdd  TU117BM [GeForce GTX 1650 Mobile Refresh]
        1ff9  TU117GLM [Quadro T1000 Mobile]
        20b0  GA100 [A100 SXM4 40GB]
        20b1  GA100 [A100 PCIe 40GB]
+       20b2  GA100 [A100 SXM4 80GB]
+       20b6  GA100GL [PG506-232]
+       20b7  GA100GL [A30 PCIe]
        20be  GA100 [GRID A100A]
        20bf  GA100 [GRID A100B]
        20f1  GA100 [A100 PCIe 40GB]
        2184  TU116 [GeForce GTX 1660]
        2187  TU116 [GeForce GTX 1650 SUPER]
        2188  TU116 [GeForce GTX 1650]
+       2189  TU116 [CMP 30HX]
        2191  TU116M [GeForce GTX 1660 Ti Mobile]
        2192  TU116M [GeForce GTX 1650 Ti Mobile]
        21ae  TU116GL
        21bf  TU116GL
+       21c2  TU116
        21c4  TU116 [GeForce GTX 1660 SUPER]
        21d1  TU116BM [GeForce GTX 1660 Ti Mobile]
+       2200  GA102
        2204  GA102 [GeForce RTX 3090]
-       2206  GA102 [GeForce RTX 3080 10GB / 20GB]
+       2205  GA102 [GeForce RTX 3080 20GB]
+       2206  GA102 [GeForce RTX 3080]
+               10de 1467  GA102 [GeForce RTX 3080]
                10de 146d  GA102 [GeForce RTX 3080 20GB]
                1462 3892  RTX 3080 10GB GAMING X TRIO
+       2208  GA102 [GeForce RTX 3080 Ti]
+       220d  GA102 [GeForce RTX 3080 Lite Hash Rate]
        222b  GA102 [GeForce RTX 3090 Engineering Sample]
        222f  GA102 [GeForce RTX 3080 11GB / 12GB Engineering Sample]
        2230  GA102GL [RTX A6000]
+       2231  GA102GL [RTX A5000]
+       2235  GA102GL [A40]
+       2236  GA102GL [A10]
+       2237  GA102GL [A10G]
        223f  GA102GL
+       228b  GA104 High Definition Audio Controller
+       2302  GA103
+       2321  GA103
        2482  GA104 [GeForce RTX 3070 Ti]
-       2484  GA104 [GeForce RTX 3070 8GB / 16GB]
+       2483  GA104
+       2484  GA104 [GeForce RTX 3070]
                10de 146b  GA104 [GeForce RTX 3070]
                10de 14ae  GA104 [GeForce RTX 3070 16GB]
        2486  GA104 [GeForce RTX 3060 Ti]
-       249c  GA104M [GeForce RTX 3070 Mobile / Max-Q]
+       249c  GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB]
        249d  GA104M [GeForce RTX 3070 Mobile / Max-Q]
+       249f  GA104M
        24ac  GA104 [GeForce RTX 30x0 Engineering Sample]
        24ad  GA104 [GeForce RTX 3060 Engineering Sample]
        24af  GA104 [GeForce RTX 3070 Engineering Sample]
+       24b0  GA104GL [RTX A4000]
+       24b6  GA104GLM [RTX A5000 Mobile]
+       24b7  GA104GLM [RTX A4000 Mobile]
+       24b8  GA104GLM [RTX A3000 Mobile]
        24bf  GA104 [GeForce RTX 3070 Engineering Sample]
-       24dc  GA104 [GeForce RTX 3070 16GB Engineering Sample]
+       24dc  GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB]
+       24dd  GA104M [GeForce RTX 3070 Mobile / Max-Q]
+       2501  GA106 [GeForce RTX 3060]
+       2503  GA106 [GeForce RTX 3060]
+       2504  GA106 [GeForce RTX 3060 Lite Hash Rate]
+       2505  GA106
+       2520  GA106M [GeForce RTX 3060 Mobile / Max-Q]
+       2523  GA106M [GeForce RTX 3050 Ti Mobile / Max-Q]
        252f  GA106 [GeForce RTX 3060 Engineering Sample]
+       2560  GA106M [GeForce RTX 3060 Mobile / Max-Q]
+       2563  GA106M [GeForce RTX 3050 Ti Mobile / Max-Q]
+       2583  GA107 [GeForce RTX 3050]
+       25a0  GA107M [GeForce RTX 3050 Ti Mobile]
+       25a2  GA107M [GeForce RTX 3050 Mobile]
+       25a4  GA107
+       25a5  GA107M [GeForce RTX 3050 Mobile]
        25af  GA107 [GeForce RTX 3050 Engineering Sample]
+       25b5  GA107GLM [RTX A4 Mobile]
+       25b8  GA107GLM [RTX A2000 Mobile]
+       25e0  GA107BM [GeForce RTX 3050 Ti Mobile]
+       25e2  GA107BM [GeForce RTX 3050 Mobile]
+       25e5  GA107BM [GeForce RTX 3050 Mobile]
 10df  Emulex Corporation
        0720  OneConnect NIC (Skyhawk)
                103c 1934  FlexFabric 20Gb 2-port 650M Adapter
                1590 0213  StoreFabric SN1200E 1-Port 16Gb Fibre Channel Adapter
                1590 0214  StoreFabric SN1200E 2-Port 16Gb Fibre Channel Adapter
                1590 022e  Synergy 5330C 2-Port 32Gb Fibre Channel Mezz Card
+               193d 1060  NIC-FC730i-Mb-2P
        f011  Saturn: LightPulse Fibre Channel Host Adapter
        f015  Saturn: LightPulse Fibre Channel Host Adapter
        f085  LP850 Fibre Channel Host Adapter
                10df f419  LPe35002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter
                1590 02d5  StoreFabric SN1610E 1-Port 32Gb Fibre Channel Adapter
                1590 02d6  StoreFabric SN1610E 2-Port 32Gb Fibre Channel Adapter
+       f500  LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter
        f700  LP7000 Fibre Channel Host Adapter
        f701  LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
        f800  LP8000 Fibre Channel Host Adapter
        8111  Twist3 Frame Grabber
 10ec  Realtek Semiconductor Co., Ltd.
        0139  RTL-8139/8139C/8139C+ Ethernet Controller
+       3000  Killer E3000 2.5GbE Controller
        5208  RTS5208 PCI Express Card Reader
        5209  RTS5209 PCI Express Card Reader
        5227  RTS5227 PCI Express Card Reader
                1028 06d6  Latitude 7275 tablet
                1028 06dc  Latitude E7470
                1028 06e4  XPS 15 9550
+               1028 06e6  Latitude 11 5175 2-in-1
                17aa 224f  ThinkPad X1 Carbon 5th Gen
        5260  RTS5260 PCI Express Card Reader
        5286  RTS5286 PCI Express Card Reader
        5288  RTS5288 PCI Express Card Reader
        5289  RTL8411 PCI Express Card Reader
                1043 1457  K55A Laptop
+       5762  RTS5763DL NVMe SSD Controller
        8029  RTL-8029(AS)
                10b8 2011  EZ-Card (SMC1208)
                10ec 8029  RTL-8029(AS)
                8e2e 7000  KF-230TX
                8e2e 7100  KF-230TX/2
                a0a0 0007  ALN-325C
+       8161  RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
+               10ec 8168  TP-Link TG-3468 v4.0 Gigabit PCI Express Network Adapter
        8167  RTL-8110SC/8169SC Gigabit Ethernet
                105b 0e10  RTL-8110SC-GR on a N15235/A74MX mainboard
                1458 e000  GA-MA69G-S3H Motherboard
                1028 0283  Vostro 220
                1028 04b2  Vostro 3350
                1028 04da  Vostro 3750
+               1028 05d7  Alienware X51 R2
                1028 06f2  Latitude 3470
                1028 06f3  Latitude 3570
                1028 0869  Vostro 3470
                1043 83a3  M4A785/P7P55 Motherboard
                1043 8432  P8P67 and other motherboards
                1043 8505  P8 series motherboard
+               1043 8554  H81M-C Motherboard
+               1043 859e  AM1I-A Motherboard
+               1043 8677  PRIME B450M-A Motherboard
                105b 0d7c  D270S/D250S Motherboard
                10ec 8168  RTL8111/8168 PCI Express Gigabit Ethernet controller
                144d c652  RTL8168 on a NP300E5C series laptop
                1462 7522  X58 Pro-E
                1462 7c37  X570-A PRO motherboard
                1775 11cc  CC11/CL11
+               17aa 3098  ThinkCentre E73
                17aa 3814  Z50-75
                17aa 3823  Lenovo V130-15IGM Laptop - Type 81HL
                17aa 5124  ThinkPad E595
                7470 3468  TG-3468 Gigabit PCI Express Network Adapter
                8086 2055  NUC Kit DN2820FYKH
                8086 d615  Desktop Board D510MO/D525MW
+               ea50 ce19  mCOM10-L1900
        8169  RTL8169 PCI Gigabit Ethernet Controller
                1025 0079  Aspire 5024WLMi
                10bd 3202  EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter
                16ec 011f  USR997903
                1734 1091  D2030-A1
                a0a0 0449  AK86-L motherboard
+       816a  RTL8111xP UART #1
+               ea50 ce19  mCOM10-L1900
+       816b  RTL8111xP UART #2
+               ea50 ce19  mCOM10-L1900
+       816c  RTL8111xP IPMI interface
+               ea50 ce19  mCOM10-L1900
+       816d  RTL811x EHCI host controller
+               ea50 ce19  mCOM10-L1900
        8171  RTL8191SEvA Wireless LAN Controller
        8172  RTL8191SEvB Wireless LAN Controller
        8173  RTL8192SE Wireless LAN Controller
        5005  Alveo U250
        7038  FPGA Card XC7VX690T
                17aa 402f  FPGA XC7VX690T-3FFG1157E
+       8019  Memory controller
        8380  Ellips ProfiXpress Profibus Master
        8381  Ellips Santos Frame Grabber
        d154  Copley Controls CAN card (PCI-CAN-02)
        3220  RocketRAID 3220
        3320  RocketRAID 3320
        4310  RocketRaid 4310
+       7505  SSD7505 PCIe Gen4 x16 4-Port M.2 NVMe RAID Controller
 1104  RasterOps Corp.
 1105  Sigma Designs, Inc.
        1105  REALmagic Xcard MPEG 1/2/3/4 DVD Decoder
        0336  K8M890CE Host Bridge
        0340  PT900 Host Bridge
        0351  K8T890CF Host Bridge
-       0353  VX800 Host Bridge
+       0353  VX800/820-Series Chipset Host-Bridge Controller
        0364  CN896/VN896/P4M900 Host Bridge
                1043 81ce  P5VD2-VM mothervoard
        0391  VT8371 [KX133]
        0409  VX855/VX875 Host Bridge: Host Control
-       0410  VX900 Host Bridge: Host Control
+       0410  VX900 Series Host Bridge: Host Control
        0415  VT6415 PATA IDE Host Controller
                1043 838f  Motherboard
        0501  VT8501 [Apollo MVP4]
 # probably all K7VT2/4*/6
                1849 0571  K7VT series Motherboards
        0576  VT82C576 3V [Apollo Master]
-       0581  CX700/VX700 RAID Controller
+       0581  CX700/VX700/VX800/820-Series Serial ATA RAID-Controller
 # Upgrade bios to get correct ID: 5324 instead of 0581
                1106 0581  Wrong IDE ID
        0585  VT82C585VP [Apollo VP1/VPX]
        1296  P4M800 Host Bridge
        1308  PT894 Host Bridge
        1314  CN700/VN800/P4M800CE/Pro Host Bridge
-       1324  CX700/VX700 Host Bridge
+       1324  CX700/VX700-Series Error Reporting
        1327  P4M890 Host Bridge
        1336  K8M890CE Host Bridge
        1340  PT900 Host Bridge
        1353  VX800/VX820 Error Reporting
        1364  CN896/VN896/P4M900 Host Bridge
        1409  VX855/VX875 Error Reporting
-       1410  VX900 Error Reporting
+       1410  VX900 Series Error Reporting
        1571  VT82C576M/VT82C586
        1595  VT82C595/97 [Apollo VP2/97]
        1732  VT1732 [Envy24 II] PCI Multi-Channel Audio Controller
        2296  P4M800 Host Bridge
        2308  PT894 Host Bridge
        2314  CN700/VN800/P4M800CE/Pro Host Bridge
-       2324  CX700/VX700 Host Bridge
+       2324  CX700/VX700-Series Host Interface Control
        2327  P4M890 Host Bridge
        2336  K8M890CE Host Bridge
        2340  PT900 Host Bridge
        2353  VX800/VX820 Host Bus Control
        2364  CN896/VN896/P4M900 Host Bridge
        2409  VX855/VX875 Host Bus Control
-       2410  VX900 CPU Bus Controller
+       2410  VX900 Series CPU Bus Controller
        287a  VT8251 PCI to PCI Bridge
        287b  VT8251 Host Bridge
        287c  VT8251 PCIE Root Port
        287d  VT8251 PCIE Root Port
        287e  VT8237/8251 Ultra VLINK Controller
        3022  CLE266
-       3038  VT82xx/62xx UHCI USB 1.1 Controller
+       3038  VT82xx/62xx/VX700/8x0/900 UHCI USB 1.1 Controller
                0925 1234  onboard UHCI USB 1.1 Controller
                1019 0985  P6VXA Motherboard
                1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
                1043 8080  A7V333 motherboard
-               1043 808c  VT6202 USB2.0 4 port controller
+               1043 808c  VT62xx USB1.1 4 port controller
                1043 80a1  A7V8X-X motherboard
                1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
                1179 0001  Magnia Z310
+               1234 0925  MVP3 USB Controller
                1458 5004  GA-7VAX Mainboard
                1462 5901  KT6 Delta-FIS2R (MS-6590)
                1462 7020  K8T NEO 2 motherboard
        3101  VT8653 Host Bridge
        3102  VT8662 Host Bridge
        3103  VT8615 Host Bridge
-       3104  USB 2.0
+       3104  USB 2.0 EHCI-Compliant Host-Controller
                0925 1234  onboard EHCI USB 2.0 Controller
                1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
                1043 808c  A7V8X motherboard
        3269  KT880 Host Bridge
        3282  K8T800Pro Host Bridge
        3287  VT8251 PCI to ISA Bridge
-       3288  VT8237A/VT8251 HDA Controller
+       3288  VX900/VT8xxx High Definition Audio Controller
                19da a179  ZBOX VD01
        3290  K8M890 Host Bridge
        3296  P4M800 Host Bridge
-       3324  CX700/VX700 Host Bridge
+       3324  CX700/VX700-Series DRAM Bus Control
        3327  P4M890 Host Bridge
        3336  K8M890CE Host Bridge
        3337  VT8237A PCI to ISA Bridge
        3344  CN700/P4M800 Pro/P4M800 CE/VN800 Graphics [S3 UniChrome Pro]
        3349  VT8251 AHCI/SATA 4-Port Controller
        3351  VT3351 Host Bridge
-       3353  VX800 PCI to PCI Bridge
+       3353  VX800/820 PCI to PCI Bridge
        3364  CN896/VN896/P4M900 Host Bridge
+       3365  VT630x IEEE 1394 Host Controller [Fire II/M]
        3371  CN896/VN896/P4M900 [Chrome 9 HC]
        3372  VT8237S PCI to ISA Bridge
        337a  VT8237A PCI to PCI Bridge
                1043 8374  M5A88-V EVO
                1043 8384  P8P67 Deluxe Motherboard
        3409  VX855/VX875 DRAM Bus Control
-       3410  VX900 DRAM Bus Control
+       3410  VX900 Series DRAM Bus Control
                19da a179  ZBOX nano VD01
-       3432  VL80x xHCI USB 3.0 Controller
+       3432  VL800/801 xHCI USB 3.0 Controller
        3456  VX11 Standard Host Bridge
        345b  VX11 Miscellaneous Bus
-       3483  VL805 USB 3.0 Host Controller
+       3483  VL805/806 xHCI USB 3.0 Controller
        3a01  VX11 Graphics [Chrome 645/640]
        4149  VIA VT6420 (ATA133) Controller
        4204  K8M800 Host Bridge
        4296  P4M800 Host Bridge
        4308  PT894 Host Bridge
        4314  CN700/VN800/P4M800CE/Pro Host Bridge
-       4324  CX700/VX700 Host Bridge
+       4324  CX700/VX700-Series Power Management and Testing Control
        4327  P4M890 Host Bridge
        4336  K8M890CE Host Bridge
        4340  PT900 Host Bridge
        4353  VX800/VX820 Power Management Control
        4364  CN896/VN896/P4M900 Host Bridge
        4409  VX855/VX875 Power Management Control
-       4410  VX900 Power Management and Chip Testing Control
+       4410  VX900 Series Power Management and Chip Testing Control
                19da a179  ZBOX nano VD01
        5030  VT82C596 ACPI [Apollo PRO]
        5122  VX855/VX875 Chrome 9 HCM Integrated Graphics
        5287  VT8251 Serial ATA Controller
        5290  K8M890 I/O APIC Interrupt Controller
        5308  PT894 I/O APIC Interrupt Controller
-       5324  VX800 Serial ATA and EIDE Controller
+       5324  CX700M2/VX700/VX800/820-Series Serial ATA & EIDE-Controller
        5327  P4M890 I/O APIC Interrupt Controller
        5336  K8M890CE I/O APIC Interrupt Controller
        5340  PT900 I/O APIC Interrupt Controller
        5364  CN896/VN896/P4M900 I/O APIC Interrupt Controller
        5372  VT8237/8251 Serial ATA Controller
        5409  VX855/VX875 APIC and Central Traffic Control
-       5410  VX900 APIC and Central Traffic Control
+       5410  VX900 Series APIC and Central Traffic Control
        6100  VT85C100A [Rhine II]
        6287  SATA RAID Controller
        6290  K8M890CE Host Bridge
        6353  VX800/VX820 Scratch Registers
        6364  CN896/VN896/P4M900 Security Device
        6409  VX855/VX875 Scratch Registers
-       6410  VX900 Scratch Registers
+       6410  VX900 Series Scratch Registers
                19da a179  ZBOX nano VD01
        7122  VX900 Graphics [Chrome9 HD]
        7204  K8M800 Host Bridge
        7296  P4M800 Host Bridge
        7308  PT894 Host Bridge
        7314  CN700/VN800/P4M800CE/Pro Host Bridge
-       7324  CX700/VX700 Host Bridge
+       7324  CX700/VX700-Series North-South Module Interface Control
        7327  P4M890 Host Bridge
        7336  K8M890CE Host Bridge
        7340  PT900 Host Bridge
        7353  VX800/VX820 North-South Module Interface Control
        7364  CN896/VN896/P4M900 Host Bridge
        7409  VX855/VX875 North-South Module Interface Control
-       7410  VX900 North-South Module Interface Control
+       7410  VX900 Series North-South Module Interface Control
                19da a179  ZBOX nano VD01
        8231  VT8231 [PCI-to-ISA Bridge]
        8235  VT8235 ACPI
        8305  VT8363/8365 [KT133/KM133 AGP]
-       8324  CX700/VX700 PCI to ISA Bridge
+       8324  CX700/VX700-Series Bus Control and Power Management
        8353  VX800/VX820 Bus Control and Power Management
        8391  VT8371 [KX133 AGP]
        8400  MVP4
        8409  VX855/VX875 Bus Control and Power Management
-       8410  VX900 Bus Control and Power Management
+       8410  VX900 Series Bus Control and Power Management
                19da a179  ZBOX VD01
        8500  KLE133/PLE133/PLE133T
        8501  VT8501 [Apollo MVP4 AGP]
        8a26  KL133/KL133A/KM133/KM133A [S3 ProSavage]
        8d01  PN133/PN133T [S3 Twister]
        8d04  KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR]
-       9001  VX900 Serial ATA Controller
+       9001  VX900 Series Serial-ATA Controller
        9082  Standard AHCI 1.0 SATA Controller
        9140  HDMI Audio Device
        9201  USB3.0 Controller
-       9530  Secure Digital Memory Card Controller
-       95d0  SDIO Host Controller
+       9530  VX800/820/900 Series Secure Digital Memory Card Controller
+       95d0  VX800/820/900 Series SDIO Host Controller
        a208  PT890 PCI to PCI Bridge Controller
        a238  K8T890 PCI to PCI Bridge Controller
        a327  P4M890 PCI to PCI Bridge Controller
-       a353  VX8xx South-North Module Interface Control
+       a353  VX8xx/900 Series South-North Module Interface Control
        a364  CN896/VN896/P4M900 PCI to PCI Bridge Controller
-       a409  VX855/VX875 USB Device Controller
-       a410  VX900 PCI Express Root Port 0
+       a409  VX855/VX875/VX900 Series USB Device Controller
+       a410  VX900 Series PCI Express Root Port 0
        b091  VT8633 [Apollo Pro266 AGP]
        b099  VT8366/A/7 [Apollo KT266/A/333 AGP]
        b101  VT8653 AGP Bridge
        b168  VT8235 PCI Bridge
        b188  VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South]
                147b 1407  KV8-MAX3 motherboard
-       b198  VT8237/VX700 PCI Bridge
+       b198  VT8237/CX700/VX700-Series PCI to PCI Bridge
        b213  VPX/VPX2 I/O APIC Interrupt Controller
        b353  VX855/VX875/VX900 PCI to PCI Bridge
-       b410  VX900 PCI Express Root Port 1
+       b410  VX900 Series PCI Express Root Port 1
        b999  [K8T890 North / VT8237 South] PCI Bridge
        c208  PT890 PCI to PCI Bridge Controller
        c238  K8T890 PCI to PCI Bridge Controller
        c327  P4M890 PCI to PCI Bridge Controller
        c340  PT900 PCI to PCI Bridge Controller
-       c353  VX800/VX820 PCI Express Root Port
+       c353  VX800/820-Series PCI-Express Root (PCI-to-PCI Virtual Bridge)
        c364  CN896/VN896/P4M900 PCI to PCI Bridge Controller
        c409  VX855/VX875 EIDE Controller
-       c410  VX900 PCI Express Root Port 2
+       c410  VX900 Series PCI Express Root Port 2
        d104  VT8237R USB UDCI Controller
        d208  PT890 PCI to PCI Bridge Controller
        d213  VPX/VPX2 PCI to PCI Bridge Controller
        d238  K8T890 PCI to PCI Bridge Controller
        d340  PT900 PCI to PCI Bridge Controller
-       d410  VX900 PCI Express Root Port 3
+       d410  VX900 Series PCI Express Root Port 3
        e208  PT890 PCI to PCI Bridge Controller
        e238  K8T890 PCI to PCI Bridge Controller
        e340  PT900 PCI to PCI Bridge Controller
-       e353  VX800/VX820 PCI Express Root Port
-       e410  VX900 PCI Express Physical Layer Electrical Sub-block
+       e353  VX800/820-Series PCI-Express Root Port 0
+       e410  VX900 Series PCI Express Physical Layer Electrical Sub-block
        f208  PT890 PCI to PCI Bridge Controller
        f238  K8T890 PCI to PCI Bridge Controller
        f340  PT900 PCI to PCI Bridge Controller
-       f353  VX800/VX820 PCI Express Root Port
+       f353  VX800/820-Series PCI-Express Root Port 1
+       f410  VX900 Series PCI UART Port 0-3
 1107  Stratus Computers
        0576  VIA VT82C570MV [Apollo] (Wrong vendor ID!)
 1108  Proteon, Inc.
        0002  Dual PCI to RapidIO Bridge
        000b  POET Serial RapidIO Bridge
        000d  POET PSDMS Device
-1135  Fuji Xerox Co Ltd
+1135  FUJIFILM Business Innovation Corp.
        0001  Printer controller
 1136  Momentum Data Systems
        0002  PCI-JTAG
 1172  Altera Corporation
        00a7  Stratix V
        0530  Stratix IV
+       646c  KT-500/KT-521 board
 1173  Adobe Systems, Inc
 1174  Bridgeport Machines
 1175  Mitron Computer Inc.
 1179  Toshiba Corporation
        0102  Extended IDE Controller
        0103  EX-IDE Type-B
+       010e  PXP04 NVMe SSD
        010f  NVMe Controller
        0110  NVMe SSD Controller Cx5
                1028 1ffb  Express Flash NVMe 960G (RI) U.2 (CD5)
                1d49 4039  Thinksystem U.2 CM5 NVMe SSD
                1d49 403a  Thinksystem AIC CM5 NVMe SSD
        0113  BG3 NVMe SSD Controller
+               1179 0001  Toshiba KBG30ZMS128G 128GB NVMe SSD
        0115  XG4 NVMe SSD Controller
+       011a  XG6 NVMe SSD Controller
        0404  DVD Decoder card
        0406  Tecra Video Capture device
        0407  DVD Decoder card (Version 2)
 11aa  Actel
 # Nee Galileo Technology, Inc.
 11ab  Marvell Technology Group Ltd.
+       0100  88F3700 [Armada 3700 Family] ARM SoC
        0146  GT-64010/64010A System Controller
        0f53  88E6318 Link Street network controller
        11ab  MV88SE614x SATA II PCI-E controller
        6480  MV64460/64461/64462 System Controller
                1775 c200  C2K CompactPCI single board computer
        6485  MV64460/64461/64462 System Controller, Revision B
+       6820  88F6820 [Armada 385] ARM SoC
+       6828  88F6828 [Armada 388] ARM SoC
        7042  88SX7042 PCI-e 4-port SATA-II
                16b8 434b  Tempo SATA E4P
        7810  MV78100 [Discovery Innovation] ARM SoC
                11ad 0003  LNE100TX
                11ad f003  LNE100TX
                11ad ffff  LNE100TX
-               1385 f004  FA310TX
+               1385 f004  FA310/TX LAN 10/100 PCI Ethernet Adapter
                2646 f002  KNE110TX EtheRx Fast Ethernet
        c115  LNE100TX [Linksys EtherFast 10/100]
                11ad c001  LNE100TX [ver 2.0]
        8073  PM8073 Tachyon SPCve 12G 16-port SAS/SATA controller
        8531  PM8531 PFX 24xG3 Fanout PCIe Switches
        8546  PM8546 B-FEIP PSX 96xG3 PCIe Storage Switch
+       8562  PM8562 Switchtec PFX-L 32xG3 Fanout-Lite PCIe Gen3 Switch
 11f9  I-Cube Inc
 11fa  Kasan Electronics Company, Ltd.
 11fb  Datel Inc
                a000 2000  Parallel Port
                a000 6000  SPI
                a000 7000  Local Bus
+               ea50 1c10  RXi2-BP
 125c  Aurora Technologies, Inc.
        0101  Saturn 4520P
        0640  Aries 16000P
        0820  SM820 Lynx3D
        0910  SM910
        2262  SM2262/SM2262EN SSD Controller
+       2263  SM2263EN/SM2263XT SSD Controller
 1270  Olympus Optical Co., Ltd.
 1271  GW Instruments
 1272  Telematics International
 1281  Yokogawa Electric Corporation
 1282  Davicom Semiconductor, Inc.
        6585  DM562P V90 Modem
-       9009  Ethernet 100/10 MBit
+       9009  DM9009 Ethernet Controller
        9100  21x4x DEC-Tulip compatible 10/100 Ethernet
-       9102  21x4x DEC-Tulip compatible 10/100 Ethernet
+       9102  DM9102 Fast Ethernet Controller
 # Subsystem ID is main ID reveresed.
                0291 8212  DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit
        9132  Ethernet 100/10 MBit
        8888  IT8888F/G PCI to ISA Bridge with SMB [Golden Gate]
        8889  IT8889F PCI to ISA Bridge
        8892  IT8892E PCIe to PCI Bridge
+               8086 200d  DH61CR motherboard
        8893  IT8893E PCIe to PCI Bridge
        e886  IT8330G
 1284  Sahara Networks, Inc.
        2304  PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch
        2404  PI7C9X2G404 EL/SL PCIe2 4-Port/4-Lane Packet Switch
        2608  PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch
+               ea50 cc10  RXi2-BP
        400a  PI7C9X442SL PCI Express Bridge Port
        400e  PI7C9X442SL USB OHCI Controller
        400f  PI7C9X442SL USB EHCI Controller
        8150  PCI to PCI Bridge
        8152  PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge
        8154  PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge
+       8619  PI7C9X2G1616PR PCIe2 16-Port/16-Lane Packet Switch
        e110  PI7C9X110 PCI Express to PCI bridge
                1775 11cc  CC11/CL11 CompactPCI Bridge
        e111  PI7C9X111SL PCIe-to-PCI Reversible Bridge
 12ea  Zuken
 12eb  Aureal Semiconductor
        0001  Vortex 1
+               0000 0300  Terasound A3D PCI
                104d 8036  AU8820 Vortex Digital Audio Processor
                1092 2000  Sonic Impact A3D
                1092 2100  Sonic Impact A3D
                1092 2110  Sonic Impact A3D
                1092 2200  Sonic Impact A3D
-               122d 1002  AU8820 Vortex Digital Audio Processor
+               122d 1002  SC 338-A3D
                12eb 0001  AU8820 Vortex Digital Audio Processor
                5053 3355  Montego
                50b2 1111  XLerate
 134f  Algo System Co Ltd
 1350  Systec Co. Ltd
 1351  Sonix Inc
-# nee Thales Idatys
-1353  Vierling Communication SAS
+# nee Vierling Communication SAS, nee Thales Idatys
+1353  dbeeSet Technology
        0002  Proserver
        0003  PCI-FUT
        0004  PCI-S0
        0005  PCI-FUT-S0
+       0006  OTDU-1U (FPGA Zynq-7000)
+       0007  OTDU-EX
 1354  Dwave System Inc
 1355  Kratos Analytical Ltd
 1356  The Logical Co
 1414  Microsoft Corporation
        0001  MN-120 (ADMtek Centaur-C based)
        0002  MN-130 (ADMtek Centaur-P based)
+# Virtual Video Card Device for Windows Remote Desktop (RDP)
+       008c  Basic Render Driver
        5353  Hyper-V virtual VGA
        5801  XMA Decoder (Xenon)
        5802  SATA Controller - CdRom (Xenon)
        9513  OX16PCI954 (Quad 16950 UART) function 1 (parallel port)
        9521  OX16PCI952 (Dual 16950 UART)
        9523  OX16PCI952 Integrated Parallel Port
-       c158  OXPCIe952 Dual 16C950 UART
+# The OXPCIe952 PCI Express Bridge to Dual Serial & Parallel Port chip is a multifunction device that encodes five reset straps and 1:0 function bits in bits 6:0 of the device ID. Hence it consumes a whole 128-entry block, which is however sparsely populated as obviously disabled functions do not appear in the configuration space.
+       c100  OXPCIe952 Parallel Port
+       c101  OXPCIe952 Legacy 950 UART
+       c104  OXPCIe952 Parallel Port
+       c105  OXPCIe952 Legacy 950 UART
+       c106  OXPCIe952 GPIO
+       c108  OXPCIe952 Parallel Port
+       c109  OXPCIe952 Legacy 950 UART
+       c10c  OXPCIe952 Parallel Port
+       c10d  OXPCIe952 Legacy 950 UART
+       c10e  OXPCIe952 GPIO
+       c110  OXPCIe952 Parallel Port
+       c114  OXPCIe952 Parallel Port
+       c118  OXPCIe952 Parallel Port
+       c11b  OXPCIe952 Native 950 UART
+       c11c  OXPCIe952 Parallel Port
+       c11e  OXPCIe952 GPIO
+       c11f  OXPCIe952 Native 950 UART
+       c120  OXPCIe952 Legacy 950 UART
+       c124  OXPCIe952 Legacy 950 UART
+       c126  OXPCIe952 GPIO
+       c128  OXPCIe952 Legacy 950 UART
+       c12c  OXPCIe952 Legacy 950 UART
+       c12e  OXPCIe952 GPIO
+       c134  OXPCIe952 GPIO
+       c138  OXPCIe952 Native 950 UART
+       c13c  OXPCIe952 GPIO
+       c13d  OXPCIe952 Native 950 UART
+       c140  OXPCIe952 Legacy 950 UART #1
+       c141  OXPCIe952 Legacy 950 UART #2
+       c144  OXPCIe952 Legacy 950 UART #1
+       c145  OXPCIe952 Legacy 950 UART #2
+       c146  OXPCIe952 GPIO
+       c148  OXPCIe952 Legacy 950 UART #1
+       c149  OXPCIe952 Legacy 950 UART #2
+       c14c  OXPCIe952 Legacy 950 UART #1
+       c14d  OXPCIe952 Legacy 950 UART #2
+       c14e  OXPCIe952 GPIO
+       c154  OXPCIe952 GPIO
+       c158  OXPCIe952 Dual Native 950 UART
                e4bf c504  CP4-SCAT Wireless Technologies Carrier Board
                e4bf d551  DU1-MUSTANG Dual-Port RS-485 Interface
+       c15c  OXPCIe952 GPIO
+       c15d  OXPCIe952 Dual Native 950 UART
        c308  EX-44016 16-port serial
 1416  Multiwave Innovation pte Ltd
 1417  Convergenet Technologies Inc
        a544  Exynos 8890 PCIe Root Complex
        a800  XP941 PCIe SSD
        a802  NVMe SSD Controller SM951/PM951
-       a804  NVMe SSD Controller SM961/PM961
+               144d a801  PM963 2.5" NVMe PCIe SSD
+       a804  NVMe SSD Controller SM961/PM961/SM963
+               144d a801  SM963 2.5" NVMe PCIe SSD
        a808  NVMe SSD Controller SM981/PM981/PM983
                1d49 403b  Thinksystem U.2 PM983 NVMe SSD
+       a80a  NVMe SSD Controller PM9A1/PM9A3/980PRO
        a820  NVMe SSD Controller 171X
                1028 1f95  Express Flash NVMe XS1715 SSD 400GB
                1028 1f96  Express Flash NVMe XS1715 SSD 800GB
                1028 2097  EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 1.92TB
                1028 2098  EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 3.84TB
                1028 2099  EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 7.68TB
+               1028 2118  Ent NVMe v2 AGN FIPS MU U.2 1.6TB
+               1028 2119  Ent NVMe v2 AGN MU U.2 1.6TB
+               1028 2120  Ent NVMe v2 AGN FIPS MU U.2 3.2T
+               1028 2121  Ent NVMe v2 AGN MU U.2 3.2TB
+               1028 2122  Ent NVMe v2 AGN FIPS MU U.2 6.4TB
+               1028 2123  Ent NVMe v2 AGN MU U.2 6.4TB
+               1028 2124  Ent NVMe v2 AGN FIPS MU U.2 6.4TB
+               1028 2125  Ent NVMe v2 AGN MU U.2 12.8TB
+               1028 2126  Ent NVMe v2 AGN FIPS RI U.2 1.92TB
+               1028 2127  Ent NVMe v2 AGN RI U.2 1.92TB
+               1028 2128  Ent NVMe v2 AGN FIPS RI U.2 3.84TB
+               1028 2129  Ent NVMe v2 AGN RI U.2 3.84TB
+               1028 2130  Ent NVMe v2 AGN FIPS RI U.2 7.68TB
+               1028 2131  Ent NVMe v2 AGN RI U.2 7.68TB
+               1028 2132  Ent NVMe v2 AGN FIPS RI U.2 15.36TB
+               1028 2133  Ent NVMe v2 AGN RI U.2 15.36TB
        ecec  Exynos 8895 PCIe Root Complex
 144e  OLITEC
 144f  Askey Computer Corp.
 1456  Advanced Hardware Architectures
 1457  Nuera Communications Inc
 1458  Gigabyte Technology Co., Ltd
+       3483  USB 3.0 Controller (VIA VL80x-based xHCI Controller)
 1459  DOOIN Electronics
 145a  Escalate Networks Inc
 145b  PRAIM SRL
        e836  M115S Hybrid Analog/DVB PAL/SECAM/NTSC Tuner
        f436  AVerTV Hybrid+FM
 1462  Micro-Star International Co., Ltd. [MSI]
+# VIA Driver-inf
+       3483  MSI USB 3.0 (VIA VL80x-based xHCI USB Controller)
        aaf0  Radeon RX 580 Gaming X 8G
 1463  Fast Corporation
 1464  Interactive Circuits & Systems Ltd
 148a  OPTO
 148b  INNOMEDIALOGIC Inc.
 148c  Tul Corporation / PowerColor
+       2391  Radeon RX 590 [Red Devil]
 148d  DIGICOM Systems, Inc.
        1003  HCF 56k Data/Fax Modem
 148e  OSI Plus Corporation
                103c 1240  Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM)
 14c2  DTK Computer
 14c3  MEDIATEK Corp.
+       7612  MT7612E 802.11acbgn PCI Express Wireless Network Adapter
        7630  MT7630e 802.11bgn Wireless Network Adapter
 # MT7612E too?
        7662  MT7662E 802.11ac PCI Express Wireless Network Adapter
+       7915  MT7915E 802.11ax PCI Express Wireless Network Adapter
 14c4  IWASAKI Information Systems Co Ltd
 14c5  Automation Products AB
 14c6  Data Race Inc
                103c 0890  NC6000 laptop
                103c 099c  NX6110/NC6120
                10cf 1279  LifeBook E8010D
-       165f  NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
+       165f  NetXtreme BCM5720 Gigabit Ethernet PCIe
                1028 04f7  PowerEdge R320 server
                1028 08fd  PowerEdge R6515/R7515 LOM
                1028 08ff  PowerEdge Rx5xx LOM Board
                1028 0900  PowerEdge C6525 LOM
+# Dell 5720 LOM
+               1028 0917  PowerEdge C6520 LOM
                103c 1786  NC332T Adapter
                103c 193d  NC332i Adapter
                103c 2133  NC332i Adapter
                103c 339d  Ethernet 10Gb 2-port 530SFP+ Adapter
                193d 1003  530F-B
                193d 1006  530F-L
+               193d 100f  NIC-ETH522i-Mb-2x10G
        1690  NetXtreme BCM57760 Gigabit Ethernet PCIe
        1691  NetLink BCM57788 Gigabit Ethernet PCIe
                1028 04aa  XPS 8300
        16a0  NetLink BCM5785 Fast Ethernet
        16a1  BCM57840 NetXtreme II 10 Gigabit Ethernet
                1043 866e  PEB-10G/57840-2T 10GBase-T Network Adapter
+               193d 100b  NIC-ETH521i-Mb-4x10G
        16a2  BCM57840 NetXtreme II 10/20-Gigabit Ethernet
                103c 1916  FlexFabric 20Gb 2-port 630FLB Adapter
                103c 1917  FlexFabric 20Gb 2-port 630M Adapter
        16d4  BCM57402 NetXtreme-E Ethernet Partition
        16d5  BCM57407 NetXtreme-E 10GBase-T Ethernet Controller
        16d6  BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller
+               14e4 1202  BCM957412M4122C OCP 1x25G Type1 wRoCE
                14e4 4120  NetXtreme E-Series Advanced Dual-port 10Gb SFP+ Ethernet Network Daughter Card
                14e4 4126  NetXtreme-E Dual-port 10G SFP+ Ethernet OCP 3.0 Adapter (BCM957412N4120C)
                152d 8b20  BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller
                152d 8b22  BCM57412 NetXtreme-E 25Gb RDMA Ethernet Controller
        16d7  BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller
-               14e4 1202  BCM957412M4122C OCP 1x25G Type1 wRoCE
                14e4 1402  BCM957414A4142CC 10Gb/25Gb Ethernet PCIe
                14e4 1404  BCM957414M4142C OCP 2x25G Type1 wRoCE
                14e4 4140  NetXtreme E-Series Advanced Dual-port 25Gb SFP28 Network Daughter Card
        1750  BCM57508 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet
                14e4 2100  NetXtreme-E Dual-port 100G QSFP56 Ethernet PCIe4.0 x16 Adapter (BCM957508-P2100G)
                14e4 5208  NetXtreme-E Dual-port 100G QSFP56 Ethernet OCP 3.0 Adapter (BCM957508-N2100G)
+               14e4 d124  NetXtreme-E P2100D BCM57508 2x100G QSFP PCIE
+               14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet
        1751  BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet
+               14e4 5045  NetXtreme-E BCM57504 4x25G OCP3.0
+               14e4 5250  NetXtreme-E BCM57504 4x25G KR Mezz
+               14e4 d142  NetXtreme-E P425D BCM57504 4x25G SFP28 PCIE
        1752  BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet
        1800  BCM57502 NetXtreme-E Ethernet Partition
        1801  BCM57504 NetXtreme-E Ethernet Partition
        1802  BCM57508 NetXtreme-E Ethernet Partition
+               14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Partition
        1803  BCM57502 NetXtreme-E RDMA Partition
        1804  BCM57504 NetXtreme-E RDMA Partition
-       1805  BCM57508 NetXtreme-E RDMA Partition
+       1805  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Partition
+               14e4 df24  NetXtreme-E NGM2100D BCM57508 2x100G KR Mezz RDMA Partition
        1806  BCM5750X NetXtreme-E Ethernet Virtual Function
+               14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function
        1807  BCM5750X NetXtreme-E RDMA Virtual Function
+               14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function
+       1808  BCM5750X NetXtreme-E Ethernet Virtual Function
+               14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function
+       1809  BCM5750X NetXtreme-E RDMA Virtual Function
+               14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function
+       2711  BCM2711 PCIe Bridge
        3352  BCM3352
        3360  BCM3360
        4210  BCM4210 iLine10 HomePNA 2.0
        4410  BCM4413 iLine32 HomePNA 2.0
        4411  BCM4413 V.90 56k modem
        4412  BCM4412 10/100BaseT
+       4415  BCM4359 802.11ac Dual-Band Wireless Network Controller
        441f  BCM4361 802.11ac Dual-Band Wireless Network Controller
        4420  BCM4361 802.11ac 2.4 GHz Wireless Network Controller
        4421  BCM4361 802.11ac 5 GHz Wireless Network Controller
                0070 6902  WinTV HVR-4000-HD
                0070 7801  WinTV HVR-1800 MCE
                0070 9001  Nova-T DVB-T
+               0070 9002  Nova-T DVB-T Model 909
                0070 9200  Nova-SE2 DVB-S
                0070 9202  Nova-S-Plus DVB-S
                0070 9402  WinTV-HVR1100 DVB-T/Hybrid
        9260  RCIM-II Real-Time Clock & Interrupt Module
        9271  RCIM-III Real-Time Clock & Interrupt Module (PCIe)
        9272  Pulse Width Modulator Card
+       9273  RCIM-IV Real-Time Clock & Interrupt Module (PCIe)
        9277  5 Volt Delta Sigma Converter Card
        9278  10 Volt Delta Sigma Converter Card
        9287  Analog Output Card
                15b3 0021  MCX4421A-ACQN ConnectX-4 Lx EN OCP,2x25G
                15b3 0025  ConnectX-4 Lx 25 GbE Dual Port SFP28 rNDC
                193d 100a  620F-B
+# NIC-ETH540F-LP-2P SFP+ Ethernet Card
+               193d 1023  NIC-ETH540F-LP-2P
+               193d 1031  NIC-ETH640i-Mb-2x25G
+# NIC-ETH640F-3S-2P OCP3.0 Card
+               193d 1083  NIC-ETH640F-3S-2P
+# NIC-ETH540F-3S-2P OCP3.0 2x10G Card
+               193d 1084  NIC-ETH540F-3S-2P
        1016  MT27710 Family [ConnectX-4 Lx Virtual Function]
        1017  MT27800 Family [ConnectX-5]
                15b3 0006  ConnectX®-5 EN network interface card, 100GbE single-port QSFP28, PCIe3.0 x16, tall bracket; MCX515A-CCAT
                15b3 0007  Mellanox ConnectX®-5 MCX516A-CCAT
                15b3 0020  ConnectX®-5 EN network interface card, 10/25GbE dual-port SFP28, PCIe3.0 x8, tall bracket ; MCX512A-ACAT
                15b3 0068  ConnectX®-5 EN network interface card for OCP2.0, Type 1, with host management, 25GbE dual-port SFP28, PCIe3.0 x8, no bracket Halogen free ; MCX542B-ACAN
+               193d 1051  NIC-IB1040i-Mb-2P
        1018  MT27800 Family [ConnectX-5 Virtual Function]
        1019  MT28800 Family [ConnectX-5 Ex]
                15b3 0008  ConnectX-5 Ex EN network interface card, 100GbE dual-port QSFP28, PCIe4.0 x16, tall bracket; MCX516A-CDAT
        1979  MT2910 Family [ConnectX-7 PCIe Bridge]
        197a  MT43162 Family [BlueField-3 Lx SoC PCIe Bridge]
        197b  MT43244 Family [BlueField-3 SoC PCIe Bridge]
+       2020  MT2892 Family [ConnectX-6 Dx Emulated PCIe Bridge]
+       2021  MT42822 Family [BlueField-2 SoC Emulated PCIe Bridge]
+       2023  MT2910 Family [ConnectX-7 Emulated PCIe Bridge]
+       2024  MT43244 Family [BlueField-3 SoC Emulated PCIe Bridge]
        4117  MT27712A0-FDCF-AE
                1bd4 0039  SN10XMP2P25
                1bd4 003a  25G SFP28 SP EO251FM9 Adapter
 15b7  Sandisk Corp
        2001  Skyhawk Series NVME SSD
        5001  WD Black NVMe SSD
-       5002  WD Black 2018 / PC SN720 NVMe SSD
-       5003  WD Black 2018 / PC SN520 NVMe SSD
-       5006  WD Black 2019/PC SN750 NVMe SSD
+       5002  WD Black 2018/SN750 / PC SN720 NVMe SSD
+       5003  WD Blue SN500 / PC SN520 NVMe SSD
+       5004  PC SN520 NVMe SSD
+       5005  PC SN520 NVMe SSD
+       5006  WD Black SN750 / PC SN730 NVMe SSD
        5009  WD Blue SN550 NVMe SSD
                15b7 5009  WD Blue SN550 NVMe SSD
+       500b  PC SN530 NVMe SSD
+               1414 500b  Xbox Series X
+       500d  WD Ultrastar DC SN340 NVMe SSD
+       5011  WD Black SN850
 15b8  ADDI-DATA GmbH
        1001  APCI1516 SP controller (16 digi outputs)
        1003  APCI1032 SP controller (32 digi inputs w/ opto coupler)
        2086  CryptoServer Se-Series Hardware Security Module
        c040  CryptoServer CSe-Series Hardware Security Module
        c051  CryptoServer Se-Series Gen2 Hardware Security Module
+       c070  u.trust Anchor Hardware Security Module cs7.2 Series
+       c071  u.trust Anchor Hardware Security Module cs7.3 Series
+       c072  u.trust Anchor Hardware Security Module cs7.3 Series Virtual Function
 # nee Atheros Communications, Inc.
 168c  Qualcomm Atheros
        0007  AR5210 Wireless Network Adapter [AR5000 802.11a]
        ab08  21x4x DEC-Tulip compatible 10/100 Ethernet
        ab09  21x4x DEC-Tulip compatible 10/100 Ethernet
 173b  Altima (nee Broadcom)
+       0001  AC1002 PCI Gigabit Ethernet controller
        03e8  AC1000 Gigabit Ethernet
        03e9  AC1001 Gigabit Ethernet
        03ea  AC9100 Gigabit Ethernet
        0245  PCA7428CE_F1 - Analog Inputs isolated
        0303  PCD-7006C Digital Input & Output PCI Card
        0800  PCD8006 - PCIe digital Inputs/Outputs
+       0840  PCA-8428 General-purpose multifunctional PCIe card with 8 analog inputs and 2 analog outputs
+       0841  PCA-8429 General-purpose multifunctional PCIe card with 8 analog inputs
+       0842  PCA-8438 General-purpose multifunctional PCIe card with 16 analog inputs and 2 analog outputs
+       0843  PCA-8439 General-purpose multifunctional PCIe card with 16 analog inputs
        ff00  CTU CAN FD PCIe Card
 1761  Pickering Interfaces Ltd
 1771  InnoVISION Multimedia Ltd.
        0004  Octeon (and older) FIPS
        0005  Octeon CN38XX Network Processor Pass 3.x
        0006  RoHS
-       0010  Nitrox XL NPX
+       0010  CN15XX/CN16XX [Nitrox PX]
+       0011  CNN35XX [Nitrox III]
+       0012  CNN55XX [Nitrox V]
        0020  Octeon CN31XX Network Processor
        0030  Octeon CN30XX Network Processor
        0040  Octeon CN58XX Network Processor
        8083  GL880 USB 1.1 UHCI controller
        8084  GL880 USB 2.0 EHCI controller
        9750  GL9750 SD Host Controller
+       9755  GL9755 SD Host Controller
        e763  GL9763E eMMC Controller
 17aa  Lenovo
+       3181  ThinkCentre M75n IoT
        402b  Intel 82599ES 10Gb 2-port Server Adapter X520-2
 17ab  Phillips Components
 17af  Hightech Information System Ltd.
                1385 6d00  WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter
                1737 0054  WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400
        0105  MSM8998 PCIe Root Complex
-       0108  SM8150/SA8195P PCIe Root Complex
-       0300  MDM9x35 LTE Modem
-       0301  MDM9640 PCIe Root Complex
-       0302  MDM9x55 LTE Modem [Snapdragon X12]
+       0108  SM8150 PCIe Root Complex
+       0109  SA8195P PCIe Root Complex
+       0300  MDM9x35 LTE Modem [Snapdragon X7]
+       0301  MDM9x45 LTE Modem [Snapdragon X12]
+       0302  MDM9x55 LTE Modem [Snapdragon X16]
        0400  Datacenter Technologies QDF2432 PCI Express Root Port
        0401  Datacenter Technologies QDF2400 PCI Express Root Port
        1000  QCS405 PCIe Root Complex
+       1101  QCA6390 Wireless Network Adapter [AX500-DBS (2x2)]
 17cc  NetChip Technology, Inc
        2280  USB 2.0
 17cd  Cadence Design Systems, Inc.
        0185  NT40A01 Network Adapter
        01a5  NT200A01 Network Adapter
        01c5  NT200A02 Network Adapter
+       01d5  NT50B01 Network Adapter
+       01e5  NT100A01 Network Adapter
 18f6  NextIO
        1000  [Nexsis] Switch Virtual P2P PCIe Bridge
        1001  [Texsis] Switch Virtual P2P PCIe Bridge
        0250  JMC250 PCI Express Gigabit Ethernet Controller
        0260  JMC260 PCI Express Fast Ethernet Controller
        0368  JMB368 IDE controller
+       0585  JMB58x AHCI SATA controller
        2360  JMB360 AHCI Controller
        2361  JMB361 AHCI/IDE
                1462 7235  P965 Neo MS-7235 mainboard
                19e5 d303  Hi1822 SP522 (2*8G FC)
                19e5 d306  Hi1822 SP523 (2*8G FC)
        1710  iBMA Virtual Network Adapter
-       1711  Hi1710 [iBMC Intelligent Management system chip w/VGA support]
+       1711  Hi171x Series [iBMC Intelligent Management system chip w/VGA support]
        1822  Hi1822 Family (4*25GE)
                19e5 d129  Hi1822 SP570 (4*25GE)
                19e5 d136  Hi1822 SP580 (4*25GE)
                19e5 d141  Hi1822 SP583 (4*25GE)
                19e5 d146  Hi1822 SP585 (4*25GE)
+       3714  ES3000 V5 NVMe PCIe SSD
+               19e5 5312  NVMe SSD ES3500P V5 2000GB 2.5" U.2
        371e  Hi1822 Family Virtual Bridge
+       3754  ES3000 V6 NVMe PCIe SSD
+               19e5 6122  NVMe SSD ES3600P V6 1600GB 2.5" U.2
+               19e5 6123  NVMe SSD ES3600P V6 3200GB 2.5" U.2
+               19e5 6124  NVMe SSD ES3600P V6 6400GB 2.5" U.2
+               19e5 6141  NVMe SSD ES3800P V6 800GB 2.5" U.2
+               19e5 6142  NVMe SSD ES3800P V6 1600GB 2.5" U.2
+               19e5 6212  NVMe SSD ES3500P V6 1920GB 2.5" U.2
+               19e5 6213  NVMe SSD ES3500P V6 3840GB 2.5" U.2
+               19e5 6214  NVMe SSD ES3500P V6 7680GB 2.5" U.2
+               19e5 6215  NVMe SSD ES3500P V6 15360GB 2.5" U.2
        375e  Hi1822 Family Virtual Function
        379e  Hi1822 Family Virtual Function
        a120  HiSilicon PCIe Root Port with Gen4
 1a4a  SLAC National Accelerator Lab TID-AIR
        1000  MCOR Power Supply Controller
        1010  AMC EVR - Stockholm Timing Board
-       1020  Cluster On Board (COB) Ethernet Switch
+       1020  PGPCard - Gen3 Cameralink Interface
+       1030  PGPCard - Gen3 GIGe Interface
        2000  PGPCard - 4 Lane
        2001  PGPCard - 8 Lane Plus EVR
        2010  PCI-Express EVR
-# PC-260-101-03
-       2020  PGP-GEN3 PCIe
+       2011  PCI-Express EVR - TPR Version
+       2020  PGP-GEN3 PCIe - 8 Lane Plus EVR
        2030  AXI Stream DAQ PCIe card
+       2040  EXO PCIe TEM
+       3000  COB DTM V1
+       3001  COB DTM V2
 1a51  Hectronic AB
 1a55  Rohde & Schwarz DVS GmbH
        0010  SDStationOEM
        1052  Virtio input
 # virtio 1.0
        1053  Virtio socket
+       105a  Virtio file system
        1110  Inter-VM shared memory
                1af4 1100  QEMU Virtual Machine
 1af5  Netezza Corp.
 1b13  Jaton Corp
 1b1a  K&F Computing Research Co.
        0e70  GRAPE
+1b1c  Corsair
 1b21  ASMedia Technology Inc.
        0611  ASM1061 SATA IDE Controller
        0612  ASM1062 Serial ATA Controller
                1849 0612  Motherboard
+       1040  ASM1040 XHCI Controller
        1042  ASM1042 SuperSpeed USB Host Controller
                1043 1059  K53SM motherboard
                1043 8488  P8B WS Motherboard
        1080  ASM1083/1085 PCIe to PCI Bridge
                1849 1080  Motherboard
        1142  ASM1042A USB 3.0 Host Controller
-       1184  ASM1184e PCIe Switch Port
-               1849 1184  ASM1184e PCIe Switch
+       1182  ASM1182e 2-Port PCIe x1 Gen2 Packet Switch
+               1b21 118f  ASM1182e 2-Port PCIe x1 Gen2 Packet Switch
+       1184  ASM1184e 4-Port PCIe x1 Gen2 Packet Switch
+               1849 1184  ASM1184e 4-Port PCIe x1 Gen2 Packet Switch
        1242  ASM1142 USB 3.1 Host Controller
        1343  ASM1143 USB 3.1 Host Controller
        2142  ASM2142 USB 3.1 Host Controller
+               1462 7a72  H270 PC MATE
        3242  ASM3242 USB 3.2 Host Controller
 1b26  Netcope Technologies, a.s.
        c132  COMBO-LXT155
        000b  QEMU PCIe Expander bridge
        000c  QEMU PCIe Root port
        000d  QEMU XHCI Host Controller
+       0010  QEMU NVM Express Controller
        0100  QXL paravirtual graphic card
                1af4 1100  QEMU Virtual Machine
 1b37  Signal Processing Devices Sweden AB
        0601  NumaChip N601
        0602  NumaChip N602
 1b4b  Marvell Technology Group Ltd.
+# device 1b4b:0100 reports incorrect vendor id due to hw erratum (correct is 11ab)
+       0100  88F3700 [Armada 3700 Family] ARM SoC
        0640  88SE9128 SATA III 6Gb/s RAID Controller
        2241  88NR2241 Non-Volatile memory controller
+               1028 2112  BOSS-N1 Monolithic
+               1028 2113  BOSS-N1 Modular
                1d49 0306  ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit
                1d49 0307  ThinkSystem 7mm NVMe 2-Bay Rear RAID Enablement Kit
        9120  88SE9120 SATA 6Gb/s Controller
        9172  88SE9172 SATA 6Gb/s Controller
        9178  88SE9170 PCIe SATA 6Gb/s Controller
        917a  88SE9172 SATA III 6Gb/s RAID Controller
+       9182  88SE9182 PCIe 2.0 x2 2-port SATA 6 Gb/s Controller
        9183  88SS9183 PCIe SSD Controller
        9192  88SE9172 SATA III 6Gb/s RAID Controller
        91a0  88SE912x SATA 6Gb/s Controller [IDE mode]
        91a4  88SE912x IDE Controller
+       9215  88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller
        9220  88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller
-       9230  88SE9230 PCIe SATA 6Gb/s Controller
+       9230  88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller
                1028 1fd6  BOSS-S1 Adapter
                1028 1fdf  BOSS-S1 Modular
                1028 1fe2  BOSS-S1 Adapter
 1b94  Signatec / Dynamic Signals Corp
        e400  PX14400 Dual Xilinx Virtex5 based Digitizer
 1b96  Western Digital
+       2200  Ultrastar DC SN630 NVMe SSD
+       2201  Ultrastar DC SN630 NVMe SSD
+       2300  Ultrastar DC SN840 NVMe SSD
+       2400  Ultrastar DC SN640 NVMe SSD
+       2401  Ultrastar DC SN640 NVMe SSD
+       2402  Ultrastar DC SN640 NVMe SSD
+       2404  Ultrastar DC SN640 NVMe SSD
+       2500  Ultrastar DC SN840 NVMe SSD
+       2600  Ultrastar DC ZN540 ZNS NVMe SSD
+       3714  PC SN730 NVMe SSD
+       3734  PC SN730 NVMe SSD
 1b9a  XAVi Technologies Corp.
 1baa  QNAP Systems, Inc.
 1bad  ReFLEX CES
 # Kersey 2.5" TCG
                1bb1 0152  Nytro 5520 TCG
                1bb1 01a1  Nytro XP7102
+       5012  FireCuda 510 SSD
+       5016  FireCuda 520 SSD
 1bb3  Bluecherry
        4304  BC-04120A MPEG4 4 port video encoder / decoder
        4309  BC-08240A MPEG4 4 port video encoder / decoder
 1bbf  Maxeler Technologies Ltd.
        0003  MAX3
        0004  MAX4
+1bc0  Innodisk Corporation
+       1001  PCIe 3TG6-P Controller
+       1002  PCIe 3TE6 Controller
+       1160  PCIe 3TE2 Controller
+       1321  PCIe 4TG-P Controller
+       1322  PCIe 4TE Controller
+       2262  PCIe 3TG3-P Controller
+       5208  PCIe 3TE7 Controller
+       5216  PCIe 3TE8 Controller
+       5236  PCIe 4TG2-P Controller
 1bcf  NEC Corporation
        001c  Vector Engine 1.0
 1bd0  Astronics Corporation
        1002  PM1553-5 (PC/104+ MIL-STD-1553 Interface Card)
        1004  AB3000 Series Rugged Computer
        1005  PE1000 (Multi-Protocol PCIe/104 Interface Card)
+       1006  webCS Wireless Aircraft Communications Server
+       1007  AB3000 Series Rugged Computer (Series N)
+       1008  ME1000 mPCIe Avionics Interface Card
+       100a  NG1 Series Avionics Converter
        1101  OmniBus II PCIe Multi-Protocol Interface Card
        1102  OmniBusBox II Multi-Protocol Interface Core
        1103  OmniBus II cPCIe/PXIe Multi-Protocol Interface Card
+       1200  NG3 Series Mil-Std-1553 Interface
+       1201  NG3 Series ARINC 429 Interface
+       1202  NG3 Series Avionics Discrete & Serial Interface
+       1203  NG3 Series Avionics Discrete Interface
 1bd4  Inspur Electronic Information Industry Co., Ltd.
        0911  Arria10_PCIe_F10A1150
 1bee  IXXAT Automation GmbH
        001b  FD720
        001c  FD922
        001d  Vega
+       001f  FD940
 1c28  Lite-On IT Corp. / Plextor
        0122  M6e PCI Express SSD [Marvell 88SS9183]
 # previously Fiberblaze
        00e1  PacketMover 2x100Gb [Tivoli]
        00e3  PacketMover 2x10Gb [Tivoli]
        00e5  PacketMover 2x10Gb [Corfu]
+       1000  SmartNIC N5010 4x100Gb
+       1001  SmartNIC N5011 w/2xE810 4x100Gb
        a000  FBC2CGG3 Capture 2x40Gb [Mango_02]
        a001  FBC2CGG3 Capture 2x100Gb [Mango_02]
        a003  FBC2CGG3 Capture 16x10Gb [Mango]
        1284  PC300 NVMe Solid State Drive 512GB
        1285  PC300 NVMe Solid State Drive 1TB
        1327  BC501 NVMe Solid State Drive 512GB
+       1339  BC511
        1504  SC300 512GB M.2 2280 SATA Solid State Drive
+       1527  PC401 NVMe Solid State Drive 256GB
        243b  PE6110 NVMe Solid State Drive
                1c5c 0100  PE6110 NVMe Solid State Drive
        2839  PE8000 Series NVMe Solid State Drive
                1c5c 0100  PE8000 Series NVMe Solid State Drive
 1c5f  Beijing Memblaze Technology Co. Ltd.
-       000d  PBlaze5 520/526 AIC
-       003d  PBlaze5 920/926 AIC
-       010d  PBlaze5 520/526 U.2
-       013d  PBlaze5 920/926 U.2
+       000d  PBlaze5 520/526
+       003d  PBlaze5 920/926
+       003e  PBlaze6 6920
+               1c5f 0a31  NVMe SSD PBlaze6 6920 3840GB 2.5" U.2
+               1c5f 0a41  NVMe SSD PBlaze6 6920 7680GB 2.5" U.2
+               1c5f 4a31  NVMe SSD PBlaze6 6920 3200GB 2.5" U.2
+               1c5f 4a41  NVMe SSD PBlaze6 6920 6400GB 2.5" U.2
        0540  PBlaze4 NVMe SSD
        0550  PBlaze5 700/900
        0555  PBlaze5 510/516
        0001  Hunter PCI Express
 1c8c  Mobiveil, Inc.
 1cb0  Shannon Systems
+       8266  Andalusia Series SSD
+               1cb0 2021  Andalusia Series OCS U.2 SSD
+               1cb0 2121  Andalusia Series ZNS U.2 SSD
+               1cb0 2f21  Andalusia Series NVMe U.2 SSD
        d000  Venice NVMe SSD
                1cb0 2010  Venice-E Series OCS U.2
                1cb0 2011  Venice Series OCS U.2
        0305  Simulyzer-RT CompactPCI Serial CAN-1 card
 # supports 8x CAN (-FD) interfaces
        0306  Simulyzer-RT CompactPCI Serial CAN-2 card (CAN-FD)
+       0307  Simulyzer-RT CompactPCI Serial DIO-2 card [Xilinx Zynq UltraScale+]
 1cd7  Nanjing Magewell Electronics Co., Ltd.
        0010  Pro Capture Endpoint
        0014  PRO CAPTURE AIO 4K PLUS
        0009  ExaNIC X25
        000a  ExaNIC X100
        000b  ExaNIC V9P
+       000c  ExaNIC V9P-3
        0100  ExaDISK FX1
 1cf0  Akitio
 1cf7  Subspace Dynamics
 1d00  Pure Storage
 1d05  Tongfang Hongkong Limited
 1d0f  Amazon.com, Inc.
+       8061  NVMe EBS Controller
        cd01  NVMe SSD Controller
        ec20  Elastic Network Adapter (ENA)
        efa0  Elastic Fabric Adapter (EFA)
        1014  AR-MAN-U280 [Manitou Class Accelerator for U280]
        1015  AR-ARK-BBDEV-FX0 [Arkville 32B DPDK Baseband Device]
        1016  AR-ARK-BBDEV-FX1 [Arkville 64B DPDK Baseband Device]
+       1017  AR-ARK-FX1 [Arkville 64B Multi-Homed Primary Endpoint]
+       1018  AR-ARK-FX1 [Arkville 64B Multi-Homed Secondary Endpoint]
+       1019  AR-ARK-FX1 [Arkville 64B Multi-Homed Tertiary Endpoint]
+       101a  AR-ARK-SRIOV-FX0 [Arkville 32B Primary Physical Function]
+       101b  AR-ARK-SRIOV-FX1 [Arkville 64B Primary Physical Function]
+       101c  AR-ARK-SRIOV-VF [Arkville Virtual Function]
        4200  A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument]
 1d72  Xiaomi
 1d78  DERA Storage
                1d78 3105  D5457 U.2 3.2TB NVMe SSD
                1d78 3107  D5457 U.2 6.4TB NVMe SSD
 1d7c  Aerotech, Inc.
+# Fiber-optic HyperWire motion control bus from Aerotech.
+       0001  HyperWire Adapter
 1d82  NETINT Technologies Inc.
        0101  Codensity D400 SSD
        0102  Codensity D408 PCIe Gen4 NVMe SSD
        0202  Codensity T408 Video Encoding-Decoding Accelerator
-1d87  Fuzhou Rockchip Electronics Co., Ltd
+# nee Fuzhou Rockchip Electronics Co., Ltd
+1d87  Rockchip Electronics Co., Ltd
        0100  RK3399 PCI Express Root Port
        1808  RK1808 Neural Network Processor Card
+       3566  RK3568 Remote Signal Processor
 1d8f  Enyx
-1d93  YADRO (KNS Group)
+1d93  YADRO
 1d94  Chengdu Haiguang IC Design Co., Ltd.
        1450  Root Complex
        1451  I/O Memory Management Unit
        0001  Colossus GC2 [C2]
        0002  Colossus GC1 [S1]
 1d97  Shenzhen Longsys Electronics Co., Ltd.
+       2263  SM2263EN/SM2263XT-based OEM SSD
 1d9b  Facebook, Inc.
        0010  Networking DOM Engine
        0011  IO Bridge
 1da1  Teko Telecom S.r.l.
 1da2  Sapphire Technology Limited
+       e26a  Radeon R7 250
 1da3  Habana Labs Ltd.
        0001  HL-1000 AI Inference Accelerator [Goya]
 # PCIe accelerator card for Deep Learning training tasks
        1000  HL-2000 AI Training Accelerator [Gaudi]
+# PCIe accelerator card for Deep Learning training tasks with secured firmware
+       1010  HL-2000 AI Training Accelerator [Gaudi secured]
 1db2  ATP ELECTRONICS INC
 1dbb  NGD Systems, Inc.
 1dbf  Guizhou Huaxintong Semiconductor Technology Co., Ltd
                1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB
                1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB
                1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB
-               1dd8 4007  DSP DSC-25 10/25G 2p OCP Card
-               1dd8 4008  DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+               1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card
+               1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card
                1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
                1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
-               1dd8 400d  DSP DSC-100 100G 2p QSFP28 Card
+               1dd8 400d  DSP DSC-100 Ent 100Gb Card
+               1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
        1001  DSC Virtual Downstream Port
                1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB
                1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB
                1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB
-               1dd8 4007  DSP DSC-25 10/25G 2p OCP Card
-               1dd8 4008  DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+               1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card
+               1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card
                1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
                1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
-               1dd8 400d  DSP DSC-100 100G 2p QSFP28 Card
+               1dd8 400d  DSP DSC-100 Ent 100Gb Card
+               1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
        1002  DSC Ethernet Controller
                1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB
                1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB
                1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB
-               1dd8 4007  DSP DSC-25 10/25G 2p OCP Card
-               1dd8 4008  DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+               1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card
+               1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card
                1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
                1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
-               1dd8 400d  DSP DSC-100 100G 2p QSFP28 Card
+               1dd8 400d  DSP DSC-100 Ent 100Gb Card
+               1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
        1003  DSC Ethernet Controller VF
                1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB
                1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB
                1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB
-               1dd8 4007  DSP DSC-25 10/25G 2p OCP Card
-               1dd8 4008  DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+               1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card
+               1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card
                1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
                1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
-               1dd8 400d  DSP DSC-100 100G 2p QSFP28 Card
+               1dd8 400d  DSP DSC-100 Ent 100Gb Card
+               1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
        1004  DSC Management Controller
                1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB
                1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB
                1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB
-               1dd8 4007  DSP DSC-25 10/25G 2p OCP Card
-               1dd8 4008  DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+               1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card
+               1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card
                1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
                1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
-               1dd8 400d  DSP DSC-100 100G 2p QSFP28 Card
+               1dd8 400d  DSP DSC-100 Ent 100Gb Card
+               1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
        1007  DSC Storage Accelerator
                1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB
                1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB
                1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB
-               1dd8 4007  DSP DSC-25 10/25G 2p OCP Card
-               1dd8 4008  DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+               1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card
+               1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card
                1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
                1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
-               1dd8 400d  DSP DSC-100 100G 2p QSFP28 Card
+               1dd8 400d  DSP DSC-100 Ent 100Gb Card
+               1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
 1de0  Groq
-       0000  Q100 Tensor Streaming Processor
+# rename due to conflict with a term in use by another company for an entirely different product.
+       0000  TSP100 Tensor Streaming Processor
 1de1  Tekram Technology Co.,Ltd.
        0391  TRM-S1040 [DC-315 / DC-395 series]
-       2020  DC-390
+       2020  DC-390 Series SCSI Adapter [AMD Am53C974]
        690c  690c
        dc29  DC290
 1de5  Eideticom, Inc
        e00a  eMAG PCI Express Root Port 5
        e00b  eMAG PCI Express Root Port 6
        e00c  eMAG PCI Express Root Port 7
+# Root Complex A (RCA)
+       e100  Altra PCI Express Root Complex A
+# RCA port 0
+       e101  Altra PCI Express Root Port a0
+# RCA port 1
+       e102  Altra PCI Express Root Port a1
+# RCA port 2
+       e103  Altra PCI Express Root Port a2
+# RAC port 3
+       e104  Altra PCI Express Root Port a3
+# RCA port 4
+       e105  Altra PCI Express Root Port a4
+# RCA port 5
+       e106  Altra PCI Express Root Port a5
+# RCA port 6
+       e107  Altra PCI Express Root Port a6
+# RCA port 7
+       e108  Altra PCI Express Root Port a7
+# Root Complex B (RCB)
+       e110  Altra PCI Express Root Complex B
+# RCB port 0
+       e111  Altra PCI Express Root Port b0
+# RCB port 1
+       e112  Altra PCI Express Root Port b1
+# RCB port 2
+       e113  Altra PCI Express Root Port b2
+# RCB port 3
+       e114  Altra PCI Express Root Port b3
+# RCB port 4
+       e115  Altra PCI Express Root Port b4
+# RCB port 5
+       e116  Altra PCI Express Root Port b5
+# RCB port 6
+       e117  Altra PCI Express Root Port b6
+# RCB port 7
+       e118  Altra PCI Express Root Port b7
 1df3  Ethernity Networks
        0201  ACE-NIC40 Programmable Network Accelerator
                1df3 0001  ENA1040
        0206  ACE-NIC200 Programmable Network Accelerator
                1df3 0000  Maintenance Mode
                1df3 0001  ENA2200F
+       0207  ACE-NIC50RN Programmable Network Accelerator
+               1df3 0000  Maintenance Mode
+               1df3 0001  ENA2050RN
+       0208  ACE-NIC100RN Programmable Network Accelerator
+               1df3 0000  Maintenance Mode
+               1df3 0001  ENA2100RN
 1df7  opencpi.org
        0001  ml605
        0002  alst4
                1028 210f  Dell Ent NVMe FIPS CM6 MU 3.2TB
                1028 2110  Dell Ent NVMe FIPS CM6 MU 6.4TB
                1e0f 0001  Generic NVMe CM6 RI 3.84TB
+       0009  NVMe SSD
+               1e0f 0001  Toshiba RC500 NVMe SSD 500GB
 1e17  Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
 1e24  Squirrels Research Labs
        0101  Acorn CLE-101
 1e26  Fujitsu Client Computing Limited
 1e36  Shanghai Enflame Technology Co. Ltd
        0001  T10 [CloudBlazer]
+       0002  T11 [CloudBlazer]
+       0003  T10(QSFP-DD) [CloudBlazer]
+       8011  I10 [CloudBlazer]
+       8012  I10L [CloudBlazer]
 # nee Thinci, Inc
 1e38  Blaize, Inc
        0102  Xplorer X1600
+1e3b  Shenzhen DAPU Microelectronics Co., Ltd
+       1098  Haishen NVMe SSD
+               1e3b 0001  Enterprise NVMe SSD U.2 0.8TB (H2100)
+               1e3b 0002  Enterprise NVMe SSD U.2 0.96TB (H2200)
+               1e3b 0004  Enterprise NVMe SSD U.2 1.6TB (H2100)
+               1e3b 0005  Enterprise NVMe SSD U.2 1.92TB (H2200)
+               1e3b 0009  Enterprise NVMe SSD U.2 0.8TB (H3100)
+               1e3b 000a  Enterprise NVMe SSD U.2 0.96TB (H3200)
+               1e3b 000c  Enterprise NVMe SSD U.2 1.6TB (H3100)
+               1e3b 000d  Enterprise NVMe SSD U.2 1.92TB (H3200)
+               1e3b 0014  Enterprise NVMe SSD U.2 3.2TB (H3100)
+               1e3b 0015  Enterprise NVMe SSD U.2 3.84TB (H3200)
+               1e3b 0021  Enterprise NVMe SSD U.2 6.4TB (H3100)
+               1e3b 0022  Enterprise NVMe SSD U.2 7.68TB (H3200)
+               1e3b 0061  Enterprise NVMe SSD HHHL 0.8TB (H2100)
+               1e3b 0062  Enterprise NVMe SSD HHHL 0.96TB (H2200)
+               1e3b 0064  Enterprise NVMe SSD HHHL 1.6TB (H2100)
+               1e3b 0065  Enterprise NVMe SSD HHHL 1.92TB (H2200)
+               1e3b 006c  Enterprise NVMe SSD HHHL 0.8TB (H3100)
+               1e3b 006d  Enterprise NVMe SSD HHHL 0.96TB (H3200)
+               1e3b 006f  Enterprise NVMe SSD HHHL 1.6TB (H3100)
+               1e3b 0070  Enterprise NVMe SSD HHHL 1.92TB (H3200)
+               1e3b 007c  Enterprise NVMe SSD HHHL 3.2TB (H3100)
+               1e3b 007d  Enterprise NVMe SSD HHHL 3.84TB (H3200)
+               1e3b 007f  Enterprise NVMe SSD HHHL 6.4TB (H3100)
+               1e3b 0080  Enterprise NVMe SSD HHHL 7.68TB (H3200)
 1e3d  Burlywood, Inc
 1e49  Yangtze Memory Technologies Co.,Ltd
 1e4b  MAXIO Technology (Hangzhou) Ltd.
        1601  NVMe SSD Controller MAP1601
 1e4c  GSI Technology
 # Associative Processing Unit (APU)
-       0010  APU [Leda-G]
+       0010  APU [Leda]
                1e4c 0120  SE120
 1e57  Beijing Panyi Technology Co., Ltd
        0100  The device has already been deleted.
                0000 0100  PY8800 64GB Accelerator
+1e60  Hailo Technologies Ltd.
+       2864  Hailo-8 AI Processor
 1e6b  Axiado Corp.
 1e7b  Dataland
 1e7c  Brainchip Inc
 # aka SED Systems
 1e94  Calian SED
 1e95  Solid State Storage Technology Corporation
+1ea0  Tencent Technology (Shenzhen) Company Limited
+       2a16  Cloud Intelligent Inference Controller
+1eab  Hefei DATANG Storage Technology Co.,LTD.
+       300a  NVMe SSD Controller 300A
+       300b  NVMe SSD Controller 300B
 1eae  XFX Limited
 1eb1  VeriSilicon Inc
        1001  Video Accelerator
+1ebd  EMERGETECH Company Ltd.
+       0101  Seirios 2063 Video Codec
+1ed3  Yeston
+1ed8  Digiteq Automotive
+       0101  FG4 PCIe Frame Grabber
+1ed9  Myrtle.ai
+1ee9  SUSE LLC
 # nee Tumsan Oy
 1fc0  Ascom (Finland) Oy
        0300  E2200 Dual E1/Rawpipe Card
 2348  Racore
        2010  8142 100VG/AnyLAN
 2646  Kingston Technology Company, Inc.
-       2263  A2000, M.2, 500GB
+       0010  HyperX Predator PCIe AHCI SSD
+       2262  KC2000 NVMe SSD
+       2263  A2000 NVMe SSD
+       5008  U-SNS8154P3 NVMe SSD
+       500d  OM3PDP3 NVMe SSD
 270b  Xantel Corporation
 270f  Chaintech Computer Co. Ltd
 2711  AVID Technology Inc.
        7053  CH353 PCI Dual Serial and Parallel Ports Controller
        7073  CH356 PCI Quad Serial and Parallel Ports Controller
        7173  CH355 PCI Quad Serial Port Controller
-434e  CAST Navigation LLC
+434e  Cornelis Networks
+43bc  Tiger Lake-H PCIe Root Port #5
 4444  Internext Compression Inc
        0016  iTVC16 (CX23416) Video Decoder
                0070 0003  WinTV PVR 250
        0100  2nd Generation Core Processor Family DRAM Controller
                1028 04aa  XPS 8300
                1043 844d  P8P67/P8H67 Series Motherboard
+               8086 200d  DH61CR motherboard
        0101  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port
                1028 04b2  Vostro 3350
                106b 00dc  MacBookPro8,2 [Core i7, 15", 2011]
                1043 844d  P8B WS Motherboard
        0172  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
        0176  3rd Gen Core processor Graphics Controller
+       0201  Arctic Sound
        0284  Comet Lake PCH-LP LPC Premium Controller/eSPI Controller
        02a3  Comet Lake PCH-LP SMBus Host Controller
        02a4  Comet Lake SPI (flash) Controller
        02a6  Comet Lake North Peak
+       02b0  Comet Lake PCI Express Root Port #9
+       02b1  Comet Lake PCI Express Root Port #10
+       02b3  Comet Lake PCI Express Root Port #12
+       02b4  Comet Lake PCI Express Root Port #13
+       02b8  Comet Lake PCI Express Root Port #1
+       02bc  Comet Lake PCI Express Root Port #5
+       02c5  Comet Lake Serial IO I2C Host Controller
        02c8  Comet Lake PCH-LP cAVS
        02d3  Comet Lake SATA AHCI Controller
        02e0  Comet Lake Management Engine Interface
        02e8  Serial IO I2C Host Controller
        02e9  Comet Lake Serial IO I2C Host Controller
+       02ea  Comet Lake PCH-LP LPSS: I2C Controller #2
        02ed  Comet Lake PCH-LP USB 3.1 xHCI Host Controller
        02ef  Comet Lake PCH-LP Shared SRAM
        02f0  Comet Lake PCH-LP CNVi WiFi
                8086 0034  Wireless-AC 9560 160MHz
                8086 0070  Wi-Fi 6 AX201 160MHz
                8086 0074  Wi-Fi 6 AX201 160MHz
+               8086 4070  Wireless-AC 9462 80MHz
        02f5  Comet Lake PCH-LP SCS3
        02f9  Comet Lake Thermal Subsytem
        02fc  Comet Lake Integrated Sensor Solution
        0406  Haswell Integrated Graphics Controller
        040a  Xeon E3-1200 v3 Processor Integrated Graphics Controller
        0412  Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
+               1028 05d7  Alienware X51 R2
                103c 1998  EliteDesk 800 G1
+               17aa 3098  ThinkCentre E73
                17aa 309f  ThinkCentre M83
        0416  4th Gen Core Processor Integrated Graphics Controller
                17aa 220e  ThinkPad T440p
        06ab  Comet Lake PCH Serial IO SPI Controller #1
        06ac  Comet Lake PCI Express Root Port #21
        06b0  Comet Lake PCI Express Root Port #9
+       06bd  Comet Lake PCIe Port #6
        06c0  Comet Lake PCI Express Root Port #17
        06c8  Comet Lake PCH cAVS
+       06d2  Comet Lake SATA AHCI Controller
        06e0  Comet Lake HECI Controller
+       06e3  Comet Lake Keyboard and Text (KT) Redirection
        06e8  Comet Lake PCH Serial IO I2C Controller #0
        06e9  Comet Lake PCH Serial IO I2C Controller #1
        06ea  Comet Lake PCH Serial IO I2C Controller #2
                1028 1fe7  Express Flash NVMe 3.2TB 2.5" U.2 (P4600)
                1028 1fe8  Express Flash NVMe 2.0TB HHHL AIC (P4600)
                1028 1fe9  Express Flash NVMe 4.0TB HHHL AIC (P4600)
-       0b60  NVMe DC SSD [3DNAND, Beta Rock Controller]
+       0b26  Thunderbolt 4 Bridge [Goshen Ridge 2020]
+       0b27  Thunderbolt 4 USB Controller [Goshen Ridge 2020]
+       0b60  NVMe DC SSD [3DNAND, Sentinel Rock Controller]
                1028 2060  NVMe SED MU U.2 1.6TB (P5600)
                1028 2061  NVMe SED MU U.2 3.2TB (P5600)
                1028 2062  NVMe SED MU U.2 6.4TB (P5600)
                1028 2102  NVMe RI U.2 1.92TB (P5500)
                1028 2103  NVMe RI U.2 3.84TB (P5500)
                1028 2104  NVMe RI U.2 7.68TB (P5500)
+               8086 8008  NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P5510)
+               8086 8d08  NVMe Datacenter SSD [3DNAND] VE 2.5" U.2 (P5316)
+               8086 8d1d  NVMe Datacenter SSD [3DNAND] VE E1.L 9.5/18mm (P5316)
+       0bd0  Ponte Vecchio 2T
        0be0  Atom Processor D2xxx/N2xxx Integrated Graphics Controller
        0be1  Atom Processor D2xxx/N2xxx Integrated Graphics Controller
                105b 0d7c  D270S/D250S Motherboard
        0bf6  Atom Processor D2xxx/N2xxx DRAM Controller
        0bf7  Atom Processor D2xxx/N2xxx DRAM Controller
        0c00  4th Gen Core Processor DRAM Controller
+               1028 05d7  Alienware X51 R2
                103c 1998  EliteDesk 800 G1
+               17aa 3098  ThinkCentre E73
                17aa 309f  ThinkCentre M83
        0c01  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller
        0c04  Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
                103c 2159  Ethernet 10Gb 2-port 562i Adapter
                108e 7b11  Ethernet Server Adapter X520-2
                1170 004c  82599 DP 10G Mezzanine Adapter
-               15d9 0611  AOC-STGN-I2S [REV 1.01]
+               15d9 0611  AOC-STGN-i2S
                1734 11a9  10 Gigabit Dual Port Network Connection
                17aa 1071  ThinkServer X520-2 AnyFabric
                17aa 4007  82599ES 10-Gigabit SFI/SFP+ Network Connection
                8086 4532  Desktop Board D815EEA2/D815EFV
                8086 4541  D815EEA Motherboard
                8086 4557  D815EGEW Mainboard
+       1136  Thunderbolt 4 Bridge [Maple Ridge 4C 2020]
+       1137  Thunderbolt 4 NHI [Maple Ridge 4C 2020]
+       1138  Thunderbolt 4 USB Controller [Maple Ridge 4C 2020]
        1161  82806AA PCI64 Hub Advanced Programmable Interrupt Controller
                8086 1161  82806AA PCI64 Hub APIC
        1162  Xscale 80200 Big Endian Companion Chip
        123f  82466GX Integrated Hot-Plug Controller (IHPC)
        1240  82752 (752) AGP Graphics Accelerator
        124b  82380FB (MPCI2) Mobile Docking Controller
+       124c  Ethernet Connection E823-L for backplane
+       124d  Ethernet Connection E823-L for SFP
+       124e  Ethernet Connection E823-L/X557-AT 10GBASE-T
+       124f  Ethernet Connection E823-L 1GbE
        1250  430HX - 82439HX TXC [Triton II]
        1360  82806AA PCI64 Hub PCI Bridge
        1361  82806AA PCI64 Hub Controller (HRes)
        1503  82579V Gigabit Network Connection
                1043 849c  P8P67 Deluxe Motherboard
                10cf 161c  LIFEBOOK E752
+               8086 200d  DH61CR motherboard
        1507  Ethernet Express Module X520-P2
        1508  82598EB Gigabit BX Network Connection
        1509  82580 Gigabit Network Connection
        151b  CVL2510 Thunderbolt Controller [Light Peak 2C 2010]
        151c  82599 10 Gigabit TN Network Connection
                108e 7b13  Dual 10GBASE-T LP
+       151d  Ethernet Connection E823-L for QSFP
        1520  I350 Ethernet Controller Virtual Function
        1521  I350 Gigabit Network Connection
                1028 0602  Gigabit 2P I350-t LOM
                1093 775b  PCIe-8237 Ethernet Adapter
                10a9 802a  UV2-BaseIO dual-port GbE
                1137 023e  1GigE I350 LOM
+               15d9 0000  AOC-SGP-i4
                15d9 0652  Dual Port i350 GbE MicroLP [AOC-CGP-i2]
                17aa 1074  ThinkServer I350-T4 AnyFabric
                17aa 4005  I350 Gigabit Network Connection
                18d4 0c07  I350 1Gb 2-port RJ45 OCP Mezz Card MOP41-I-1GT2
                193d 1005  360T-B
                193d 1007  360T-L
+# NIC-ETH360T-3S-4P OCP3.0 4x1G Base-T Card
+               193d 1080  NIC-ETH360T-3S-4P
                1bd4 001d  1G base-T QP EP014Ti1 Adapter
                1bd4 0035  1G base-T QP EP014Ti1 Adapter
                8086 0001  Ethernet Server Adapter I350-T4
        156f  Ethernet Connection I219-LM
                1028 06dc  Latitude E7470
                103c 8079  EliteBook 840 G3
+               17aa 2247  ThinkPad T570
        1570  Ethernet Connection I219-V
        1571  Ethernet Virtual Function 700 Series
        1572  Ethernet Controller X710 for 10GbE SFP+
                17aa 0000  ThinkServer X710 AnyFabric for 10GbE SFP+
                17aa 4001  ThinkServer X710-4 AnyFabric for 10GbE SFP+
                17aa 4002  ThinkServer X710-2 AnyFabric for 10GbE SFP+
+               193d 1020  NIC-ETH561F-sL-4x10G
+               193d 1021  NIC-ETH561F-sL-2x10G
+# NIC-ETH561F-3S-2P OCP3.0 2x10G SFP+ Card
+               193d 1081  NIC-ETH561F-3S-2P
                19e5 d11c  Ethernet 2-port X710 10Gb SFP+ Adapter SP330
+               1bd4 0042  10G SFP+ DP EP102Fi4 Adapter
                1bd4 0056  Ethernet Network Adapter X710-BM2 for OCP NIC 3.0
                8086 0000  Ethernet Converged Network Adapter X710
                8086 0001  Ethernet Converged Network Adapter X710-4
        1577  DSL6540 Thunderbolt 3 NHI [Alpine Ridge 4C 2015]
        1578  DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
        157b  I210 Gigabit Network Connection
+               ea50 cc10  RXi2-BP
        157c  I210 Gigabit Backplane Connection
        157d  DSL5110 Thunderbolt 2 NHI (Low Power) [Win Ridge 2C 2014]
        157e  DSL5110 Thunderbolt 2 Bridge (Low Power) [Win Ridge 2C 2014]
                1059 0170  RD-01213 10GbE interface
                1590 0000  Ethernet 2-port 563i Adapter
                1590 00f8  Ethernet 2-port 563i Adapter
+               193d 100e  NIC-ETH561i-Mb-4x10G
                8086 0000  Ethernet Converged Network Adapter XL710-Q2
        1583  Ethernet Controller XL710 for 40GbE QSFP+
                1028 0000  Ethernet 40G 2P XL710 QSFP+ rNDC
        1591  Ethernet Controller E810-C for backplane
        1592  Ethernet Controller E810-C for QSFP
                1137 02bf  E810CQDA2 2x100 GbE QSFP28 PCIe NIC
+               193d 1050  NIC-ETH1060F-LP-2P 2x100GbE Ethernet PCIe Card
+               8086 0001  Ethernet Network Adapter E810-C-Q1
                8086 0002  Ethernet Network Adapter E810-C-Q2
                8086 0004  Ethernet Network Adapter E810-C-Q2
                8086 0005  Ethernet Network Adapter E810-C-Q1 for OCP3.0
                8086 000a  Ethernet Network Adapter E810-C-Q1 for OCP
                8086 000b  Ethernet 100G 2P E810-C Adapter
                8086 000c  Ethernet 100G 2P E810-C OCP
+               8086 000d  Ethernet Network Adapter E810-L-Q2 for OCP 3.0
+               8086 000e  Ethernet Network Adapter E810-2C-Q2
        1593  Ethernet Controller E810-C for SFP
                1137 02c3  E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC
                8086 0002  Ethernet Network Adapter E810-L-2
        15b6  DSL6540 USB 3.1 Controller [Alpine Ridge]
        15b7  Ethernet Connection (2) I219-LM
        15b8  Ethernet Connection (2) I219-V
+               1462 7a72  H270 PC MATE
        15b9  Ethernet Connection (3) I219-LM
        15bb  Ethernet Connection (7) I219-LM
        15bc  Ethernet Connection (7) I219-V
                1137 0000  X710TLG GbE RJ45 PCIe NIC
                1137 02c1  X710T2LG 2x10 GbE RJ45 PCIe NIC
                1137 02c2  X710T4LG 4x10 GbE RJ45 PCIe NIC
+               1137 02d9  Ethernet Network Adapter X710-T2L OCP 3.0
+               1137 02da  Ethernet Network Adapter X710-T4L OCP 3.0
+# NIC-ETH565T-3S-2P OCP3.0 2x10G Base-T Card
+               193d 1082  NIC-ETH565T-3S-2P
                8086 0000  Ethernet Network Adapter X710-TL
                8086 0001  Ethernet Network Adapter X710-T4L
                8086 0002  Ethernet Network Adapter X710-T4L
        18a0  C4xxx Series QAT
        18a1  C4XXX Series QAT Virtual Function
        1900  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
-       1901  6th-9th Gen Core Processor PCIe Controller (x16)
+       1901  6th-10th Gen Core Processor PCIe Controller (x16)
        1902  HD Graphics 510
        1903  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem
                1028 06d6  Latitude 7275 tablet
                1028 06dc  Latitude E7470
                1028 06e4  XPS 15 9550
+               1028 06e6  Latitude 11 5175 2-in-1
                103c 825b  OMEN-17-w001nv
                17aa 225d  ThinkPad T480
        1904  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
                1028 06dc  Latitude E7470
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
+               17aa 2247  ThinkPad T570
                17aa 382a  B51-80 Laptop
        1905  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8)
        1906  HD Graphics 510
        1909  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x4)
        190c  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
                1028 06d6  Latitude 7275 tablet
+               1028 06e6  Latitude 11 5175 2-in-1
        190f  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
        1910  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
                1028 06e4  XPS 15 9550
                103c 825b  OMEN-17-w001nv
        1911  Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model
                1028 0869  Vostro 3470
+               1462 7a72  H270 PC MATE
                17aa 2247  ThinkPad T570
                17aa 224f  ThinkPad X1 Carbon 5th Gen
                17aa 225d  ThinkPad T480
                1028 06dc  Latitude E7470
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
+               17aa 2247  ThinkPad T570
        1918  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
        1919  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit
                1028 06d6  Latitude 7275 tablet
+               1028 06e6  Latitude 11 5175 2-in-1
        191b  HD Graphics 530
                1028 06e4  XPS 15 9550
                103c 825b  OMEN-17-w001nv
        191d  HD Graphics P530
        191e  HD Graphics 515
                1028 06d6  Latitude 7275 tablet
+               1028 06e6  Latitude 11 5175 2-in-1
        191f  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
        1921  HD Graphics 520
        1926  Iris Graphics 540
        1c02  6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller
                1028 04aa  XPS 8300
                1043 844d  P8 series motherboard
+               8086 200d  DH61CR motherboard
                8086 7270  Server Board S1200BT Family
        1c03  6 Series/C200 Series Chipset Family 6 port Mobile SATA AHCI Controller
                1028 04a3  Precision M4600
                17aa 21cf  ThinkPad T520
 # Realtek ALC888 audio codec
                8086 2008  DQ67SW board
+               8086 200d  DH61CR motherboard
                8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
        1c22  6 Series/C200 Series Chipset Family SMBus Controller
                1028 04a3  Precision M4600
                1028 04da  Vostro 3750
                1043 844d  P8 series motherboard
                17aa 21cf  ThinkPad T520
+               8086 200d  DH61CR motherboard
                8086 7270  Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2
        1c24  6 Series/C200 Series Chipset Family Thermal Management Controller
        1c25  6 Series/C200 Series Chipset Family DMI to PCI Bridge
                1028 04da  Vostro 3750
                1043 844d  P8 series motherboard
                17aa 21cf  ThinkPad T520
+               8086 200d  DH61CR motherboard
                8086 7270  Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2
        1c27  6 Series/C200 Series Chipset Family USB Universal Host Controller #1
                8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
                1028 04da  Vostro 3750
                1043 844d  P8 series motherboard
                17aa 21cf  ThinkPad T520
+               8086 200d  DH61CR motherboard
                8086 7270  Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2
        1c33  6 Series/C200 Series Chipset Family LAN Controller
        1c35  6 Series/C200 Series Chipset Family VECI Controller
                1028 04da  Vostro 3750
                1043 844d  P8 series motherboard
                17aa 21cf  ThinkPad T520
+               8086 200d  DH61CR motherboard
                8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
        1c3b  6 Series/C200 Series Chipset Family MEI Controller #2
        1c3c  6 Series/C200 Series Chipset Family IDE-r Controller
        1c5a  Upgraded Q67 Express Chipset LPC Controller
        1c5b  6 Series/C200 Series Chipset Family LPC Controller
        1c5c  H61 Express Chipset LPC Controller
+               8086 200d  DH61CR motherboard
        1c5d  6 Series/C200 Series Chipset Family LPC Controller
        1c5e  6 Series/C200 Series Chipset Family LPC Controller
        1c5f  6 Series/C200 Series Chipset Family LPC Controller
                15d9 066b  X9SRL-F
        1d2d  C600/X79 series chipset USB2 Enhanced Host Controller #2
                1028 04f7  C602J on PowerEdge R320 server
+               103c 18a9  HP DL360e G8
                15d9 066b  X9SRL-F
        1d33  C600/X79 series chipset LAN Controller
        1d35  C600/X79 series chipset VECI Controller
        1f26  Atom processor C2000 RAID SATA2 Controller
        1f27  Atom processor C2000 RAID SATA2 Controller
        1f2c  Atom processor C2000 USB Enhanced Host Controller
+               0200 1028  Atom C2338 on Dell 0K8Y0N motherboard
        1f2e  Atom processor C2000 RAID SATA2 Controller
        1f2f  Atom processor C2000 RAID SATA2 Controller
        1f30  Atom processor C2000 2-Port IDE SATA3 Controller
                147b 0507  TH7II-RAID
                8086 4532  Desktop Board D815EEA2/D815EFV
                8086 4557  D815EGEW Mainboard
+               8086 4d44  D850EMV2 motherboard
                8086 5744  S845WD1-E mainboard
        2443  82801BA/BAM SMBus Controller
                1014 01c6  Netvista A40/A40p
                147b 0507  TH7II-RAID
                8086 4557  D815EGEW Mainboard
                8086 4656  Desktop Board D815EFV
+               8086 4d44  D850EMV2 motherboard
        2446  82801BA/BAM AC'97 Modem Controller
                1025 1016  Travelmate 612 TX
                104d 80df  Vaio PCG-FX403
                15d9 3280  Supermicro P4SBE Mainboard
                8086 4532  Desktop Board D815EEA2/D815EFV
                8086 4557  D815EGEW Mainboard
+               8086 4d44  D850EMV2 motherboard
                8086 5744  S845WD1-E mainboard
        244c  82801BAM ISA Bridge (LPC)
        244e  82801 PCI Bridge
                1cb8 0002  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC6600 Fixed Port
                1cb8 0003  Omni-Path HFI Adapter 100 Series, 2 Port, 2 PCIe x16, Earth Simulation QSFP28
                1cb8 0004  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600E QSFP28
+               434e 0001  Omni-Path HFI 100 Series, 1 Port, OCP 3.0 Adapter
                8086 2628  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16
                8086 2629  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x8
                8086 262a  Omni-Path HFI Adapter 100 Series, 2 Ports, Split PCIe x16
        250f  82820 820 (Camino) Chipset AGP Bridge
        2520  82805AA MTH Memory Translator Hub
        2521  82804AA MRH-S Memory Repeater Hub for SDRAM
+       2522  NVMe Optane Memory Series
+               8086 3806  Optane Memory 16GB
+               8086 3810  Optane Memory M10 16GB
        2526  Wireless-AC 9260
        2530  82850 850 (Tehama) Chipset Host Bridge (MCH)
                1028 00c7  Dimension 8100
                103c 0934  Compaq nw8240/nx8220
                103c 0944  Compaq nc6220 Notebook PC
                103c 099c  NX6110/NC6120
+               1043 82d9  Asus Eee PC 900
                104d 81b7  Vaio VGN-S3XP
                a304 81b7  Vaio VGN-S3XP
                e4bf 0ccd  CCD-CALYPSO
                8086 3904  NVMe Datacenter SSD [Optane] x4 AIC (P4800X)
                8086 3905  NVMe Datacenter SSD [Optane] 15mm 2.5" U.2 (P4800X)
        2723  Wi-Fi 6 AX200
-               8086 2723  Wireless AX200
+               1a56 1654  Killer™ Wi-Fi 6 AX1650x (AX200NGW)
+               8086 0084  Wi-Fi 6 AX200NGW
+       2725  Wi-Fi 6 AX210/AX211/AX411 160MHz
+               8086 0020  Wi-Fi 6 AX210 160MHz
+               8086 0024  Wi-Fi 6 AX210 160MHz
+               8086 0090  Wi-Fi 6 AX211 160MHz
+               8086 00b0  Wi-Fi 6 AX411 160MHz
+               8086 0310  Wi-Fi 6 AX210 160MHz
+               8086 0510  Wi-Fi 6 AX210 160MHz
+               8086 0a10  Wi-Fi 6 AX210 160MHz
+               8086 2020  Wi-Fi 6 AX210 160MHz
+               8086 4020  Wi-Fi 6 AX210 160MHz
+               8086 6020  Wi-Fi 6 AX210 160MHz
+               8086 6024  Wi-Fi 6 AX210 160MHz
+               8086 e020  Wi-Fi 6 AX210 160MHz
+               8086 e024  Wi-Fi 6 AX210 160MHz
        2770  82945G/GZ/P/PL Memory Controller Hub
                1028 01ad  OptiPlex GX620
                103c 2a3b  Pavilion A1512X
        277c  82975X Memory Controller Hub
                1043 8178  P5WDG2 WS Professional motherboard
        277d  82975X PCI Express Root Port
+       2780  82915G/GV/GL/910GL [Grantsdale] Graphics Device
        2782  82915G Integrated Graphics Controller
                1043 2582  P5GD1-VW Mainboard
                1734 105b  Scenic W620
                1028 022f  Inspiron 1525
                103c 30c0  Compaq 6710b
                103c 30c1  Compaq 6910p
+               103c 30c5  Compaq 8510p
                103c 30cc  Pavilion dv6700
                103c 30d9  Presario C700
                1043 1017  X58LE
        2a41  Mobile 4 Series Chipset PCI Express Graphics Port
                e4bf cc4d  CCM-BOOGIE
        2a42  Mobile 4 Series Chipset Integrated Graphics Controller
+               1028 02aa  Dell Inspiron 1545
                17aa 2112  ThinkPad T400
                e4bf cc4d  CCM-BOOGIE
        2a43  Mobile 4 Series Chipset Integrated Graphics Controller
                8086 4210  Dual Band Wireless AC 3165
        3166  Dual Band Wireless-AC 3165 Plus Bluetooth
                8086 4210  Dual Band Wireless-AC 3165
-       3184  UHD Graphics 605
-       3185  UHD Graphics 605
+       3184  GeminiLake [UHD Graphics 605]
+       3185  GeminiLake [UHD Graphics 600]
        318c  Celeron/Pentium Silver Processor Dynamic Platform and Thermal Framework Processor Participant
        318e  Celeron/Pentium Silver Processor NorthPeak
        3190  Celeron/Pentium Silver Processor Gaussian Mixture Model
                17aa 380b  V130-15IGM Laptop (Lenovo) - Type 81HL
        319a  Celeron/Pentium Silver Processor Trusted Execution Engine Interface
        31a2  Celeron/Pentium Silver Processor Integrated Sensor Solution
+       31a8  Celeron/Pentium Silver Processor USB 3.0 xHCI Controller
+               1849 31a8  Celeron/Pentium Silver Processor USB 3.0 xHCI Controller
        31ac  Celeron/Pentium Silver Processor Serial IO I2C Host Controller
        31ae  Celeron/Pentium Silver Processor Serial IO I2C Host Controller
        31bc  Celeron/Pentium Silver Processor Serial IO UART Host Controller
        31d9  Gemini Lake PCI Express Root Port
        31da  Gemini Lake PCI Express Root Port
        31db  Gemini Lake PCI Express Root Port
-       31dc  AC 1550i Wireless
+       31dc  Gemini Lake PCH CNVi WiFi
+               1a56 1552  Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)
+               8086 0034  Wireless-AC 9560
+       31e3  Celeron/Pentium Silver Processor SATA Controller
+       31e8  Celeron/Pentium Silver Processor LPC Controller
        31ee  Celeron/Pentium Silver Processor Serial IO UART Host Controller
        31f0  Gemini Lake Host Bridge
        3200  GD31244 PCI-X SATA HBA
        34aa  Ice Lake-LP Serial IO SPI Controller #0
        34ab  Ice Lake-LP Serial IO SPI Controller #1
        34b0  Ice Lake-LP PCI Express Root Port #9
+       34b7  Ice Lake-LP PCI Express Root Port #16
        34bc  Ice Lake-LP PCI Express Root Port #5
        34c5  Ice Lake-LP Serial IO I2c Controller #4
        34c6  Ice Lake-LP Serial IO I2c Controller #5
-       34c8  Smart Sound Technology Audio Controller
+       34c8  Ice Lake-LP Smart Sound Technology Audio Controller
        34d3  Ice Lake-LP SATA Controller [AHCI mode]
-       34e0  Management Engine Interface
+       34e0  Ice Lake-LP Management Engine
        34e8  Ice Lake-LP Serial IO I2C Controller #0
        34e9  Ice Lake-LP Serial IO I2C Controller #1
        34ea  Ice Lake-LP Serial IO I2C Controller #2
        34eb  Ice Lake-LP Serial IO I2C Controller #3
        34ed  Ice Lake-LP USB 3.1 xHCI Host Controller
-       34f0  Killer Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)
+       34ef  Ice Lake-LP DRAM Controller
+       34f0  Ice Lake-LP PCH CNVi WiFi
+               1a56 1552  Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)
+               8086 0074  Wi-Fi 6 AX201
+               8086 0264  Wireless-AC 9461
        34f8  Ice Lake-LP SD Controller
+       34fc  Ice Lake-LP Integrated Sensor Solution
        3500  6311ESB/6321ESB PCI Express Upstream Port
                103c 31fe  ProLiant DL140 G3
                15d9 9680  X7DBN Motherboard
        3e81  8th Gen Core Processor PCIe Controller (x16)
        3e85  8th Gen Core Processor PCIe Controller (x8)
        3e89  8th Gen Core Processor PCIe Controller (x4)
-       3e91  8th Gen Core Processor Gaussian Mixture Model
-       3e92  UHD Graphics 630 (Desktop)
+       3e90  CoffeeLake-S GT1 [UHD Graphics 610]
+       3e91  CoffeeLake-S GT2 [UHD Graphics 630]
+       3e92  CometLake-S GT2 [UHD Graphics 630]
                1028 0869  Vostro 3470
-       3e93  UHD Graphics 610
-       3e96  HD Graphics P630
-       3e98  UHD Graphics 630 (Desktop 9 Series)
-       3e9b  UHD Graphics 630 (Mobile)
-       3ea0  UHD Graphics 620 (Whiskey Lake)
+       3e93  CoffeeLake-S GT1 [UHD Graphics 610]
+       3e96  CoffeeLake-S GT2 [UHD Graphics P630]
+       3e98  CoffeeLake-S GT2 [UHD Graphics 630]
+       3e9b  CoffeeLake-H GT2 [UHD Graphics 630]
+       3ea0  WhiskeyLake-U GT2 [UHD Graphics 620]
                1028 089e  Inspiron 5482
-       3ea5  Iris Plus Graphics 655
+       3ea5  CoffeeLake-U GT3e [Iris Plus Graphics 655]
        3ec2  8th Gen Core Processor Host Bridge/DRAM Registers
                1028 0869  Vostro 3470
                1043 8694  PRIME H310M-D
        4032  5400 Chipset IOxAPIC
        4035  5400 Chipset FBD Registers
        4036  5400 Chipset FBD Registers
+       4041  NVMe Datacenter SSD [Optane]
        4100  Moorestown Graphics and Video
        4108  Atom Processor E6xx Integrated Graphics Controller
        4109  Atom Processor E6xx Integrated Graphics Controller
        4115  Atom Processor E6xx PCI Host Bridge #2
        4116  Atom Processor E6xx PCI Host Bridge #3
        4117  Atom Processor E6xx PCI Host Bridge #4
+       4140  NVMe Datacenter SSD [Optane]
+               1028 2134  NVMe Datacenter SSD [Optane] SED 400GB 2.5" U.2 (P5800X)
+               1028 2135  NVMe Datacenter SSD [Optane] SED 800GB 2.5" U.2 (P5800X)
+               1028 2136  NVMe Datacenter SSD [Optane] SED 1.6TB 2.5" U.2 (P5800X)
+               1028 2137  NVMe Datacenter SSD [Optane] 400GB 2.5" U.2 (P5800X)
+               1028 2138  NVMe Datacenter SSD [Optane] 800GB 2.5" U.2 (P5800X)
+               1028 2139  NVMe Datacenter SSD [Optane] 1.6TB 2.5" U.2 (P5800X)
        4220  PRO/Wireless 2200BG [Calexico2] Network Connection
                103c 0934  Compaq nw8240/nx8220
                103c 12f6  nc6120/nc6220/nw8240/nx8220
                8086 1216  WiMAX/WiFi Link 5150 ABG
                8086 1311  WiMAX/WiFi Link 5150 AGN
                8086 1316  WiMAX/WiFi Link 5150 ABG
+       438b  Tiger Lake-H LPC/eSPI Controller
+       43a3  Tiger Lake-H SMBus Controller
+       43a4  Tiger Lake-H SPI Controller
+       43b0  Tiger Lake-H PCI Express Root Port #9
+       43bc  Tiger Lake-H PCI Express Root Port #5
+       43c8  Tiger Lake-H HD Audio Controller
+       43e0  Tiger Lake-H Management Engine Interface
+       43e8  Tiger Lake-H Serial IO I2C Controller #0
+       43ed  Tiger Lake-H USB 3.2 Gen 2x1 xHCI Host Controller
+       43ef  Tiger Lake-H Shared SRAM
+       43f0  Tiger Lake PCH CNVi WiFi
+               8086 0034  Wireless-AC 9560
+               8086 0074  Wi-Fi 6 AX201 160MHz
+               8086 0264  Wireless-AC 9461
+               8086 02a4  Wireless-AC 9462
        444e  Turbo Memory Controller
        467f  Volume Management Device NVMe RAID Controller
+       4680  AlderLake-S GT1
+       46a0  AlderLake-P GT2
+       46c0  AlderLake-M GT1
+       4905  DG1 [Iris Xe MAX Graphics]
+       4906  DG1 [Iris Xe Pod]
+       4907  SG1 [Server GPU SG-18M]
+       4908  DG1 [Iris Xe Graphics]
        4c3d  Volume Management Device NVMe RAID Controller
+       4c8a  RocketLake-S GT1 [UHD Graphics 750]
+       4c8b  RocketLake-S GT1 [UHD Graphics 730]
+       4c90  RocketLake-S GT1 [UHD Graphics P750]
+       4c9a  RocketLake-S [UHD Graphics]
+       4da3  JaserLake SMBus
+       4da4  JaserLake SPI (flash) Controller
+       4de0  Management Engine Interface
+       4de8  Serial IO I2C Host Controller
+       4de9  Serial IO I2C Host Controller
+       4df0  Wi-Fi 6 AX201 160MHz
+       4e03  Dynamic Tuning service
+       4e19  JasperLake IPU
+       4e55  JasperLake [UHD Graphics]
+       4e61  JasperLake [UHD Graphics]
+       4e71  JasperLake [UHD Graphics]
+       4f80  DG2
+       4f81  DG2
+       4f82  DG2
        5001  LE80578
        5002  LE80578 Graphics Processor Unit
        5009  LE80578 Video Display Controller
                8086 0001  EtherExpress PRO/100 Server Ethernet Adapter
        530d  80310 (IOP) IO Processor
        5502  Ethernet Controller (2) I225-LMvP
+       5504  Ethernet Controller I226-K
        5845  QEMU NVM Express Controller
                1af4 1100  QEMU Virtual Machine
        5900  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
        590c  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
        590f  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
                1462 7a68  B250 KRAIT GAMING (MS-7A68)
+               1462 7a72  H270 PC MATE
        5910  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
        5911  Xeon E3-1200 v6/7th Gen Core Processor Gaussian Mixture Model
        5912  HD Graphics 630
+               1462 7a72  H270 PC MATE
        5914  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
                17aa 225d  ThinkPad T480
        5916  HD Graphics 620
                1993 0ded  mGuard-PCI AV#2
                1993 0dee  mGuard-PCI AV#1
                1993 0def  mGuard-PCI AV#0
+       8603  Ice Lake-LP Dynamic Tuning Processor Participant
        87c0  UHD Graphics 617
        8800  Platform Controller Hub EG20T PCI Express Port
        8801  Platform Controller Hub EG20T Packet Hub
        8818  Platform Controller Hub EG20T Controller Area Network (CAN) Controller
        8819  Platform Controller Hub EG20T IEEE 1588 Hardware Assist
        8a0d  Ice Lake Thunderbolt 3 NHI #1
+       8a12  Ice Lake-LP Processor Host Bridge/DRAM Registers
        8a13  Ice Lake Thunderbolt 3 USB Controller
        8a17  Ice Lake Thunderbolt 3 NHI #0
+       8a19  Image Signal Processor
        8a1d  Ice Lake Thunderbolt 3 PCI Express Root Port #0
        8a1f  Ice Lake Thunderbolt 3 PCI Express Root Port #1
        8a21  Ice Lake Thunderbolt 3 PCI Express Root Port #2
        8c00  8 Series/C220 Series Chipset Family 4-port SATA Controller 1 [IDE mode]
        8c01  8 Series Chipset Family 4-port SATA Controller 1 [IDE mode] - Mobile
        8c02  8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
+               1028 05d7  Alienware X51 R2
                103c 1998  EliteDesk 800 G1
+               17aa 3098  ThinkCentre E73
                17aa 309f  ThinkCentre M83
        8c03  8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
                103c 1909  ZBook 15
                103c 1998  EliteDesk 800 G1
                1043 8534  ASUS H81I-PLUS
                17aa 220e  ThinkPad T440p
+               17aa 3098  ThinkCentre E73
        8c11  8 Series/C220 Series Chipset Family PCI Express Root Port #1
        8c12  8 Series/C220 Series Chipset Family PCI Express Root Port #2
                103c 1998  EliteDesk 800 G1
        8c18  8 Series/C220 Series Chipset Family PCI Express Root Port #5
        8c19  8 Series/C220 Series Chipset Family PCI Express Root Port #5
        8c1a  8 Series/C220 Series Chipset Family PCI Express Root Port #6
+               17aa 3098  ThinkCentre E73
        8c1b  8 Series/C220 Series Chipset Family PCI Express Root Port #6
        8c1c  8 Series/C220 Series Chipset Family PCI Express Root Port #7
        8c1d  8 Series/C220 Series Chipset Family PCI Express Root Port #7
        8c1e  8 Series/C220 Series Chipset Family PCI Express Root Port #8
        8c1f  8 Series/C220 Series Chipset Family PCI Express Root Port #8
        8c20  8 Series/C220 Series Chipset High Definition Audio Controller
+               1028 05d7  Alienware X51 R2
                103c 1909  ZBook 15
                103c 1998  EliteDesk 800 G1
                17aa 220e  ThinkPad T440p
                17aa 309f  ThinkCentre M83
        8c21  8 Series/C220 Series Chipset High Definition Audio Controller
        8c22  8 Series/C220 Series Chipset Family SMBus Controller
+               1028 05d7  Alienware X51 R2
                103c 1909  ZBook 15
                103c 1998  EliteDesk 800 G1
                17aa 220e  ThinkPad T440p
+               17aa 3098  ThinkCentre E73
                17aa 309f  ThinkCentre M83
        8c23  8 Series Chipset Family CHAP Counters
        8c24  8 Series Chipset Family Thermal Management Controller
        8c26  8 Series/C220 Series Chipset Family USB EHCI #1
+               1028 05d7  Alienware X51 R2
                103c 1909  ZBook 15
                103c 1998  EliteDesk 800 G1
                17aa 220e  ThinkPad T440p
                17aa 2210  ThinkPad T540p
+               17aa 3098  ThinkCentre E73
                17aa 309f  ThinkCentre M83
                2210 17aa  ThinkPad T540p
        8c2d  8 Series/C220 Series Chipset Family USB EHCI #2
+               1028 05d7  Alienware X51 R2
                103c 1909  ZBook 15
                103c 1998  EliteDesk 800 G1
                17aa 220e  ThinkPad T440p
+               17aa 3098  ThinkCentre E73
                17aa 309f  ThinkCentre M83
        8c31  8 Series/C220 Series Chipset Family USB xHCI
+               1028 05d7  Alienware X51 R2
                103c 1909  ZBook 15
                103c 1998  EliteDesk 800 G1
                17aa 220e  ThinkPad T440p
+               17aa 3098  ThinkCentre E73
                17aa 309f  ThinkCentre M83
        8c33  8 Series/C220 Series Chipset Family LAN Controller
        8c34  8 Series/C220 Series Chipset Family NAND Controller
        8c3a  8 Series/C220 Series Chipset Family MEI Controller #1
+               1028 05d7  Alienware X51 R2
                103c 1909  ZBook 15
                103c 1998  EliteDesk 800 G1
                17aa 220e  ThinkPad T440p
+               17aa 3098  ThinkCentre E73
                17aa 309f  ThinkCentre M83
        8c3b  8 Series/C220 Series Chipset Family MEI Controller #2
        8c3c  8 Series/C220 Series Chipset Family IDE-r Controller
        8c48  8 Series/C220 Series Chipset Family LPC Controller
        8c49  HM86 Express LPC Controller
        8c4a  H87 Express LPC Controller
+               1028 05d7  Alienware X51 R2
        8c4b  HM87 Express LPC Controller
        8c4c  Q85 Express LPC Controller
                17aa 309f  ThinkCentre M83
        8c5a  8 Series/C220 Series Chipset Family LPC Controller
        8c5b  8 Series/C220 Series Chipset Family LPC Controller
        8c5c  H81 Express LPC Controller
+               17aa 3098  ThinkCentre E73
        8c5d  8 Series/C220 Series Chipset Family LPC Controller
        8c5e  8 Series/C220 Series Chipset Family LPC Controller
        8c5f  8 Series/C220 Series Chipset Family LPC Controller
        9622  Integrated RAID
        9641  Integrated RAID
        96a1  Integrated RAID
+       9a01  11th Gen Core Processor PCIe Controller #1
+       9a03  TigerLake-LP Dynamic Tuning Processor Participant
        9a09  11th Gen Core Processor PCIe Controller
        9a0b  Volume Management Device NVMe RAID Controller
-       9a13  Tiger Lake-LP Thunderbolt USB Controller
+       9a0d  Tigerlake Telemetry Aggregator Driver
+       9a0f  11th Gen Core Processor PCIe Controller #0
+       9a11  GNA Scoring Accelerator module
+       9a13  Tiger Lake-LP Thunderbolt 4 USB Controller
        9a14  11th Gen Core Processor Host Bridge/DRAM Registers
-       9a1b  Tiger Lake-LP Thunderbolt NHI #0
-       9a1d  Tiger Lake-LP Thunderbolt NHI #1
-       9a23  Tiger Lake-LP Thunderbolt PCI Express Root Port #0
-       9a25  Tiger Lake-LP Thunderbolt PCI Express Root Port #1
-       9a27  Tiger Lake-LP Thunderbolt PCI Express Root Port #2
-       9a29  Tiger Lake-LP Thunderbolt PCI Express Root Port #3
+       9a17  Tiger Lake-H Thunderbolt 4 USB Controller
+       9a1b  Tiger Lake-LP Thunderbolt 4 NHI #0
+       9a1d  Tiger Lake-LP Thunderbolt 4 NHI #1
+       9a1f  Tiger Lake-H Thunderbolt 4 NHI #0
+       9a21  Tiger Lake-H Thunderbolt 4 NHI #1
+       9a23  Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0
+       9a25  Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1
+       9a26  11th Gen Core Processor Host Bridge/DRAM Registers
+       9a27  Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #2
+       9a29  Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #3
+       9a2b  Tiger Lake-H Thunderbolt 4 PCI Express Root Port #0
+       9a2d  Tiger Lake-H Thunderbolt 4 PCI Express Root Port #1
+       9a2f  Tiger Lake-H Thunderbolt 4 PCI Express Root Port #2
+       9a31  Tiger Lake-H Thunderbolt 4 PCI Express Root Port #3
        9a33  Tiger Lake Trace Hub
-       9a49  UHD Graphics
-       9b41  UHD Graphics
+       9a36  11th Gen Core Processor Host Bridge/DRAM Registers
+       9a49  TigerLake-LP GT2 [Iris Xe Graphics]
+       9a60  TigerLake-H GT1 [UHD Graphics]
+       9a68  TigerLake-H GT1 [UHD Graphics]
+       9b41  CometLake-U GT2 [UHD Graphics]
+               1028 09bd  Latitude 7310
        9b44  10th Gen Core Processor Host Bridge/DRAM Registers
+       9b53  Comet Lake-S 6c Host Bridge/DRAM Controller
        9b54  10th Gen Core Processor Host Bridge/DRAM Registers
        9b61  Comet Lake-U v1 4c Host Bridge/DRAM Controller
+       9b63  10th Gen Core Processor Host Bridge/DRAM Registers
        9b64  10th Gen Core Processor Host Bridge/DRAM Registers
-       9bc4  UHD Graphics
-       9bc8  UHD Graphics 630
+       9bc4  CometLake-H GT2 [UHD Graphics]
+       9bc5  CometLake-S GT2 [UHD Graphics 630]
+       9bc8  CometLake-S GT2 [UHD Graphics 630]
+       9bca  Comet Lake UHD Graphics
        9c00  8 Series SATA Controller 1 [IDE mode]
        9c01  8 Series SATA Controller 1 [IDE mode]
        9c02  8 Series SATA Controller 1 [AHCI mode]
        9d03  Sunrise Point-LP SATA Controller [AHCI mode]
                1025 115f  Acer Aspire E5-575G
                1028 06dc  Latitude E7470
+               1028 06e6  Latitude 11 5175 2-in-1
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
                17aa 225d  ThinkPad T480
        9d16  Sunrise Point-LP PCI Express Root Port #7
        9d17  Sunrise Point-LP PCI Express Root Port #8
        9d18  Sunrise Point-LP PCI Express Root Port #9
+               17aa 2247  ThinkPad T570
                17aa 382a  B51-80 Laptop
        9d19  Sunrise Point-LP PCI Express Root Port #10
        9d1a  Sunrise Point-LP PCI Express Root Port #11
                1025 115f  Acer Aspire E5-575G
                1028 06d6  Latitude 7275 tablet
                1028 06dc  Latitude E7470
+               1028 06e6  Latitude 11 5175 2-in-1
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
+               17aa 2247  ThinkPad T570
                17aa 224f  ThinkPad X1 Carbon 5th Gen
                17aa 225d  ThinkPad T480
                17aa 382a  B51-80 Laptop
                1025 115f  Acer Aspire E5-575G
                1028 06d6  Latitude 7275 tablet
                1028 06dc  Latitude E7470
+               1028 06e6  Latitude 11 5175 2-in-1
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
                17aa 2247  ThinkPad T570
                1025 115f  Acer Aspire E5-575G
                1028 06d6  Latitude 7275 tablet
                1028 06dc  Latitude E7470
+               1028 06e6  Latitude 11 5175 2-in-1
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
                17aa 2247  ThinkPad T570
                1025 115f  Acer Aspire E5-575G
                1028 06d6  Latitude 7275 tablet
                1028 06dc  Latitude E7470
+               1028 06e6  Latitude 11 5175 2-in-1
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
                17aa 2247  ThinkPad T570
                17aa 382a  B51-80 Laptop
        9d32  CSI-2 Host Controller
                1028 06d6  Latitude 7275 tablet
+               1028 06e6  Latitude 11 5175 2-in-1
        9d35  Sunrise Point-LP Integrated Sensor Hub
                1028 06d6  Latitude 7275 tablet
+               1028 06e6  Latitude 11 5175 2-in-1
        9d3a  Sunrise Point-LP CSME HECI #1
                1025 115f  Acer Aspire E5-575G
                1028 06d6  Latitude 7275 tablet
                1028 06dc  Latitude E7470
+               1028 06e6  Latitude 11 5175 2-in-1
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
                17aa 2247  ThinkPad T570
                17aa 382a  B51-80 Laptop
        9d3d  Sunrise Point-LP Active Management Technology - SOL
                103c 8079  EliteBook 840 G3
+               17aa 2247  ThinkPad T570
        9d43  Sunrise Point-LP LPC Controller
                17aa 382a  B51-80 Laptop
        9d46  LPC/eSPI Controller
                1028 06d6  Latitude 7275 tablet
+               1028 06e6  Latitude 11 5175 2-in-1
        9d48  Sunrise Point-LP LPC Controller
                1028 06dc  Latitude E7470
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
+               17aa 2247  ThinkPad T570
        9d4e  Sunrise Point LPC Controller/eSPI Controller
                17aa 225d  ThinkPad T480
        9d50  Sunrise Point LPC Controller
        9d60  Sunrise Point-LP Serial IO I2C Controller #0
                1025 115f  Acer Aspire E5-575G
                1028 06d6  Latitude 7275 tablet
+               1028 06e6  Latitude 11 5175 2-in-1
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
                17aa 225d  ThinkPad T480
                8086 9d60  100 Series PCH/Sunrise Point PCH I2C0 [Skylake/Kaby Lake LPSS I2C]
        9d61  Sunrise Point-LP Serial IO I2C Controller #1
                1028 06d6  Latitude 7275 tablet
+               1028 06e6  Latitude 11 5175 2-in-1
        9d62  Sunrise Point-LP Serial IO I2C Controller #2
                1028 06d6  Latitude 7275 tablet
+               1028 06e6  Latitude 11 5175 2-in-1
        9d63  Sunrise Point-LP Serial IO I2C Controller #3
        9d64  Sunrise Point-LP Serial IO I2C Controller #4
        9d65  Sunrise Point-LP Serial IO I2C Controller #5
        9d70  Sunrise Point-LP HD Audio
                1028 06d6  Latitude 7275 tablet
                1028 06dc  Latitude E7470
+               1028 06e6  Latitude 11 5175 2-in-1
                1028 06f3  Latitude 3570
                103c 8079  EliteBook 840 G3
+               17aa 2247  ThinkPad T570
                17aa 382a  B51-80 Laptop
        9d71  Sunrise Point-LP HD Audio
                1025 1094  Acer Aspire E5-575G
        a0a9  Tiger Lake-LP Serial IO UART Controller #1
        a0ab  Tiger Lake-LP Serial IO SPI Controller #1
        a0b0  Tiger Lake-LP PCI Express Root Port #9
+       a0bd  Tigerlake PCH-LP PCI Express Root Port #6
        a0bf  Tiger Lake-LP PCI Express Root Port #8
        a0c5  Tiger Lake-LP Serial IO I2C Controller #4
        a0c6  Tiger Lake-LP Serial IO I2C Controller #5
        a252  Lewisburg SSATA Controller [AHCI mode]
        a256  Lewisburg SSATA Controller [RAID mode]
        a282  200 Series PCH SATA controller [AHCI mode]
+               1462 7a72  H270 PC MATE
        a286  200 Series PCH SATA controller [RAID mode]
        a290  200 Series PCH PCI Express Root Port #1
        a291  200 Series PCH PCI Express Root Port #2
        a292  200 Series PCH PCI Express Root Port #3
        a293  200 Series PCH PCI Express Root Port #4
        a294  200 Series PCH PCI Express Root Port #5
+               1462 7a72  H270 PC MATE
        a295  200 Series PCH PCI Express Root Port #6
        a296  200 Series PCH PCI Express Root Port #7
+               1462 7a72  H270 PC MATE
        a297  200 Series PCH PCI Express Root Port #8
        a298  200 Series PCH PCI Express Root Port #9
+               1462 7a72  H270 PC MATE
        a299  200 Series PCH PCI Express Root Port #10
        a29a  200 Series PCH PCI Express Root Port #11
        a29b  200 Series PCH PCI Express Root Port #12
        a29f  200 Series PCH PCI Express Root Port #16
        a2a0  200 Series/Z370 Chipset Family P2SB
        a2a1  200 Series/Z370 Chipset Family Power Management Controller
+               1462 7a72  H270 PC MATE
        a2a3  200 Series/Z370 Chipset Family SMBus Controller
+               1462 7a72  H270 PC MATE
        a2a4  200 Series/Z370 Chipset Family SPI Controller
        a2a5  200 Series/Z370 Chipset Family Gigabit Ethernet Controller
        a2a6  200 Series/Z370 Chipset Family Trace Hub
        a2a9  200 Series/Z370 Chipset Family Serial IO SPI Controller #0
        a2aa  200 Series/Z370 Chipset Family Serial IO SPI Controller #1
        a2af  200 Series/Z370 Chipset Family USB 3.0 xHCI Controller
+               1462 7a72  H270 PC MATE
        a2b1  200 Series PCH Thermal Subsystem
+               1462 7a72  H270 PC MATE
        a2ba  200 Series PCH CSME HECI #1
+               1462 7a72  H270 PC MATE
        a2bb  200 Series PCH CSME HECI #2
        a2c4  200 Series PCH LPC Controller (H270)
+               1462 7a72  H270 PC MATE
        a2c5  200 Series PCH LPC Controller (Z270)
        a2c6  200 Series PCH LPC Controller (Q270)
        a2c7  200 Series PCH LPC Controller (Q250)
        a2ed  200 Series PCH PCI Express Root Port #23
        a2ee  200 Series PCH PCI Express Root Port #24
        a2f0  200 Series PCH HD Audio
+               1462 7a72  H270 PC MATE
+               1462 fa72  H270 PC MATE
        a304  H370 Chipset LPC/eSPI Controller
                1028 0869  Vostro 3470
        a305  Z390 Chipset LPC/eSPI Controller
        a324  Cannon Lake PCH SPI Controller
                1028 0869  Vostro 3470
        a328  Cannon Lake PCH Serial IO UART Host Controller
+       a32b  Cannon Lake PCH SPI Host Controller
        a32c  Cannon Lake PCH PCI Express Root Port #21
        a32d  Cannon Lake PCH PCI Express Root Port #22
        a32e  Cannon Lake PCH PCI Express Root Port #23
        a36d  Cannon Lake PCH USB 3.1 xHCI Host Controller
                1028 0869  Vostro 3470
        a36f  Cannon Lake PCH Shared SRAM
-       a370  Wireless-AC 9560 [Jefferson Peak]
+       a370  Cannon Lake PCH CNVi WiFi
                1a56 1552  Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)
+               8086 0034  Wireless-AC 9560
        a379  Cannon Lake PCH Thermal Controller
                1028 0869  Vostro 3470
        a382  400 Series Chipset Family SATA AHCI Controller
+       a3a1  Memory controller
        a3a3  Comet Lake PCH-V SMBus Host Controller
+       a3af  Comet Lake PCH-V USB Controller
        a3b1  Comet Lake PCH-V Thermal Subsystem
        a620  6400/6402 Advanced Memory Buffer (AMB)
        abc0  Omni-Path Fabric Switch Silicon 100 Series
        d157  Core Processor System Control and Status Registers
        d158  Core Processor Miscellaneous Registers
        f1a5  SSD 600P Series
+# M.2 22 x 80mm, NVMe
+               8086 390a  SSDPEKKW256G7 256GB
        f1a6  SSD Pro 7600p/760p/E 6100p Series
                8086 390b  SSD Pro 7600p/760p/E 6100p Series [NVM Express]
        f1a8  SSD 660P Series
 8088  Beijing Wangxun Technology Co., Ltd.
        0101  WX1860A2 Gigabit Ethernet Controller
                8088 0201  Dual-Port Ethernet Network Adaptor SF200T
+               8088 4201  Dual-Port Ethernet Network Adaptor SF200T (WOL)
+               8088 8201  Dual-Port Ethernet Network Adaptor SF200T (NCSI)
+               8088 c201  Dual-Port Ethernet Network Adaptor SF200T (WOL, NCSI)
        0102  WX1860A2S Gigabit Ethernet Controller
                8088 0210  Dual-Port Ethernet Network Adaptor SF200T-S
        0103  WX1860A4 Gigabit Ethernet Controller
                8088 0401  Qual-Port Ethernet Network Adaptor SF400T
                8088 0440  Qual-Port Ethernet Network Adaptor SF400-OCP
+               8088 4103  Quad-Port Ethernet Network Adaptor SF400T (WOL)
+               8088 8103  Quad-Port Ethernet Network Adaptor SF400T (NCSI)
+               8088 c103  Quad-Port Ethernet Network Adaptor SF400T (WOL, NCSI)
        0104  WX1860A4S Gigabit Ethernet Controller
                8088 0410  Qual-Port Ethernet Network Adaptor SF400T-S
        0105  WX1860AL2 Gigabit Ethernet Controller
                8088 0202  Dual-Port Ethernet Network Adaptor SF200HT
+               8088 4202  Dual-Port Ethernet Network Adaptor SF200HT (WOL)
+               8088 8202  Dual-Port Ethernet Network Adaptor SF200HT (NCSI)
+               8088 c202  Dual-Port Ethernet Network Adaptor SF200HT (WOL, NCSI)
        0106  WX1860AL2S Gigabit Ethernet Controller
                8088 0220  Dual-Port Ethernet Network Adaptor SF200HT-S
        0107  WX1860AL4 Gigabit Ethernet Controller
                8088 0402  Qual-Port Ethernet Network Adaptor SF400HT
+               8088 4402  Quad-Port Ethernet Network Adaptor SF400HT (WOL)
+               8088 8402  Quad-Port Ethernet Network Adaptor SF400HT (NCSI)
+               8088 c402  Quad-Port Ethernet Network Adaptor SF400HT (WOL, NCSI)
        0108  WX1860AL4S Gigabit Ethernet Controller
                8088 0420  Qual-Port Ethernet Network Adaptor SF400HT-S
+       0109  WX1860-LC Gigabit Ethernet Controller
+       010a  WX1860A1 Gigabit Ethernet Controller
+# add new device ID
+       010b  WX1860AL1 Gigabit Ethernet Controller
+               8088 0102  Single-Port Ethernet Network Adaptor SF100HT
+               8088 4102  Single-Port Ethernet Network Adaptor SF100HT (WOL)
+               8088 8102  Single-Port Ethernet Network Adaptor SF100HT (NCSI)
+               8088 c102  Single-Port Ethernet Network Adaptor SF100HT (WOL, NCSI)
+       0111  WX1860A2 Ethernet Controller Virtual Function
+       0113  WX1860A4 Ethernet Controller Virtual Function
+       0115  WX1860AL2 Ethernet Controller Virtual Function
+       0117  WX1860AL4 Ethernet Controller Virtual Function
+       0119  WX1860-LC Gigabit Ethernet Controller Virtual Function
+       011a  WX1860A1 Gigabit Ethernet Controller Virtual Function
+       011b  WX1860AL1 Gigabit Ethernet Controller Virtual Function
+       1000  Ethernet Controller RP1000 Virtual Function for 10GbE SFP+
        1001  Ethernet Controller RP1000 for 10GbE SFP+
                8088 0000  Ethernet Network Adaptor RP1000 for 10GbE SFP+
+       2000  Ethernet Controller RP2000 Virtual Function for 10GbE SFP+
        2001  Ethernet Controller RP2000 for 10GbE SFP+
                8088 2000  Ethernet Network Adaptor RP2000 for 10GbE SFP+
 80ee  InnoTek Systemberatung GmbH
        1011  vSMP Foundation MEX/FLX controller [vSMP CTL]
 8800  Trigem Computer Inc.
        2008  Video assistant component
+8820  Stryker Corporation
+       2724  Mako Front Side Motor Controller [cPCI]
 8866  T-Square Design Inc.
 8888  Silicon Magic
 8912  TRX
        0001  SG2010 PCI over Starfabric Bridge
        0002  SG2010 PCI to Starfabric Gateway
        0003  SG1010 Starfabric Switch and PCI Bridge
+9a11  Tiger Lake-H Gaussian & Neural Accelerator
 9d32  Beijing Starblaze Technology Co. Ltd.
        0000  STAR1000 PCIe NVMe SSD Controller
        1001  STAR1000P PCIe NVMe SSD Controller
@@ -32743,6 +33563,7 @@ bdbd  Blackmagic Design
 c001  TSI Telsys
 c0a9  Micron/Crucial Technology
        2263  P1 NVMe PCIe SSD
+       540a  P2 NVMe PCIe SSD
 c0de  Motorola
 c0fe  Motion Engineering, Inc.
 ca3b  Cambrionix Ltd.
@@ -32866,7 +33687,7 @@ deda  XIMEA
        4021  MT camera
 e000  Winbond
        e000  W89C940
-e159  Tiger Jet Network Inc.
+e159  Tiger Jet Network Inc. / ICP DAS
        0001  Tiger3XX Modem/ISDN interface
                0059 0001  128k ISDN-S/T Adapter
                0059 0003  128k ISDN-U Adapter
@@ -32897,6 +33718,7 @@ ea01  Eagle Technology
        0046  PCI-766 Analog Output Card
        0052  PCI-703 Analog I/O Card
        0800  PCI-800 Digital I/O Card
+ea50  Emerson Automation Solutions
 # The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID.
 ea60  RME
        9896  Digi32
@@ -33010,6 +33832,7 @@ f1d0  AJA Video
        eb23  Kona 1
        eb24  Kona HDMI
        eb25  Corvid 44 12g
+       eb26  T-Tap Pro
        efac  Xena SD-MM/SD-22-MM
        facd  Xena HD-MM
 f5f5  F5 Networks, Inc.
@@ -33166,6 +33989,9 @@ C 08  Generic system peripheral
        05  SD Host controller
        06  IOMMU
        80  System peripheral
+       99  Timing Card
+# PTP Grandmaster Source Clock
+               01  TAP Timing Card
 C 09  Input device controller
        00  Keyboard controller
        01  Digitizer Pen
index 02e2ef420927e14fd55a24b090bd010d04b95a86..a578a525e0b48302e5a9c75dc721f0c72d517a7a 100644 (file)
@@ -9,8 +9,8 @@
 #      The latest version can be obtained from
 #              http://www.linux-usb.org/usb.ids
 #
-# Version: 2020.08.26
-# Date:    2020-08-26 20:34:09
+# Version: 2021.06.06
+# Date:    2021-06-06 20:34:10
 #
 
 # Vendors, devices and interfaces. Please keep sorted.
        6217  Color LaserJet 4700
        6302  PhotoSmart 318/612
        6317  Color LaserJet 4730mfp
+       632a  LaserJet M203-M206
        6402  PhotoSmart 715 (ptp)
        6411  PhotoSmart C8100 series
        6417  LaserJet 5200
        5642  Storage Device
        5661  M5661 MP3 player
        5667  M5667 MP3 player
+       8841  Newmine Camera
        9665  Gateway Webcam
 0403  Future Technology Devices International, Ltd
        0000  H4SMK 7 Port Hub / Bricked Counterfeit FT232 Serial (UART) IC
        6014  FT232H Single HS USB-UART/FIFO IC
        6015  Bridge(I2C/SPI/UART/FIFO)
        601f  Myriad-RF LimeSDR-Mini
+       6ee0  EZO Carrier Board
        6f70  HB-RF-USB
        8028  Dev board JTAG (FT232H based)
        8040  4 Port Hub
        9090  SNAP Stick 200
        9132  LCD and Temperature Interface
        9133  CallerID
+       9134  Virtual keyboard
        9135  Rotary Pub alarm
        9136  Pulsecounter
+       9137  Ledbutton interface
        9e90  Marvell OpenRD Base/Client
        9f08  CIB-1894 Conclusion SmartLink Box:
        9f80  Ewert Energy Systems CANdapter
        f7c0  ZeitControl Cardsystems TagTracer MIFARE
        f850  USB-UIRT (Universal Infrared Receiver+Transmitter)
        f918  Ant8 Logic Probe
+       f9d9  Wetterempfanger 147.3kHz
        fa00  Matrix Orbital USB Serial
        fa01  Matrix Orbital MX2 or MX3
        fa02  Matrix Orbital MX4 or MX5
        00c0  Wireless Remocon
        00f7  Smart Display PK-SD10
        011d  e228 Mobile Phone
+       0193  RVT-R Writer
        0203  HID Audio Controls
        021d  Aterm WL54SU2 802.11g Wireless Adapter [Atheros AR5523]
        0248  Aterm PA-WL54GU
        3220  Sound Blaster Tactic(3D) Sigma sound card
        3232  Sound Blaster Premium HD [SBX]
        3237  SB X-Fi Surround 5.1 Pro
+       3241  Sound Blaster JAM
        3263  SB X-Fi Surround 5.1 Pro
        3f00  E-Mu Xboard 25 MIDI Controller
        3f02  E-Mu 0202
        4088  Live! Cam Chat HD [VF0700]
        4095  Live! Cam Sync HD [VF0770]
        4097  Live! Cam Chat HD [VF0700]
+       4099  Creative VF0800 [RealSense Camera SR300]
        4100  Nomad Jukebox 2
        4101  Nomad Jukebox 3
        4102  NOMAD MuVo^2
        0155  5800 XpressMusic (Multimedia mode)
        0156  5800 XpressMusic (Storage mode)
        0157  5800 XpressMusic (Imaging mode)
+       0189  N810 Internet Tablet WiMAX
        0199  6700 Classic (msc)
        019a  6700 Classic (PC Suite)
        019b  6700 Classic (mtp)
        01b1  6303 classic Phone (Mass storage mode)
        01b2  6303 classic Phone (Printing and media mode)
        01c7  N900 (Storage Mode)
-       01c8  N900 (PC-Suite Mode)
+       01c8  N900/N950 (PC-Suite Mode)
        0228  5530 XpressMusic
        023a  6730 Classic
        026a  N97 (mass storage)
        03c1  C7-00 (Media transfer mode)
        03c2  Sim
        03cd  C7-00 (Nokia Suite mode)
-       03d1  N950
+       03d1  N950 (Storage Mode)
+       03d2  N950 (PC Suite mode)
        0400  7600 Phone Parent
        0401  6650 GSM Phone
        0402  6255 Phone Parent
        0423  6682 Phone Parent
        0428  6230i Modem
        0429  6230i MultiMedia Card
-       0431  770 Internet Tablet
+       0431  770/N800 Internet Tablet
        0432  N90 Phone Parent
        0435  E70 (IP Passthrough/RNDIS mode)
        0436  E60 (IP Passthrough/RNDIS mode)
        04f9  6300 (PC Suite mode)
        0508  E65 (PC Suite mode)
        0509  E65 (Storage mode)
-       0518  N9 Phone
+       0518  N9 (Storage mode)
+       0519  N9 (RNDIS/Ethernet mode)
+       051a  N9 (PC Suite mode)
        054d  C2-01
        0600  Digital Pen SU-1B
        0610  CS-15 (Internet Stick 3G modem)
        b651  Ferrari GT Rumble Force Wheel
        b653  RGT Force Feedback Clutch Racing Wheel
        b654  Ferrari GT Force Feedback Wheel
+       b677  T150 Racing Wheel
        b678  T.Flight Rudder Pedals
        b679  T-Rudder
        b687  TWCS Throttle
        09a0  RTL8153B GigE [Surface Ethernet Adapter]
        09c0  Surface Type Cover
        0a00  Lumia 950 Dual SIM (RM-1118)
+       0b12  Xbox Wireless Controller (model 1914)
        930a  ISOUSB.SYS Intel 82930 Isochronous IO Test Board
        ffca  Catalina
        fff8  Keyboard
        0837  BCC950 ConferenceCam
        0840  QuickCam Express
        0843  Webcam C930e
+       0845  ConferenceCam CC3000e Camera
+       0846  ConferenceCam CC3000e Speakerphone
+       084b  ConferenceCam Connect Video
        0850  QuickCam Web
+       0857  Logi Group Speakerphone
        085c  C922 Pro Stream Webcam
+       085e  BRIO Ultra HD Webcam
        0870  QuickCam Express
+       0882  Logi Group Speakerphone
        0890  QuickCam Traveler
-       0892  OrbiCam
+       0892  C920 HD Pro Webcam
+       0893  StreamCam
        0894  CrystalCam
        0895  QuickCam for Dell Notebooks
        0896  OrbiCam
        0a5b  G933 Wireless Headset Dongle
        0a5d  G933 Headset Battery Charger
        0a66  [G533 Wireless Headset Dongle]
+       0a8f  H390 headset with microphone
        0b02  C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode)
        8801  Video Camera
        b014  Bluetooth Mouse M336/M337/M535
        c083  G403 Prodigy Gaming Mouse
        c084  G203 Gaming Mouse
        c08b  G502 SE HERO Gaming Mouse
+       c092  G203 LIGHTSYNC Gaming Mouse
        c101  UltraX Media Remote
        c110  Harmony 785/880/885 Remote
        c111  Harmony 525 Remote
        c24e  G500s Laser Gaming Mouse
        c24f  G29 Driving Force Racing Wheel [PS3]
        c260  G29 Driving Force Racing Wheel [PS4]
+       c262  G920 Driving Force Racing Wheel
        c281  WingMan Force
        c283  WingMan Force 3D
        c285  WingMan Strike Force 3D
        c332  G502 Proteus Spectrum Optical Mouse
        c335  G910 Orion Spectrum Mechanical Keyboard
        c33a  G413 Gaming Keyboard
+       c33f  G815 Mechanical Keyboard
        c401  TrackMan Marble Wheel
        c402  Marble Mouse (2-button)
        c403  Turbo TrackMan Marble FX
        c534  Unifying Receiver
        c537  Cordless Mouse Receiver
        c53a  PowerPlay Wireless Charging System
+       c53d  G631 Keyboard
        c603  3Dconnexion Spacemouse Plus XT
        c605  3Dconnexion CADman
        c606  3Dconnexion Spacemouse Classic
        5001  Cabo I Camera
        5002  VideoCam CABO II
        5003  VideoCam
+       8018  Expert Wireless Trackball Mouse (K72359WW)
+       8068  Pro Fit Ergo Vertical Wireless Trackball
 047e  Agere Systems, Inc. (Lucent)
        0300  ORiNOCO Card
        1001  USS720 Parallel Port
        c008  Audio 655 DSP
        c00e  Blackwire C310 headset
        c03b  HD1
+       ca01  Calisto 800 Series
        da60  DA60
 0480  Toshiba America Inc
        0001  InTouch Module
        0408  FS-1320D Printer
        0640  ECOSYS M6026cdn
        069b  ECOSYS M2635dn
+       06b4  ECOSYS M5526cdw
 0483  STMicroelectronics
        0137  BeWAN ADSL USB ST (blue or green)
        0138  Unicorn II (ST70138B + MTC-20174TQ chipset)
        04ac  Xerox Travel Scanner 100
        04bb  strobe 400 scanner
        04cd  Xerox Travel Scanner 150
+       04ee  Duplex Combo Scanner
 04a8  Multivideo Labs, Inc.
        0101  Hub
        0303  Peripheral Switch
        190d  CanoScan 9000F Mark II
        190e  CanoScan LiDE 120
        190f  CanoScan LiDE 220
+       1913  CanoScan LiDE 300
        2200  CanoScan LiDE 25
        2201  CanoScan FB320U
        2202  CanoScan FB620U
        32b4  EOS Rebel T6
        32bb  EOS M5
        32bf  PowerShot SX420 IS
+       32c0  PowerShot ELPH 190IS
        32c1  PowerShot ELPH 180 / IXUS 175
        32c2  PowerShot SX720 HS
        32c5  EOS M6
        040e  DSC D70s (ptp)
        040f  D200 (mass storage mode)
        0410  D200 (ptp)
+       0411  D80 (mass storage mode)
+       0412  D80 (MTP/PTP mode)
        0413  D40 (mass storage mode)
        041e  D60 digital camera (mass storage mode)
        0422  D700 (ptp)
 04b4  Cypress Semiconductor Corp.
        0001  Mouse
        0002  CY7C63x0x Thermometer
+       0008  CDC ACM serial port
        0033  Mouse
        0060  Wireless optical mouse
        00f3  FX3 micro-controller (DFU mode)
        0130  MyIRC Remote Receiver
        0306  Telephone Receiver
        0407  Optical Skype Mouse
+       0818  AE-SMKD92-* [Thumb Keyboard]
        0bad  MetaGeek Wi-Spy
        1002  CY7C63001 R100 FM Radio
        1006  Human Interface Device
        0e03  Thermal Receipt Printer [TM-T20]
        1114  XP-440 [Expression Home Small-in-One Printer]
        1129  ET-4750 [WorkForce ET-4750 EcoTank All-in-One]
+       1168  Workforce WF-7820/7840 Series
 04b9  Rainbow Technologies, Inc.
        0300  SafeNet USB SuperPro/UltraPro
        1000  iKey 1000 Token
        11f3  fi-6130Z
        125a  PalmSecure Sensor Device - MP
        132e  fi-7160
+       159f  ScanSnap iX1500
        200f  Sigma DP2 (Mass Storage)
        2010  Sigma DP2 (PictBridge)
        201d  SATA 3.0 6Gbit/s Adaptor [GROOVY]
        01d3  FinePix A920 (PTP)
        01d4  FinePix F50fd (PTP)
        01d5  FinePix F47 (PTP)
+       01e7  Fujifilm A850 Digital Camera
        01f7  FinePix J250 (PTP)
        01fd  A160
        023e  FinePix AX300
        0241  FinePix S3200 Digital Camera
        0278  FinePix JV300
        02c5  FinePix S9900W Digital Camera (PTP)
+       02e0  X-T200 Digital Camera
        5006  ASK-300
 04cc  ST-Ericsson
        1122  Hub
        0006  Wired Keyboard (78/79 key) [RPI Wired Keyboard 5]
        0022  Portable Keyboard
        0348  Keyboard
+       0407  Keyboard [TEX Shinobi]
        048e  Optical Mouse
        0499  Optical Mouse
        1135  Mouse [MGK-15BU/MLK-15BU]
        a09f  E-Signal LUOM G10 Mechanical Gaming Mouse
        a100  Mouse [HV-MS735]
        a11b  Mouse [MX-3200]
+       a153  Optical Gaming Mouse
        a29f  Microarray fingerprint reader
        b534  LGT8F328P Microprocessor
        e002  MCU
+       fc2a  Gaming Mouse [Redragon M709]
+       fc30  Gaming Mouse [Redragon M711]
+       fc38  Gaming Mouse [Redragon M602-RGB]
+       fc4d  Gaming Mouse [Redragon M908]
+       fc55  Venus MMO Gaming Mouse
 04da  Panasonic (Matsushita)
        0901  LS-120 Camera
        0912  SDR-S10
        b1ac  HP Laptop Integrated Webcam [2 MP Fixed]
        b1b4  Lenovo Integrated Camera
        b1b9  Asus Integrated Webcam
+       b1bb  2.0M UVC WebCam
        b1cf  Lenovo Integrated Camera
        b1d6  CNF9055 Toshiba Webcam
        b1d8  1.3M Webcam
        b444  Lenovo Integrated Webcam
        b49f  Bluetooth (RTL8723BE)
        b563  Integrated Camera
+       b5ab  Integrated Camera
+       b5ac  Integrated IR Camera
        b5ce  Integrated Camera
        b5cf  Integrated IR Camera
        b5db  HP Webcam
        02f4  2.4G Cordless Mouse
        0381  Touchscreen
        04a0  Dream Cheeky Stress/Panic Button
+       0c28  fingerprint sensor [FeinTech FPS00200]
        2234  Touchscreen
 04f4  Harting Elektronik, Inc.
 04f5  Fujitsu-ICL Systems, Inc.
        002b  HL-5250DN Printer
        002c  Printer
        002d  Printer
+       0037  HL-3040CN series
+       0038  HL-3070CW series
        0039  HL-5340 series
        0041  HL-2250DN Laser Printer
        0042  HL-2270DW Laser Printer
        01eb  MFC-7320
        01ec  MFC-9640CW
        01f4  MFC-5890CN
+       0204  DCP-165C
        020a  MFC-8670DN
        020c  DCP-9042CDN
        020d  MFC-9450CDN
        03bc  MFC-L2700DN
        03bd  DCP-J762N
        03fd  ADS-2700W
+       043f  MFC-L3770CDW
+       0440  MFC-9350CDW
+       0441  MFC-L3750CDW
+       0442  MFC-L3745CDW
+       0443  MFC-L3735CDN
+       0444  MFC-9150CDN
+       0445  MFC-L3730CDN
+       0446  MFC-L3710CW
+       0447  DCP-9030CDN
+       0448  DCP-L3550CDW
+       044a  HL-L3290CDW
+       044b  DCP-L3510CDW
+       044c  DCP-L3551CDW
        1000  Printer
        1002  Printer
        2002  PTUSB Printing
        204d  QL-720NW Label Printer (mass storage mode)
        2061  PT-P700 P-touch Label Printer
        2064  PT-P700 P-touch Label Printer RemovableDisk
+       2074  PT-D600 P-touch Label Printer
        209b  QL-800 Label Printer
        209c  QL-810W Label Printer
        209d  QL-820NWB Label Printer
        a4a2  Linux-USB Ethernet/RNDIS Gadget
        a4a3  Linux-USB user-mode isochronous source/sink
        a4a4  Linux-USB user-mode bulk source/sink
-       a4a5  Pocketbook Pro 903 / Mobius 2 Action Cam / xDuoo X3 / PocketBook Pro 602
+       a4a5  Linux-USB File-backed Storage Gadget
        a4a6  Linux-USB Serial Gadget
        a4a7  Linux-USB Serial Gadget (CDC ACM mode)
        a4a8  Linux-USB Printer Gadget
        a4a9  Linux-USB OBEX Gadget
        a4aa  Linux-USB CDC Composite Gadge (Ethernet and ACM)
+       a4ab  Linux-USB Multifunction Composite Gadget
+       a4ac  Linux-USB HID Gadget
 0526  Temic MHS S.A.
 0527  ALTRA
 0528  ATI Technologies, Inc.
        0689  Walkman NWZ-B173F
        06bb  WALKMAN NWZ-F805
        06c3  RC-S380
+       07c3  ILCE-6000 (aka Alpha-6000) in Mass Storage mode
        07c4  ILCE-6000 (aka Alpha-6000) in Mass Storage mode
        082f  Walkman NWZW Series
        0847  WG-C10 Portable Wireless Server
+       0877  UP-D898/X898 series
        0884  MDR-ZX770BN [Wireless Noise Canceling Stereo Headset]
        088c  Portable Headphone Amplifier
        08b7  ILCE-6000 (aka Alpha-6000) in MTP mode
        0c02  ILCE-7M3 [A7III] in Mass Storage mode
        0c03  ILCE-7M3 [A7III] in MTP mode
        0c34  ILCE-7M3 [A7III] in PC Remote mode
+       0c7f  WH-CH700N [Wireless Noise-Canceling Headphones]
        0cd3  WH-1000XM3 [Wireless Noise-Canceling Headphones]
        0cda  PlayStation Classic controller
+       0ce0  WF-1000XM3 [Wireless Noise-Canceling Headphones]
+       0cf0  MRW-G1
+       0d58  WH-1000XM4 [Wireless Noise-Canceling Headphones]
        1000  Wireless Buzz! Receiver
 054d  Try Corp.
 054e  Proside Corp.
        2213  CS682 2-Port USB 2.0 DVI KVM Switch
        2221  Winbond Hermon
        2404  4-port switch
+       2419  Virtual mouse/keyboard device
        2600  IDE Bridge
        2701  CE700A KVM Extender
        4000  DSB-650 10Mbps Ethernet [klsi]
        0001  Monitor
        0002  HID Monitor Controls
        0003  Device Bay Controller
+       4000  FlexScan EV3237
        4001  Monitor
+       4002  USB HID Monitor
+       4014  FlexScan EV2750
+       4026  FlexScan EV2451
+       4027  FlexScan EV2456
+       4036  FlexScan EV2785
+       4037  FlexScan EV3285
+       4044  FlexScan EV2457
+       4059  FlexScan EV2760
+       405b  FlexScan EV2460
+       405f  FlexScan EV2795
+       4065  FlexScan EV3895
 056e  Elecom Co., Ltd
        0002  29UO Mouse
        0057  Micro Grast Pop M-PGDL
        9230  Camera
        9320  Camera
        9331  Camera
+       9332  Camera - 1080p
        9422  Camera
        9520  Camera
 05a4  Ortek Technology, Inc.
        8204  Built-in Bluetooth 2.0+EDR HCI
        8205  Bluetooth HCI
        8206  Bluetooth HCI
+       8207  Built-in Bluetooth
        820a  Bluetooth HID Keyboard
        820b  Bluetooth HID Mouse
        820f  Bluetooth HCI
        8218  Bluetooth Host Controller
        821a  Bluetooth Host Controller
        821f  Built-in Bluetooth 2.0+EDR HCI
+       8233  iBridge
        8240  Built-in IR Receiver
        8241  Built-in IR Receiver
        8242  Built-in IR Receiver
        f102  VX7012 TV Box
        f103  VX7012 TV Box
        f104  VX7012 TV Box
+       f12a  Digital Microscope
        fd21  3M TL20 Temperature Logger
        fe00  Razer Mouse
 05e4  Red Wing Corp.
 05fc  Harman
        0001  Soundcraft Si Multi Digital Card
        0010  Soundcraft Si MADI combo card
+       0021  Soundcraft Signature 12 MTK
        7849  Harman/Kardon SoundSticks
 05fd  InterAct, Inc.
        0239  SV-239 HammerHead Digital
        0002  Sino Wealth keyboard/mouse 2.4 GHz receiver
        00f1  Keyboard (Labtec Ultra Flat Keyboard)
        00f2  Keyboard (Labtec Ultra Flat Keyboard)
+       1002  Mobius actioncam (webcam mode)
        6871  Mouse
        8611  NTK96550 based camera
 0604  Jean Co., Ltd
        00f7  OKI B4600 Mono Printer
        015e  OKIPOS 411/412 POS Printer
        01c9  OKI B430 Mono Printer
+       01db  MC860 Multifunction Printer
+       01dc  MC860 Multifunction Printer
+       01dd  MC860 Multifunction Printer
+       01de  MC860 Multifunction Printer
+       01df  CX2633 Multifunction Printer
+       01e0  ES8460 Multifunction Printer
        020b  OKI ES4140 Mono Printer
        02bb  OKI PT390 POS Printer
        0383  MC563 Multifunction Printer
        1101  Generic Display Device (Mass storage mode)
        c101  Generic Display Device
 1de6  MICRORISC s.r.o.
+1df7  SDRplay
+       2500  RSP1
+       3000  RSP1a
+       3010  RSP2/RSP2pro
+       3020  RSPduo
+       3030  RSPdx
 1e0e  Qualcomm / Option
        f000  iCON 210 UMTS Surfstick
 1e10  Point Grey Research, Inc.
 32b3  TEXA
        d1a6  TXT Multihub
        d1a7  TXT Multihub
+3310  MUDITA Sp. z o.o.
+       0100  Pure
+       0101  Pure tethering
 3333  InLine
        3333  2 port KVM switch model 60652K
 3334  AEI
        ffff  Mio DigiWalker Sync
 3344  Leaguer Microelectronics (LME)
        3744  OEM PC Remote
+3384  System76
+       0000  Thelio Io (thelio-io)
+       0001  Launch Configurable Keyboard (launch_1)
 348f  ISY
        2322  Wireless Presenter
 3504  Micro Star
diff --git a/src/patches/Python-2.7.3-gdbm-1.patch b/src/patches/Python-2.7.3-gdbm-1.patch
deleted file mode 100644 (file)
index c72b452..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naur Python-2.7-org/setup.py Python-2.7/setup.py
---- Python-2.7-org/setup.py    2010-06-27 14:36:16.000000000 +0200
-+++ Python-2.7/setup.py        2010-07-13 22:23:04.000000000 +0200
-@@ -1125,7 +1125,7 @@
-                                                                'ndbm'):
-                             ndbm_libs = ['ndbm']
-                         else:
--                            ndbm_libs = []
-+                            ndbm_libs = ['gdbm', 'gdbm_compat' ]
-                         print "building dbm using ndbm"
-                         dbmext = Extension('dbm', ['dbmmodule.c'],
-                                            define_macros=[
-@@ -1140,7 +1140,7 @@
-                         if self.compiler.find_library_file(lib_dirs,
-                                                                'gdbm_compat'):
-                             gdbm_libs.append('gdbm_compat')
--                        if find_file("gdbm/ndbm.h", inc_dirs, []) is not None:
-+                        if find_file("ndbm.h", inc_dirs, []) is not None:
-                             print "building dbm using gdbm"
-                             dbmext = Extension(
-                                 'dbm', ['dbmmodule.c'],
diff --git a/src/patches/Python-2.7.9-gdbm-1.patch b/src/patches/Python-2.7.9-gdbm-1.patch
deleted file mode 100644 (file)
index c72b452..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naur Python-2.7-org/setup.py Python-2.7/setup.py
---- Python-2.7-org/setup.py    2010-06-27 14:36:16.000000000 +0200
-+++ Python-2.7/setup.py        2010-07-13 22:23:04.000000000 +0200
-@@ -1125,7 +1125,7 @@
-                                                                'ndbm'):
-                             ndbm_libs = ['ndbm']
-                         else:
--                            ndbm_libs = []
-+                            ndbm_libs = ['gdbm', 'gdbm_compat' ]
-                         print "building dbm using ndbm"
-                         dbmext = Extension('dbm', ['dbmmodule.c'],
-                                            define_macros=[
-@@ -1140,7 +1140,7 @@
-                         if self.compiler.find_library_file(lib_dirs,
-                                                                'gdbm_compat'):
-                             gdbm_libs.append('gdbm_compat')
--                        if find_file("gdbm/ndbm.h", inc_dirs, []) is not None:
-+                        if find_file("ndbm.h", inc_dirs, []) is not None:
-                             print "building dbm using gdbm"
-                             dbmext = Extension(
-                                 'dbm', ['dbmmodule.c'],
diff --git a/src/patches/arm-dont-require-distutils.patch b/src/patches/arm-dont-require-distutils.patch
deleted file mode 100644 (file)
index 1fe2b8a..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -Nur arm.vanilla/src/util/hostnames.py arm/src/util/hostnames.py
---- arm.vanilla/src/util/hostnames.py  2012-04-29 05:59:24.000000000 +0200
-+++ arm/src/util/hostnames.py  2013-07-31 17:59:19.245591564 +0200
-@@ -30,7 +30,6 @@
- import threading
- import itertools
- import Queue
--import distutils.sysconfig
- from util import log, sysTools
-@@ -264,7 +263,7 @@
-     # 'socket.gethostbyaddr'. The following checks if the system has the
-     # gethostbyname_r function, which determines if python resolutions can be
-     # done in parallel or not. If so, this is preferable.
--    isSocketResolutionParallel = distutils.sysconfig.get_config_var("HAVE_GETHOSTBYNAME_R")
-+    isSocketResolutionParallel = True #distutils.sysconfig.get_config_var("HAVE_GETHOSTBYNAME_R")
-     self.useSocketResolution = CONFIG["queries.hostnames.useSocketModule"] and isSocketResolutionParallel
-     
-     for _ in range(CONFIG["queries.hostnames.poolSize"]):
diff --git a/src/patches/arm-multi-grsec-compile-fixes.patch b/src/patches/arm-multi-grsec-compile-fixes.patch
deleted file mode 100644 (file)
index b71d9ae..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -Naur linux-3.14.76.org/arch/arm/mach-omap2/cclock3xxx_data.c linux-3.14.76/arch/arm/mach-omap2/cclock3xxx_data.c
---- linux-3.14.76.org/arch/arm/mach-omap2/cclock3xxx_data.c    2016-08-18 06:26:02.000000000 +0200
-+++ linux-3.14.76/arch/arm/mach-omap2/cclock3xxx_data.c        2016-08-18 06:37:51.442186995 +0200
-@@ -250,7 +250,7 @@
- static struct clk dpll1_ck;
--static struct clk_ops dpll1_ck_ops;
-+static clk_ops_no_const dpll1_ck_ops;
- static struct clk_ops dpll1_ck_ops_34xx __initdata = {
-       .init           = &omap2_init_clk_clkdm,
-diff -Naur linux-3.14.76.org/net/ipv6/addrconf.c linux-3.14.76/net/ipv6/addrconf.c
---- linux-3.14.76.org/net/ipv6/addrconf.c      2016-08-18 06:25:51.000000000 +0200
-+++ linux-3.14.76/net/ipv6/addrconf.c  2016-08-18 06:31:51.802186824 +0200
-@@ -4818,7 +4818,7 @@
- {
-       struct inet6_dev *idev = ctl->extra1;
-       int min_mtu = IPV6_MIN_MTU;
--      struct ctl_table lctl;
-+      ctl_table_no_const lctl;
-       lctl = *ctl;
-       lctl.extra1 = &min_mtu;
diff --git a/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch b/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch
deleted file mode 100644 (file)
index acfb12f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-diff -Naur compat-drivers-3.8.3-2-snpu.org/drivers/net/wireless/ath/regd.c compat-drivers-3.8.3-2-snpu/drivers/net/wireless/ath/regd.c
---- compat-drivers-3.8.3-2-snpu.org/drivers/net/wireless/ath/regd.c    2013-03-15 22:55:09.000000000 +0100
-+++ compat-drivers-3.8.3-2-snpu/drivers/net/wireless/ath/regd.c        2013-08-22 11:51:36.793297656 +0200
-@@ -200,6 +200,8 @@
-       u32 bandwidth = 0;
-       int r;
-+      return;
-+
-       for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
-               if (!wiphy->bands[band])
-@@ -259,6 +261,8 @@
-       u32 bandwidth = 0;
-       int r;
-+      return;
-+
-       sband = wiphy->bands[IEEE80211_BAND_2GHZ];
-       if (!sband)
-               return;
-@@ -308,6 +312,8 @@
-       struct ieee80211_channel *ch;
-       unsigned int i;
-+      return;
-+
-       if (!wiphy->bands[IEEE80211_BAND_5GHZ])
-               return;
-@@ -514,6 +520,8 @@
- {
-       const struct ieee80211_regdomain *regd;
-+      return 0;
-+
-       wiphy->reg_notifier = reg_notifier;
-       wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY;
diff --git a/src/patches/cups-str4609.patch b/src/patches/cups-str4609.patch
deleted file mode 100644 (file)
index 2a9761b..0000000
+++ /dev/null
@@ -1,423 +0,0 @@
-diff -up cups-1.7.5/cgi-bin/ipp-var.c.str4609 cups-1.7.5/cgi-bin/ipp-var.c
---- cups-1.7.5/cgi-bin/ipp-var.c.str4609       2014-05-22 15:59:21.000000000 +0200
-+++ cups-1.7.5/cgi-bin/ipp-var.c       2015-06-10 10:31:45.297965345 +0200
-@@ -1206,21 +1206,7 @@ cgiSetIPPObjectVars(
-             * Rewrite URIs...
-             */
--              if (!strcmp(name, "member_uris"))
--            {
--              char    url[1024];      /* URL for class member... */
--
--
--              cgiRewriteURL(attr->values[i].string.text, url,
--                            sizeof(url), NULL);
--
--                snprintf(valptr, sizeof(value) - (valptr - value),
--                       "<A HREF=\"%s\">%s</A>", url,
--                       strrchr(attr->values[i].string.text, '/') + 1);
--            }
--            else
--              cgiRewriteURL(attr->values[i].string.text, valptr,
--                            sizeof(value) - (valptr - value), NULL);
-+            cgiRewriteURL(attr->values[i].string.text, valptr, sizeof(value) - (valptr - value), NULL);
-               break;
-             }
-diff -up cups-1.7.5/cgi-bin/template.c.str4609 cups-1.7.5/cgi-bin/template.c
---- cups-1.7.5/cgi-bin/template.c.str4609      2014-03-05 22:11:32.000000000 +0100
-+++ cups-1.7.5/cgi-bin/template.c      2015-06-10 10:31:45.297965345 +0200
-@@ -659,39 +659,7 @@ cgi_puts(const char *s,                   /* I - String
-   while (*s)
-   {
-     if (*s == '<')
--    {
--     /*
--      * Pass <A HREF="url"> and </A>, otherwise quote it...
--      */
--
--      if (!_cups_strncasecmp(s, "<A HREF=\"", 9))
--      {
--        fputs("<A HREF=\"", out);
--      s += 9;
--
--      while (*s && *s != '\"')
--      {
--          if (*s == '&')
--            fputs("&amp;", out);
--        else
--          putc(*s, out);
--
--        s ++;
--      }
--
--        if (*s)
--        s ++;
--
--      fputs("\">", out);
--      }
--      else if (!_cups_strncasecmp(s, "</A>", 4))
--      {
--        fputs("</A>", out);
--      s += 3;
--      }
--      else
--        fputs("&lt;", out);
--    }
-+      fputs("&lt;", out);
-     else if (*s == '>')
-       fputs("&gt;", out);
-     else if (*s == '\"')
-diff -up cups-1.7.5/scheduler/client.c.str4609 cups-1.7.5/scheduler/client.c
---- cups-1.7.5/scheduler/client.c.str4609      2015-06-10 10:31:45.280965399 +0200
-+++ cups-1.7.5/scheduler/client.c      2015-06-10 10:31:45.300965335 +0200
-@@ -598,7 +598,12 @@ cupsdCloseClient(cupsd_client_t *con)     /*
-     httpClearCookie(HTTP(con));
-     httpClearFields(HTTP(con));
--    cupsdClearString(&con->filename);
-+    if (con->filename)
-+    {
-+      unlink(con->filename);
-+      cupsdClearString(&con->filename);
-+    }
-+
-     cupsdClearString(&con->command);
-     cupsdClearString(&con->options);
-     cupsdClearString(&con->query_string);
-diff -up cups-1.7.5/scheduler/env.c.str4609 cups-1.7.5/scheduler/env.c
---- cups-1.7.5/scheduler/env.c.str4609 2015-06-10 10:31:45.208965629 +0200
-+++ cups-1.7.5/scheduler/env.c 2015-06-10 10:31:45.300965335 +0200
-@@ -131,6 +131,13 @@ cupsdSetEnv(const char *name,             /* I - Na
-     return;
-  /*
-+  * Do not allow dynamic linker variables when running as root...
-+  */
-+
-+  if (!RunUser && (!strncmp(name, "DYLD_", 5) || !strncmp(name, "LD_", 3)))
-+    return;
-+
-+ /*
-   * See if this variable has already been defined...
-   */
-diff -up cups-1.7.5/scheduler/ipp.c.str4609 cups-1.7.5/scheduler/ipp.c
---- cups-1.7.5/scheduler/ipp.c.str4609 2015-06-10 10:31:45.287965377 +0200
-+++ cups-1.7.5/scheduler/ipp.c 2015-06-10 10:31:45.299965339 +0200
-@@ -412,8 +412,7 @@ cupsdProcessIPPRequest(
-           * Remote unauthenticated user masquerading as local root...
-           */
--          _cupsStrFree(username->values[0].string.text);
--          username->values[0].string.text = _cupsStrAlloc(RemoteRoot);
-+            ippSetString(con->request, &username, 0, RemoteRoot);
-         }
-       }
-@@ -1576,7 +1575,7 @@ add_job(cupsd_client_t  *con,            /* I - Cl
-     cupsdSetString(&job->username, con->username);
-     if (attr)
--      cupsdSetString(&attr->values[0].string.text, con->username);
-+      ippSetString(job->attrs, &attr, 0, con->username);
-   }
-   else if (attr)
-   {
-@@ -1594,9 +1593,8 @@ add_job(cupsd_client_t  *con,            /* I - Cl
-                  "job-originating-user-name", NULL, job->username);
-   else
-   {
--    attr->group_tag = IPP_TAG_JOB;
--    _cupsStrFree(attr->name);
--    attr->name = _cupsStrAlloc("job-originating-user-name");
-+    ippSetGroupTag(job->attrs, &attr, IPP_TAG_JOB);
-+    ippSetName(job->attrs, &attr, "job-originating-user-name");
-   }
-   if (con->username[0] || auth_info)
-@@ -1630,48 +1628,11 @@ add_job(cupsd_client_t  *con,          /* I - Cl
-       * Also, we can only have 1 value and it must be a name value.
-       */
--      switch (attr->value_tag)
--      {
--        case IPP_TAG_STRING :
--      case IPP_TAG_TEXTLANG :
--      case IPP_TAG_NAMELANG :
--      case IPP_TAG_TEXT :
--      case IPP_TAG_NAME :
--      case IPP_TAG_KEYWORD :
--      case IPP_TAG_URI :
--      case IPP_TAG_URISCHEME :
--      case IPP_TAG_CHARSET :
--      case IPP_TAG_LANGUAGE :
--      case IPP_TAG_MIMETYPE :
--         /*
--          * Free old strings...
--          */
--
--          for (i = 0; i < attr->num_values; i ++)
--          {
--            _cupsStrFree(attr->values[i].string.text);
--            attr->values[i].string.text = NULL;
--            if (attr->values[i].string.language)
--            {
--              _cupsStrFree(attr->values[i].string.language);
--              attr->values[i].string.language = NULL;
--            }
--            }
--
--      default :
--            break;
--      }
--
--     /*
--      * Use the default connection hostname instead...
--      */
--
--      attr->value_tag             = IPP_TAG_NAME;
--      attr->num_values            = 1;
--      attr->values[0].string.text = _cupsStrAlloc(con->http.hostname);
-+      ippDeleteAttribute(job->attrs, attr);
-+      ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-originating-host-name", NULL, con->http.hostname);
-     }
--
--    attr->group_tag = IPP_TAG_JOB;
-+    else
-+      ippSetGroupTag(job->attrs, &attr, IPP_TAG_JOB);
-   }
-   else
-   {
-@@ -1767,8 +1728,8 @@ add_job(cupsd_client_t  *con,            /* I - Cl
-       attr = ippAddStrings(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-sheets",
-                            2, NULL, NULL);
--      attr->values[0].string.text = _cupsStrRetain(printer->job_sheets[0]);
--      attr->values[1].string.text = _cupsStrRetain(printer->job_sheets[1]);
-+      ippSetString(job->attrs, &attr, 0, printer->job_sheets[0]);
-+      ippSetString(job->attrs, &attr, 1, printer->job_sheets[1]);
-     }
-     job->job_sheets = attr;
-@@ -1794,7 +1755,7 @@ add_job(cupsd_client_t  *con,            /* I - Cl
-           * Force the leading banner to have the classification on it...
-         */
--          cupsdSetString(&attr->values[0].string.text, Classification);
-+          ippSetString(job->attrs, &attr, 0, Classification);
-         cupsdLogJob(job, CUPSD_LOG_NOTICE, "CLASSIFICATION FORCED "
-                                            "job-sheets=\"%s,none\", "
-@@ -1811,7 +1772,7 @@ add_job(cupsd_client_t  *con,            /* I - Cl
-         * Can't put two different security markings on the same document!
-         */
--          cupsdSetString(&attr->values[1].string.text, attr->values[0].string.text);
-+          ippSetString(job->attrs, &attr, 1, attr->values[0].string.text);
-         cupsdLogJob(job, CUPSD_LOG_NOTICE, "CLASSIFICATION FORCED "
-                                            "job-sheets=\"%s,%s\", "
-@@ -1851,18 +1812,18 @@ add_job(cupsd_client_t  *con,          /* I - Cl
-         if (attr->num_values > 1 &&
-           !strcmp(attr->values[0].string.text, attr->values[1].string.text))
-       {
--          cupsdSetString(&(attr->values[0].string.text), Classification);
--          cupsdSetString(&(attr->values[1].string.text), Classification);
-+          ippSetString(job->attrs, &attr, 0, Classification);
-+          ippSetString(job->attrs, &attr, 1, Classification);
-       }
-         else
-       {
-           if (attr->num_values == 1 ||
-             strcmp(attr->values[0].string.text, "none"))
--            cupsdSetString(&(attr->values[0].string.text), Classification);
-+            ippSetString(job->attrs, &attr, 0, Classification);
-           if (attr->num_values > 1 &&
-             strcmp(attr->values[1].string.text, "none"))
--            cupsdSetString(&(attr->values[1].string.text), Classification);
-+          ippSetString(job->attrs, &attr, 1, Classification);
-         }
-         if (attr->num_values > 1)
-@@ -3098,8 +3059,8 @@ authenticate_job(cupsd_client_t  *con,   /
-   if (attr)
-   {
--    attr->value_tag = IPP_TAG_KEYWORD;
--    cupsdSetString(&(attr->values[0].string.text), "no-hold");
-+    ippSetValueTag(job->attrs, &attr, IPP_TAG_KEYWORD);
-+    ippSetString(job->attrs, &attr, 0, "no-hold");
-   }
-  /*
-@@ -8224,11 +8185,7 @@ print_job(cupsd_client_t  *con,         /* I -
-              filetype->type);
-     if (format)
--    {
--      _cupsStrFree(format->values[0].string.text);
--
--      format->values[0].string.text = _cupsStrAlloc(mimetype);
--    }
-+      ippSetString(con->request, &format, 0, mimetype);
-     else
-       ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
-                  "document-format", NULL, mimetype);
-@@ -8765,10 +8722,8 @@ release_job(cupsd_client_t  *con,       /* I -
-   if (attr)
-   {
--    _cupsStrFree(attr->values[0].string.text);
--
--    attr->value_tag = IPP_TAG_KEYWORD;
--    attr->values[0].string.text = _cupsStrAlloc("no-hold");
-+    ippSetValueTag(job->attrs, &attr, IPP_TAG_KEYWORD);
-+    ippSetString(job->attrs, &attr, 0, "no-hold");
-     cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED, cupsdFindDest(job->dest), job,
-                   "Job job-hold-until value changed by user.");
-@@ -9461,11 +9416,7 @@ send_document(cupsd_client_t  *con,     /* I
-     if ((jformat = ippFindAttribute(job->attrs, "document-format",
-                                     IPP_TAG_MIMETYPE)) != NULL)
--    {
--      _cupsStrFree(jformat->values[0].string.text);
--
--      jformat->values[0].string.text = _cupsStrAlloc(mimetype);
--    }
-+      ippSetString(job->attrs, &jformat, 0, mimetype);
-     else
-       ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
-                  "document-format", NULL, mimetype);
-diff -up cups-1.7.5/scheduler/job.c.str4609 cups-1.7.5/scheduler/job.c
---- cups-1.7.5/scheduler/job.c.str4609 2015-06-10 10:31:45.288965374 +0200
-+++ cups-1.7.5/scheduler/job.c 2015-06-10 10:31:45.299965339 +0200
-@@ -375,7 +375,7 @@ cupsdCheckJobs(void)
-           if ((attr = ippFindAttribute(job->attrs, "job-actual-printer-uri",
-                                      IPP_TAG_URI)) != NULL)
--            cupsdSetString(&attr->values[0].string.text, printer->uri);
-+            ippSetString(job->attrs, &attr, 0, printer->uri);
-         else
-           ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI,
-                        "job-actual-printer-uri", NULL, printer->uri);
-@@ -2109,7 +2109,7 @@ cupsdMoveJob(cupsd_job_t     *job,       /* I
-   if ((attr = ippFindAttribute(job->attrs, "job-printer-uri",
-                                IPP_TAG_URI)) != NULL)
--    cupsdSetString(&(attr->values[0].string.text), p->uri);
-+    ippSetString(job->attrs, &attr, 0, p->uri);
-   cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, p, job,
-                 "Job #%d moved from %s to %s.", job->id, olddest,
-@@ -2306,7 +2306,7 @@ cupsdSetJobHoldUntil(cupsd_job_t *job,   /
-       attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
-     if (attr)
--      cupsdSetString(&(attr->values[0].string.text), when);
-+      ippSetString(job->attrs, &attr, 0, when);
-     else
-       attr = ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_KEYWORD,
-                           "job-hold-until", NULL, when);
-@@ -2560,8 +2560,8 @@ cupsdSetJobState(
-       if (attr)
-       {
--        attr->value_tag = IPP_TAG_KEYWORD;
--        cupsdSetString(&(attr->values[0].string.text), "no-hold");
-+        ippSetValueTag(job->attrs, &attr, IPP_TAG_KEYWORD);
-+        ippSetString(job->attrs, &attr, 0, "no-hold");
-       }
-     default :
-@@ -4598,7 +4598,7 @@ start_job(cupsd_job_t     *job,          /* I -
-                                             "job-printer-state-message",
-                                             IPP_TAG_TEXT);
-   if (job->printer_message)
--    cupsdSetString(&(job->printer_message->values[0].string.text), "");
-+    ippSetString(job->attrs, &job->printer_message, 0, "");
-   ippSetString(job->attrs, &job->reasons, 0, "job-printing");
-   cupsdSetJobState(job, IPP_JOB_PROCESSING, CUPSD_JOB_DEFAULT, NULL);
-@@ -5216,15 +5216,14 @@ update_job_attrs(cupsd_job_t *job,     /* I
-   if (job->state_value != IPP_JOB_PROCESSING &&
-       job->status_level == CUPSD_LOG_INFO)
-   {
--    cupsdSetString(&(job->printer_message->values[0].string.text), "");
-+    ippSetString(job->attrs, &job->printer_message, 0, "");
-     job->dirty = 1;
-     cupsdMarkDirty(CUPSD_DIRTY_JOBS);
-   }
-   else if (job->printer->state_message[0] && do_message)
-   {
--    cupsdSetString(&(job->printer_message->values[0].string.text),
--                 job->printer->state_message);
-+    ippSetString(job->attrs, &job->printer_message, 0, job->printer->state_message);
-     job->dirty = 1;
-     cupsdMarkDirty(CUPSD_DIRTY_JOBS);
-diff -up cups-1.7.5/scheduler/main.c.str4609 cups-1.7.5/scheduler/main.c
---- cups-1.7.5/scheduler/main.c.str4609        2015-06-10 10:31:45.265965447 +0200
-+++ cups-1.7.5/scheduler/main.c        2015-06-10 10:31:45.300965335 +0200
-@@ -1205,8 +1205,8 @@ cupsdAddString(cups_array_t **a, /* IO -
-   if (!*a)
-     *a = cupsArrayNew3((cups_array_func_t)strcmp, NULL,
-                      (cups_ahash_func_t)NULL, 0,
--                     (cups_acopy_func_t)_cupsStrAlloc,
--                     (cups_afree_func_t)_cupsStrFree);
-+                     (cups_acopy_func_t)strdup,
-+                     (cups_afree_func_t)free);
-   return (cupsArrayAdd(*a, (char *)s));
- }
-@@ -1236,7 +1236,7 @@ cupsdClearString(char **s)               /* O - Strin
- {
-   if (s && *s)
-   {
--    _cupsStrFree(*s);
-+    free(*s);
-     *s = NULL;
-   }
- }
-@@ -1317,10 +1317,10 @@ cupsdSetString(char       **s,         /* O - N
-     return;
-   if (*s)
--    _cupsStrFree(*s);
-+    free(*s);
-   if (v)
--    *s = _cupsStrAlloc(v);
-+    *s = strdup(v);
-   else
-     *s = NULL;
- }
-@@ -1351,13 +1351,13 @@ cupsdSetStringf(char       **s,                /* O -
-     vsnprintf(v, sizeof(v), f, ap);
-     va_end(ap);
--    *s = _cupsStrAlloc(v);
-+    *s = strdup(v);
-   }
-   else
-     *s = NULL;
-   if (olds)
--    _cupsStrFree(olds);
-+    free(olds);
- }
-@@ -1804,8 +1804,7 @@ process_children(void)
-           }
-           if (job->printer_message)
--            cupsdSetString(&(job->printer_message->values[0].string.text),
--                           message);
-+            ippSetString(job->attrs, &job->printer_message, 0, message);
-         }
-       }
diff --git a/src/patches/db-4.4.20-fixes-1.patch b/src/patches/db-4.4.20-fixes-1.patch
deleted file mode 100644 (file)
index 8c11876..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-Submitted By: Dan Nicholson <dnicholson AT linuxfromscratch DOT org>
-Date: 2006-09-02
-Initial Package Version: 4.4.20
-Origin: Upstream - http://www.sleepycat.com/update/4.4.20/patch.4.4.20.html
-Description: Bug fixes provided by the developer. Contains patches 1-4.
-
-diff -pNur db-4.4.20.orig/db/db_cam.c db-4.4.20/db/db_cam.c
---- db-4.4.20.orig/db/db_cam.c 2006-01-10 16:19:21.000000000 +0000
-+++ db-4.4.20/db/db_cam.c      2006-08-03 14:31:20.220319610 +0000
-@@ -579,11 +579,12 @@ __db_c_get(dbc_arg, key, data, flags)
-           flags == DB_NEXT || flags == DB_NEXT_DUP || flags == DB_PREV)) {
-               if (tmp_rmw && (ret = dbc_arg->c_am_writelock(dbc_arg)) != 0)
-                       return (ret);
--              if ((ret = __db_c_idup(cp->opd, &opd, DB_POSITION)) != 0)
-+              if (F_ISSET(dbc_arg, DBC_TRANSIENT))
-+                      opd = cp->opd;
-+              else if ((ret = __db_c_idup(cp->opd, &opd, DB_POSITION)) != 0)
-                       return (ret);
--              switch (ret =
--                  opd->c_am_get(opd, key, data, flags, NULL)) {
-+              switch (ret = opd->c_am_get(opd, key, data, flags, NULL)) {
-               case 0:
-                       goto done;
-               case DB_NOTFOUND:
-@@ -596,12 +597,18 @@ __db_c_get(dbc_arg, key, data, flags)
-                               if ((ret = __db_c_close(opd)) != 0)
-                                       goto err;
-                               opd = NULL;
-+                              if (F_ISSET(dbc_arg, DBC_TRANSIENT))
-+                                      cp->opd = NULL;
-                               break;
-                       }
-                       goto err;
-               default:
-                       goto err;
-               }
-+      } else if (cp->opd != NULL && F_ISSET(dbc_arg, DBC_TRANSIENT)) {
-+              if ((ret = __db_c_close(cp->opd)) != 0)
-+                      goto err;
-+              cp->opd = NULL;
-       }
-       /*
-diff -pNur db-4.4.20.orig/mp/mp_fget.c db-4.4.20/mp/mp_fget.c
---- db-4.4.20.orig/mp/mp_fget.c        2005-10-12 17:53:36.000000000 +0000
-+++ db-4.4.20/mp/mp_fget.c     2006-08-03 14:31:20.223318410 +0000
-@@ -587,8 +587,11 @@ alloc:            /*
-        */
-       if (state != SECOND_MISS && bhp->ref == 1) {
-               bhp->priority = UINT32_MAX;
--              SH_TAILQ_REMOVE(&hp->hash_bucket, bhp, hq, __bh);
--              SH_TAILQ_INSERT_TAIL(&hp->hash_bucket, bhp, hq);
-+              if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) !=
-+                   SH_TAILQ_LAST(&hp->hash_bucket, hq, __bh)) {
-+                      SH_TAILQ_REMOVE(&hp->hash_bucket, bhp, hq, __bh);
-+                      SH_TAILQ_INSERT_TAIL(&hp->hash_bucket, bhp, hq);
-+              }
-               hp->hash_priority =
-                   SH_TAILQ_FIRSTP(&hp->hash_bucket, __bh)->priority;
-       }
-diff -pNur db-4.4.20.orig/qam/qam_files.c db-4.4.20/qam/qam_files.c
---- db-4.4.20.orig/qam/qam_files.c     2005-10-20 18:57:12.000000000 +0000
-+++ db-4.4.20/qam/qam_files.c  2006-08-03 14:31:20.211323209 +0000
-@@ -411,6 +411,12 @@ __qam_fremove(dbp, pgnoaddr)
-           DB_APP_DATA, buf, 0, NULL, &real_name)) != 0)
-               goto err;
- #endif
-+
-+      mpf = array->mpfarray[offset].mpf;
-+      /* This extent my already be marked for delete and closed. */
-+      if (mpf == NULL)
-+              goto err;
-+
-       /*
-        * The log must be flushed before the file is deleted.  We depend on
-        * the log record of the last delete to recreate the file if we crash.
-@@ -418,7 +424,6 @@ __qam_fremove(dbp, pgnoaddr)
-       if (LOGGING_ON(dbenv) && (ret = __log_flush(dbenv, NULL)) != 0)
-               goto err;
--      mpf = array->mpfarray[offset].mpf;
-       (void)__memp_set_flags(mpf, DB_MPOOL_UNLINK, 1);
-       /* Someone could be real slow, let them close it down. */
-       if (array->mpfarray[offset].pinref != 0)
-diff -pNur db-4.4.20.orig/txn/txn.c db-4.4.20/txn/txn.c
---- db-4.4.20.orig/txn/txn.c   2005-11-01 14:50:03.000000000 +0000
-+++ db-4.4.20/txn/txn.c        2006-08-03 14:31:20.215321609 +0000
-@@ -1049,12 +1049,14 @@ __txn_set_name(txn, name)
-               return (ret);
-       memcpy(txn->name, name, len);
-+      TXN_SYSTEM_LOCK(dbenv);
-       if (td->name != INVALID_ROFF) {
-               __db_shalloc_free(
-                   &mgr->reginfo, R_ADDR(&mgr->reginfo, td->name));
-               td->name = INVALID_ROFF;
-       }
-       if ((ret = __db_shalloc(&mgr->reginfo, len, 0, &p)) != 0) {
-+              TXN_SYSTEM_UNLOCK(dbenv);
-               __db_err(dbenv,
-                   "Unable to allocate memory for transaction name");
-@@ -1063,6 +1065,7 @@ __txn_set_name(txn, name)
-               return (ret);
-       }
-+      TXN_SYSTEM_UNLOCK(dbenv);
-       td->name = R_OFFSET(&mgr->reginfo, p);
-       memcpy(p, name, len);
diff --git a/src/patches/diffutils-2.8.1-i18n-1.patch b/src/patches/diffutils-2.8.1-i18n-1.patch
deleted file mode 100644 (file)
index 488885b..0000000
+++ /dev/null
@@ -1,802 +0,0 @@
-Submitted by: Alexander E. Patrakov
-Date: 2005-08-13
-Initial Package Version: 2.8.1
-Upstream Status: Unknown, but required for LSB >= 2.0 certification
-Origin: RedHat
-Description: Fixes treatment of whitespace in multibyte locales.
-
---- diffutils-2.8.4/src/diff.c.i18n    2002-06-17 01:55:42.000000000 -0400
-+++ diffutils-2.8.4/src/diff.c 2002-11-16 18:41:37.000000000 -0500
-@@ -275,6 +275,13 @@
-   re_set_syntax (RE_SYNTAX_GREP | RE_NO_POSIX_BACKTRACKING);
-   excluded = new_exclude ();
-+#ifdef HANDLE_MULTIBYTE
-+  if (MB_CUR_MAX > 1)
-+    lines_differ = lines_differ_multibyte;
-+  else
-+#endif
-+    lines_differ = lines_differ_singlebyte;
-+
-   /* Decode the options.  */
-   while ((c = getopt_long (argc, argv, shortopts, longopts, 0)) != -1)
---- diffutils-2.8.4/src/diff.h.i18n    2002-11-16 18:31:32.000000000 -0500
-+++ diffutils-2.8.4/src/diff.h 2002-11-16 18:48:58.000000000 -0500
-@@ -23,6 +23,19 @@
- #include "system.h"
- #include <stdio.h>
-+/* For platform which support the ISO C amendement 1 functionality we
-+   support user defined character classes.  */
-+#if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H
-+/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.  */
-+# include <wchar.h>
-+# include <wctype.h>
-+# if defined (HAVE_MBRTOWC)
-+#  define HANDLE_MULTIBYTE      1
-+# endif
-+#endif
-+
-+#define TAB_WIDTH 8
-+
- /* What kind of changes a hunk contains.  */
- enum changes
- {
-@@ -350,7 +363,13 @@
- extern char const pr_program[];
- char *concat (char const *, char const *, char const *);
- char *dir_file_pathname (char const *, char const *);
--bool lines_differ (char const *, char const *);
-+
-+bool (*lines_differ) (char const *, char const *);
-+bool lines_differ_singlebyte (char const *, char const *);
-+#ifdef HANDLE_MULTIBYTE
-+bool lines_differ_multibyte (char const *, char const *);
-+#endif
-+
- lin translate_line_number (struct file_data const *, lin);
- struct change *find_change (struct change *);
- struct change *find_reverse_change (struct change *);
---- diffutils-2.8.4/src/io.c.i18n      2002-06-11 02:06:32.000000000 -0400
-+++ diffutils-2.8.4/src/io.c   2002-11-16 18:57:30.000000000 -0500
-@@ -26,6 +26,7 @@
- #include <regex.h>
- #include <setmode.h>
- #include <xalloc.h>
-+#include <assert.h>
- /* Rotate an unsigned value to the left.  */
- #define ROL(v, n) ((v) << (n) | (v) >> (sizeof (v) * CHAR_BIT - (n)))
-@@ -213,6 +214,28 @@
\f
- /* Split the file into lines, simultaneously computing the equivalence
-    class for each line.  */
-+#ifdef HANDLE_MULTIBYTE
-+# define MBC2WC(P, END, MBLENGTH, WC, STATE, CONVFAIL)                        \
-+do                                                                    \
-+{                                                                     \
-+    mbstate_t state_bak = STATE;                                      \
-+                                                                      \
-+    CONVFAIL = 0;                                                     \
-+    MBLENGTH = mbrtowc (&WC, P, END - (char const *)P, &STATE);               \
-+                                                                      \
-+    switch (MBLENGTH)                                                 \
-+      {                                                                       \
-+      case (size_t)-2:                                                        \
-+      case (size_t)-1:                                                        \
-+      STATE = state_bak;                                              \
-+      ++CONVFAIL;                                                     \
-+        /* Fall through. */                                           \
-+      case 0:                                                         \
-+      MBLENGTH = 1;                                                   \
-+      }                                                                       \
-+}                                                                     \
-+while (0)
-+#endif
- static void
- find_and_hash_each_line (struct file_data *current)
-@@ -239,12 +262,280 @@
-   bool same_length_diff_contents_compare_anyway =
-     diff_length_compare_anyway | ignore_case;
-+#ifdef HANDLE_MULTIBYTE
-+  wchar_t   wc;
-+  size_t    mblength;
-+  mbstate_t state;
-+  int       convfail;
-+  
-+  memset (&state, '\0', sizeof (mbstate_t));
-+#endif
-+
-   while ((char const *) p < suffix_begin)
-     {
-       char const *ip = (char const *) p;
-       h = 0;
-+#ifdef HANDLE_MULTIBYTE
-+      if (MB_CUR_MAX > 1)
-+      {
-+        wchar_t   lo_wc;
-+        char      mbc[MB_LEN_MAX];
-+        mbstate_t state_wc;
-+
-+        /* Hash this line until we find a newline.  */
-+        switch (ignore_white_space)
-+          {
-+          case IGNORE_ALL_SPACE:
-+            while (1)
-+              {
-+                if (*p == '\n')
-+                  {
-+                    ++p;
-+                    break;
-+                  }
-+
-+                MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
-+
-+                if (convfail)
-+                  mbc[0] = *p++;
-+                else if (!iswspace (wc))
-+                  {
-+                    bool flag = 0;
-+
-+                    if (ignore_case)
-+                      {
-+                        lo_wc = towlower (wc);
-+                        if (lo_wc != wc)
-+                          {
-+                            flag = 1;
-+
-+                            p += mblength;
-+                            memset (&state_wc, '\0', sizeof(mbstate_t));
-+                            mblength = wcrtomb (mbc, lo_wc, &state_wc);
-+
-+                            assert (mblength != (size_t)-1 &&
-+                                mblength != (size_t)-2);
-+
-+                            mblength = (mblength < 1) ? 1 : mblength;
-+                          }
-+                      }
-+
-+                    if (!flag)
-+                      {
-+                        for (i = 0; i < mblength; i++)
-+                          mbc[i] =  *p++;
-+                      }
-+                  }
-+                else
-+                  {
-+                    p += mblength;
-+                    continue;
-+                  }
-+
-+                for (i = 0; i < mblength; i++)
-+                  h = HASH (h, mbc[i]);
-+              }
-+            break;
-+
-+          case IGNORE_SPACE_CHANGE:
-+            while (1)
-+              {
-+                if (*p == '\n')
-+                  {
-+                    ++p;
-+                    break;
-+                  }
-+                MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
-+
-+                if (!convfail && iswspace (wc))
-+                  {
-+                    while (1)
-+                      {
-+                        if (*p == '\n')
-+                          {
-+                            ++p;
-+                            goto hashing_done;
-+                          }
-+
-+                        p += mblength;
-+                        MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
-+                        if (convfail || (!convfail && !iswspace (wc)))
-+                          break;
-+                      }
-+                    h = HASH (h, ' ');
-+                  }
-+
-+                /* WC is now the first non-space.  */
-+                if (convfail)
-+                  mbc[0] = *p++;
-+                else
-+                  {
-+                    bool flag = 0;
-+
-+                    if (ignore_case)
-+                      {
-+                        lo_wc = towlower (wc);
-+                        if (lo_wc != wc)
-+                          {
-+                            flag = 1;
-+
-+                            p += mblength;
-+                            memset (&state_wc, '\0', sizeof(mbstate_t));
-+                            mblength = wcrtomb (mbc, lo_wc, &state_wc);
-+
-+                            assert (mblength != (size_t)-1 &&
-+                                mblength != (size_t)-2);
-+
-+                            mblength = (mblength < 1) ? 1 : mblength;
-+                          }
-+                      }
-+
-+                    if (!flag)
-+                      {
-+                        for (i = 0; i < mblength; i++)
-+                          mbc[i] = *p++;
-+                      }
-+                  }
-+
-+                for (i = 0; i < mblength; i++)
-+                  h = HASH (h, mbc[i]);
-+              }
-+            break;
-+
-+          case IGNORE_TAB_EXPANSION:
-+              {
-+                size_t column = 0;
-+
-+                while (1)
-+                  {
-+                    if (*p == '\n')
-+                      {
-+                        ++p;
-+                        break;
-+                      }
-+
-+                    MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
-+
-+                    if (convfail)
-+                      {
-+                        h = HASH (h, *p++);
-+                        ++column;
-+                      }
-+                    else
-+                      {
-+                        bool flag;
-+
-+                        switch (wc)
-+                          {
-+                          case L'\b':
-+                            column -= 0 < column;
-+                            h = HASH (h, '\b');
-+                            ++p;
-+                            break;
-+
-+                          case L'\t':
-+                              {
-+                                int repetitions;
-+
-+                                repetitions = TAB_WIDTH - column % TAB_WIDTH;
-+                                column += repetitions;
-+                                do
-+                                  h = HASH (h, ' ');
-+                                while (--repetitions != 0);
-+                                ++p;
-+                              }
-+                            break;
-+
-+                          case L'\r':
-+                            column = 0;
-+                            h = HASH (h, '\r');
-+                            ++p;
-+                            break;
-+
-+                          default:
-+                            flag = 0;
-+                            column += wcwidth (wc);
-+                            if (ignore_case)
-+                              {
-+                                lo_wc = towlower (wc);
-+                                if (lo_wc != wc)
-+                                  {
-+                                    flag = 1;
-+                                    p += mblength;
-+                                    memset (&state_wc, '\0', sizeof(mbstate_t));
-+                                    mblength = wcrtomb (mbc, lo_wc, &state_wc);
-+
-+                                    assert (mblength != (size_t)-1 &&
-+                                        mblength != (size_t)-2);
-+
-+                                    mblength = (mblength < 1) ? 1 : mblength;
-+                                  }
-+                              }
-+
-+                            if (!flag)
-+                              {
-+                                for (i = 0; i < mblength; i++)
-+                                  mbc[i] = *p++;
-+                              }
-+
-+                            for (i = 0; i < mblength; i++)
-+                              h = HASH (h, mbc[i]);
-+                          }
-+                      }
-+                  }
-+              }
-+            break;
-+
-+          default:
-+            while (1)
-+              {
-+                if (*p == '\n')
-+                  {
-+                    ++p;
-+                    break;
-+                  }
-+
-+                MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
-+
-+                if (convfail)
-+                  mbc[0] = *p++;
-+                else
-+                  {
-+                    int flag = 0;
-+
-+                    if (ignore_case)
-+                      {
-+                        lo_wc = towlower (wc);
-+                        if (lo_wc != wc)
-+                          {
-+                            flag = 1;
-+                            p += mblength;
-+                            memset (&state_wc, '\0', sizeof(mbstate_t));
-+                            mblength = wcrtomb (mbc, lo_wc, &state_wc);
-+
-+                            assert (mblength != (size_t)-1 &&
-+                                mblength != (size_t)-2);
-+
-+                            mblength = (mblength < 1) ? 1 : mblength;
-+                          }
-+                      }
-+
-+                    if (!flag)
-+                      {
-+                        for (i = 0; i < mblength; i++)
-+                          mbc[i] = *p++;
-+                      }
-+                  }
-+
-+                for (i = 0; i < mblength; i++)
-+                  h = HASH (h, mbc[i]);
-+              }
-+          }
-+      }
-+      else
-+#endif
-       /* Hash this line until we find a newline.  */
-       if (ignore_case)
-       switch (ignore_white_space)
---- diffutils-2.8.4/src/side.c.i18n    2002-06-11 02:06:32.000000000 -0400
-+++ diffutils-2.8.4/src/side.c 2002-11-16 18:41:37.000000000 -0500
-@@ -73,11 +73,72 @@
-   register size_t out_position = 0;
-   register char const *text_pointer = line[0];
-   register char const *text_limit = line[1];
-+#if defined HAVE_WCHAR_H && defined HAVE_WCTYPE_H
-+  unsigned char mbc[MB_LEN_MAX];
-+  wchar_t wc;
-+  mbstate_t state, state_bak;
-+  size_t mbc_pos, mblength;
-+  int mbc_loading_flag = 0;
-+  int wc_width;
-+
-+  memset (&state, '\0', sizeof (mbstate_t));
-+#endif
-   while (text_pointer < text_limit)
-     {
-       register unsigned char c = *text_pointer++;
-+#if defined HAVE_WCHAR_H && defined HAVE_WCTYPE_H
-+      if (MB_CUR_MAX > 1 && mbc_loading_flag)
-+      {
-+        mbc_loading_flag = 0;
-+        state_bak = state;
-+        mbc[mbc_pos++] = c;
-+
-+process_mbc:
-+        mblength = mbrtowc (&wc, mbc, mbc_pos, &state);
-+
-+        switch (mblength)
-+          {
-+          case (size_t)-2:    /* Incomplete multibyte character. */
-+            mbc_loading_flag = 1;
-+            state = state_bak;
-+            break;
-+
-+          case (size_t)-1:    /* Invalid as a multibyte character. */
-+            if (in_position++ < out_bound)
-+              {
-+                out_position = in_position;
-+                putc (mbc[0], out);
-+              }
-+            memmove (mbc, mbc + 1, --mbc_pos);
-+            if (mbc_pos > 0)
-+              {
-+                mbc[mbc_pos] = '\0';
-+                goto process_mbc;
-+              }
-+            break;
-+
-+          default:
-+            wc_width = wcwidth (wc);
-+            if (wc_width < 1) /* Unprintable multibyte character. */
-+              {
-+                if (in_position <= out_bound)
-+                  fprintf (out, "%lc", (wint_t)wc);
-+              }
-+            else              /* Printable multibyte character. */
-+              {
-+                in_position += wc_width;
-+                if (in_position <= out_bound)
-+                  {
-+                    out_position = in_position;
-+                    fprintf (out, "%lc", (wint_t)wc);
-+                  }
-+              }
-+          }
-+        continue;
-+      }
-+#endif
-       switch (c)
-       {
-       case '\t':
-@@ -135,8 +196,39 @@
-         break;
-       default:
--        if (! ISPRINT (c))
--          goto control_char;
-+#if defined HAVE_WCHAR_H && defined HAVE_WCTYPE_H
-+        if (MB_CUR_MAX > 1)
-+          {
-+            memset (mbc, '\0', MB_LEN_MAX);
-+            mbc_pos = 0;
-+            mbc[mbc_pos++] = c;
-+            state_bak = state;
-+
-+            mblength = mbrtowc (&wc, mbc, mbc_pos, &state);
-+
-+            /* The value of mblength is always less than 2 here. */
-+            switch (mblength)
-+              {
-+              case (size_t)-2:        /* Incomplete multibyte character. */
-+                state = state_bak;
-+                mbc_loading_flag = 1;
-+                continue;
-+
-+              case (size_t)-1:        /* Invalid as a multibyte character. */
-+                state = state_bak;
-+                break;
-+
-+              default:
-+                if (! iswprint (wc))
-+                  goto control_char;
-+              }
-+          }
-+        else
-+#endif
-+          {
-+            if (! ISPRINT (c))
-+              goto control_char;
-+          }
-         /* falls through */
-       case ' ':
-         if (in_position++ < out_bound)
---- diffutils-2.8.4/src/util.c.i18n    2002-06-11 02:06:32.000000000 -0400
-+++ diffutils-2.8.4/src/util.c 2002-11-16 18:41:37.000000000 -0500
-@@ -321,7 +321,7 @@
-    Return nonzero if the lines differ.  */
- bool
--lines_differ (char const *s1, char const *s2)
-+lines_differ_singlebyte (char const *s1, char const *s2)
- {
-   register unsigned char const *t1 = (unsigned char const *) s1;
-   register unsigned char const *t2 = (unsigned char const *) s2;
-@@ -450,6 +450,293 @@
-   return 1;
- }
-+
-+#ifdef HANDLE_MULTIBYTE
-+# define MBC2WC(T, END, MBLENGTH, WC, STATE, CONVFAIL)                        \
-+do                                                                    \
-+{                                                                     \
-+    mbstate_t bak = STATE;                                            \
-+                                                                      \
-+    CONVFAIL = 0;                                                     \
-+    MBLENGTH = mbrtowc (&WC, T, END - T, &STATE);                     \
-+                                                                      \
-+    switch (MBLENGTH)                                                 \
-+      {                                                                       \
-+      case (size_t)-2:                                                        \
-+      case (size_t)-1:                                                        \
-+      STATE = bak;                                                    \
-+      ++CONVFAIL;                                                     \
-+        /* Fall through. */                                           \
-+      case 0:                                                         \
-+      MBLENGTH = 1;                                                   \
-+      }                                                                       \
-+}                                                                     \
-+while (0)
-+
-+bool
-+lines_differ_multibyte (char const *s1, char const *s2)
-+{
-+  unsigned char const *end1, *end2;
-+  unsigned char c1, c2;
-+  wchar_t wc1, wc2, wc1_bak, wc2_bak;
-+  size_t mblen1, mblen2;
-+  mbstate_t state1, state2, state1_bak, state2_bak;
-+  int convfail1, convfail2, convfail1_bak, convfail2_bak;
-+  
-+  unsigned char const *t1 = (unsigned char const *) s1;
-+  unsigned char const *t2 = (unsigned char const *) s2;
-+  unsigned char const *t1_bak, *t2_bak;
-+  size_t column = 0;
-+
-+  if (ignore_white_space == IGNORE_NO_WHITE_SPACE  && !ignore_case)
-+    {
-+      while (*t1 != '\n')
-+      if (*t1++ != * t2++)
-+        return 1;
-+      return 0;
-+    }
-+
-+  memset (&state1, '\0', sizeof (mbstate_t));
-+  memset (&state2, '\0', sizeof (mbstate_t));
-+
-+  end1 = s1 + strlen (s1);
-+  end2 = s2 + strlen (s2);
-+
-+  while (1)
-+    {
-+      c1 = *t1;
-+      c2 = *t2;
-+      MBC2WC (t1, end1, mblen1, wc1, state1, convfail1);
-+      MBC2WC (t2, end2, mblen2, wc2, state2, convfail2);
-+
-+      /* Test for exact char equality first, since it's a common case.  */
-+      if (convfail1 ^ convfail2)
-+      break;
-+      else if (convfail1 && convfail2 && c1 != c2)
-+      break;
-+      else if (!convfail1 && !convfail2 && wc1 != wc2)
-+      {
-+        switch (ignore_white_space)
-+          {
-+          case IGNORE_ALL_SPACE:
-+            /* For -w, just skip past any white space.  */
-+            while (1)
-+              {
-+                if (convfail1)
-+                  break;
-+                else if (wc1 == L'\n' || !iswspace (wc1))
-+                  break;
-+
-+                t1 += mblen1;
-+                c1 = *t1;
-+                MBC2WC (t1, end1, mblen1, wc1, state1, convfail1);
-+              }
-+
-+            while (1)
-+              {
-+                if (convfail2)
-+                  break;
-+                else if (wc2 == L'\n' || !iswspace (wc2))
-+                  break;
-+
-+                t2 += mblen2;
-+                c2 = *t2;
-+                MBC2WC (t2, end2, mblen2, wc2, state2, convfail2);
-+              }
-+            t1 += mblen1;
-+            t2 += mblen2;
-+            break;
-+
-+          case IGNORE_SPACE_CHANGE:
-+            /* For -b, advance past any sequence of white space in
-+               line 1 and consider it just one space, or nothing at
-+               all if it is at the end of the line.  */
-+            if (wc1 != L'\n' && iswspace (wc1))
-+              {
-+                size_t mblen_bak;
-+                mbstate_t state_bak;
-+
-+                do
-+                  {
-+                    t1 += mblen1;
-+                    mblen_bak = mblen1;
-+                    state_bak = state1;
-+                    MBC2WC (t1, end1, mblen1, wc1, state1, convfail1);
-+                  }
-+                while (!convfail1 && (wc1 != L'\n' && iswspace (wc1)));
-+
-+                state1 = state_bak;
-+                mblen1 = mblen_bak;
-+                t1 -= mblen1;
-+                convfail1 = 0;
-+                wc1 = L' ';
-+              }
-+
-+            /* Likewise for line 2.  */
-+            if (wc2 != L'\n' && iswspace (wc2))
-+              {
-+                size_t mblen_bak;
-+                mbstate_t state_bak;
-+
-+                do
-+                  {
-+                    t2 += mblen2;
-+                    mblen_bak = mblen2;
-+                    state_bak = state2;
-+                    MBC2WC (t2, end2, mblen2, wc2, state2, convfail2);
-+                  }
-+                while (!convfail2 && (wc2 != L'\n' && iswspace (wc2)));
-+
-+                state2 = state_bak;
-+                mblen2 = mblen_bak;
-+                t2 -= mblen2;
-+                convfail2 = 0;
-+                wc2 = L' ';
-+              }
-+
-+            if (wc1 != wc2)
-+              {
-+                if (wc2 == L' ' && wc1 != L'\n' &&
-+                    t1 > (unsigned char const *)s1 &&
-+                    !convfail1_bak && iswspace (wc1_bak))
-+                  {
-+                    t1 = t1_bak;
-+                    wc1 = wc1_bak;
-+                    state1 = state1_bak;
-+                    convfail1 = convfail1_bak;
-+                    continue;
-+                  }
-+                if (wc1 == L' ' && wc2 != L'\n'
-+                    && t2 > (unsigned char const *)s2
-+                    && !convfail2_bak && iswspace (wc2_bak))
-+                  {
-+                    t2 = t2_bak;
-+                    wc2 = wc2_bak;
-+                    state2 = state2_bak;
-+                    convfail2 = convfail2_bak;
-+                    continue;
-+                  }
-+              }
-+
-+            t1_bak = t1;                t2_bak = t2;
-+            wc1_bak = wc1;              wc2_bak = wc2;
-+            state1_bak = state1;        state2_bak = state2;
-+            convfail1_bak = convfail1;  convfail2_bak = convfail2;
-+
-+            if (wc1 == L'\n')
-+              wc1 = L' ';
-+            else
-+              t1 += mblen1;
-+
-+            if (wc2 == L'\n')
-+              wc2 = L' ';
-+            else
-+              t2 += mblen2;
-+
-+            break;
-+
-+          case IGNORE_TAB_EXPANSION:
-+            if ((wc1 == L' ' && wc2 == L'\t')
-+                || (wc1 == L'\t' && wc2 == L' '))
-+              {
-+                size_t column2 = column;
-+
-+                while (1)
-+                  {
-+                    if (convfail1)
-+                      {
-+                        ++t1;
-+                        break;
-+                      }
-+                    else if (wc1 == L' ')
-+                      column++;
-+                    else if (wc1 == L'\t')
-+                      column += TAB_WIDTH - column % TAB_WIDTH;
-+                    else
-+                      {
-+                        t1 += mblen1;
-+                        break;
-+                      }
-+
-+                    t1 += mblen1;
-+                    c1 = *t1;
-+                    MBC2WC (t1, end1, mblen1, wc1, state1, convfail1);
-+                  }
-+
-+                while (1)
-+                  {
-+                    if (convfail2)
-+                      {
-+                        ++t2;
-+                        break;
-+                      }
-+                    else if (wc2 == L' ')
-+                      column2++;
-+                    else if (wc2 == L'\t')
-+                      column2 += TAB_WIDTH - column2 % TAB_WIDTH;
-+                    else
-+                      {
-+                        t2 += mblen2;
-+                        break;
-+                      }
-+
-+                    t2 += mblen2;
-+                    c2 = *t2;
-+                    MBC2WC (t2, end2, mblen2, wc2, state2, convfail2);
-+                  }
-+
-+                if (column != column2)
-+                  return 1;
-+              }
-+            else
-+              {
-+                t1 += mblen1;
-+                t2 += mblen2;
-+              }
-+            break;
-+
-+          case IGNORE_NO_WHITE_SPACE:
-+            t1 += mblen1;
-+            t2 += mblen2;
-+            break;
-+          }
-+
-+        /* Lowercase all letters if -i is specified.  */
-+        if (ignore_case)
-+          {
-+            if (!convfail1)
-+              wc1 = towlower (wc1);
-+            if (!convfail2)
-+              wc2 = towlower (wc2);
-+          }
-+
-+        if (convfail1 ^ convfail2)
-+          break;
-+        else if (convfail1 && convfail2 && c1 != c2)
-+          break;
-+        else if (!convfail1 && !convfail2 && wc1 != wc2)
-+          break;
-+      }
-+      else
-+      {
-+        t1_bak = t1;                  t2_bak = t2;
-+        wc1_bak = wc1;                wc2_bak = wc2;
-+        state1_bak = state1;          state2_bak = state2;
-+        convfail1_bak = convfail1;    convfail2_bak = convfail2;
-+
-+        t1 += mblen1;                 t2 += mblen2;
-+      }
-+      
-+      if (!convfail1 && wc1 == L'\n')
-+      return 0;
-+
-+      column += convfail1 ? 1 :
-+      (wc1 == L'\t') ? TAB_WIDTH - column % TAB_WIDTH : wcwidth (wc1);
-+    }
-+
-+  return 1;
-+}
-+#endif
\f
- /* Find the consecutive changes at the start of the script START.
-    Return the last link before the first gap.  */
diff --git a/src/patches/igb-5.3.4.4_fix_hung_at_dev_get_stats.patch b/src/patches/igb-5.3.4.4_fix_hung_at_dev_get_stats.patch
deleted file mode 100644 (file)
index a92c441..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-Don't read phy_idle_errors at dev_get_stats() because this can
-hung the userspace.
-
-https://sourceforge.net/p/e1000/bugs/500/
-Why this is set to wont-fix?
-
-I think it is better when phy errors are not reportet in the stats
-than a random hanging of the whole sytem.
-
-diff -Naur igb-5.3.4.4.org/src/igb_main.c igb-5.3.4.4/src/igb_main.c
---- igb-5.3.4.4.org/src/igb_main.c     2016-02-26 01:48:39.000000000 +0100
-+++ igb-5.3.4.4/src/igb_main.c 2016-03-31 09:22:10.671794282 +0200
-@@ -6032,14 +6032,14 @@
-       /* Tx Dropped needs to be maintained elsewhere */
--      /* Phy Stats */
--      if (hw->phy.media_type == e1000_media_type_copper) {
--              if ((adapter->link_speed == SPEED_1000) &&
--                 (!e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) {
--                      phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
--                      adapter->phy_stats.idle_errors += phy_tmp;
--              }
--      }
-+//    /* Phy Stats */
-+//    if (hw->phy.media_type == e1000_media_type_copper) {
-+//            if ((adapter->link_speed == SPEED_1000) &&
-+//               (!e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) {
-+//                    phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
-+//                    adapter->phy_stats.idle_errors += phy_tmp;
-+//            }
-+//    }
-       /* Management Stats */
-       adapter->stats.mgptc += E1000_READ_REG(hw, E1000_MGTPTC);
diff --git a/src/patches/iptables-1.4.14-ipp2p-0.8.2-ipfire.patch b/src/patches/iptables-1.4.14-ipp2p-0.8.2-ipfire.patch
deleted file mode 100644 (file)
index 9a11eb5..0000000
+++ /dev/null
@@ -1,481 +0,0 @@
-diff -Naur iptables-1.4.6.org/extensions/.ipp2p-test iptables-1.4.6/extensions/.ipp2p-test
---- iptables-1.4.6.org/extensions/.ipp2p-test  1970-01-01 01:00:00.000000000 +0100
-+++ iptables-1.4.6/extensions/.ipp2p-test      2010-02-13 20:02:52.000000000 +0100
-@@ -0,0 +1,2 @@
-+#! /bin/sh
-+[ -f $KERNEL_DIR/include/linux/netfilter_ipv4/ipt_ipp2p.h ] && echo ipp2p
-diff -Naur iptables-1.4.6.org/extensions/libipt_ipp2p.c iptables-1.4.6/extensions/libipt_ipp2p.c
---- iptables-1.4.6.org/extensions/libipt_ipp2p.c       1970-01-01 01:00:00.000000000 +0100
-+++ iptables-1.4.6/extensions/libipt_ipp2p.c   2010-02-13 20:02:52.000000000 +0100
-@@ -0,0 +1,424 @@
-+#include <stdio.h>
-+#include <netdb.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <getopt.h>
-+#include <ctype.h>
-+
-+#include <iptables.h>
-+
-+#include <linux/netfilter_ipv4/ipt_ipp2p.h>
-+
-+#ifndef XTABLES_VERSION
-+#define XTABLES_VERSION IPTABLES_VERSION
-+#endif
-+
-+#ifdef IPT_LIB_DIR
-+#define xtables_target iptables_target
-+#define xtables_register_target register_target
-+#endif
-+
-+static void
-+help(void)
-+{
-+    printf(
-+    "IPP2P v%s options:\n"
-+    " --ipp2p Grab all known p2p packets\n"
-+    " --edk           [TCP&UDP]       All known eDonkey/eMule/Overnet packets\n"
-+    " --dc            [TCP]           All known Direct Connect packets\n"
-+    " --kazaa [TCP&UDP]       All known KaZaA packets\n"
-+    " --gnu           [TCP&UDP]       All known Gnutella packets\n"
-+    " --bit           [TCP&UDP]       All known BitTorrent packets\n"
-+    " --apple [TCP]           All known AppleJuice packets\n"
-+    " --winmx [TCP]           All known WinMX\n"
-+    " --soul          [TCP]           All known SoulSeek\n"
-+    " --ares          [TCP]           All known Ares\n\n"
-+    " EXPERIMENTAL protocols (please send feedback to: ipp2p@ipp2p.org) :\n"
-+    " --mute          [TCP]           All known Mute packets\n"
-+    " --waste [TCP]           All known Waste packets\n"
-+    " --xdcc          [TCP]           All known XDCC packets (only xdcc login)\n\n"
-+    " DEBUG SUPPPORT, use only if you know why\n"
-+    " --debug         Generate kernel debug output, THIS WILL SLOW DOWN THE FILTER\n"
-+    "\nNote that the follwing options will have the same meaning:\n"
-+    " '--ipp2p' is equal to '--edk --dc --kazaa --gnu --bit --apple --winmx --soul --ares'\n"
-+    "\nIPP2P was intended for TCP only. Due to increasing usage of UDP we needed to change this.\n"
-+    "You can now use -p udp to search UDP packets only or without -p switch to search UDP and TCP packets.\n"
-+    "\nSee README included with this package for more details or visit http://www.ipp2p.org\n"
-+    "\nExamples:\n"
-+    " iptables -A FORWARD -m ipp2p --ipp2p -j MARK --set-mark 0x01\n"
-+    " iptables -A FORWARD -p udp -m ipp2p --kazaa --bit -j DROP\n"
-+    " iptables -A FORWARD -p tcp -m ipp2p --edk --soul -j DROP\n\n"
-+    , IPP2P_VERSION);
-+}
-+
-+static struct option opts[] = {
-+        { "ipp2p", 0, 0, '1' },
-+        { "edk", 0, 0, '2' }, 
-+      { "dc", 0, 0, '7' },
-+      { "gnu", 0, 0, '9' },
-+      { "kazaa", 0, 0, 'a' },
-+      { "bit", 0, 0, 'b' },
-+      { "apple", 0, 0, 'c' }, 
-+      { "soul", 0, 0, 'd' },  
-+      { "winmx", 0, 0, 'e' }, 
-+      { "ares", 0, 0, 'f' },
-+      { "mute", 0, 0, 'g' },
-+      { "waste", 0, 0, 'h' },
-+      { "xdcc", 0, 0, 'i' },
-+      { "debug", 0, 0, 'j' },
-+        {0}
-+};
-+
-+
-+static void
-+#ifdef _XTABLES_H
-+init(struct xt_entry_match *m)
-+#else
-+init(struct ipt_entry_match *t, unsigned int *nfcache)
-+#endif
-+{
-+    struct ipt_p2p_info *info = (struct ipt_p2p_info *)m->data;
-+
-+#ifndef _XTABLES_H
-+    *nfcache |= NFC_UNKNOWN;
-+#endif
-+
-+    /*init the module with default values*/
-+    info->cmd = 0;
-+    info->debug = 0;
-+
-+}
-+
-+
-+static int
-+parse(int c, char **argv, int invert, unsigned int *flags,
-+#ifdef _XTABLES_H
-+      const void *entry, struct xt_entry_match **match)
-+#else
-+      const struct ipt_entry *entry, unsigned int *nfcache, struct ipt_entry_match **match)
-+#endif
-+{
-+    struct ipt_p2p_info *info = (struct ipt_p2p_info *)(*match)->data;
-+    
-+    switch (c) {
-+      case '1':               /*cmd: ipp2p*/
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified once!");
-+
-+/*        if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p-data' may only be "
-+                              "specified alone!");
-+*/
-+
-+          if ((*flags) != 0)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+          *flags += SHORT_HAND_IPP2P;
-+          info->cmd = *flags;
-+          break;
-+          
-+      case '2':               /*cmd: edk*/
-+          if ((*flags & IPP2P_EDK) == IPP2P_EDK)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--edk' may only be "
-+                              "specified once");
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+/*        if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p-data' may only be "
-+                              "specified alone!");*/
-+            if ((*flags & IPP2P_DATA_EDK) == IPP2P_DATA_EDK)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: use `--edk' OR `--edk-data' but not both of them!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+          *flags += IPP2P_EDK;
-+          info->cmd = *flags;     
-+          break;
-+
-+
-+      case '7':               /*cmd: dc*/
-+            if ((*flags & IPP2P_DC) == IPP2P_DC)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--dc' may only be "
-+                                "specified once!");
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+/*        if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p-data' may only be "
-+                              "specified alone!");*/
-+            if ((*flags & IPP2P_DATA_DC) == IPP2P_DATA_DC)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: use `--dc' OR `--dc-data' but not both of them!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_DC;
-+          info->cmd = *flags;
-+          break;
-+
-+
-+      case '9':               /*cmd: gnu*/
-+            if ((*flags & IPP2P_GNU) == IPP2P_GNU)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--gnu' may only be "
-+                                "specified once!");
-+/*        if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p-data' may only be "
-+                              "specified alone!");*/
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+            if ((*flags & IPP2P_DATA_GNU) == IPP2P_DATA_GNU)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: use `--gnu' OR `--gnu-data' but not both of them!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_GNU;
-+          info->cmd = *flags;
-+          break;
-+
-+      case 'a':               /*cmd: kazaa*/
-+            if ((*flags & IPP2P_KAZAA) == IPP2P_KAZAA)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--kazaa' may only be "
-+                                "specified once!");
-+/*        if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p-data' may only be "
-+                              "specified alone!");*/
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+            if ((*flags & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: use `--kazaa' OR `--kazaa-data' but not both of them!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_KAZAA;
-+          info->cmd = *flags;
-+          break;                                                                                                                                                                                                                      
-+
-+      case 'b':               /*cmd: bit*/
-+            if ((*flags & IPP2P_BIT) == IPP2P_BIT)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--bit' may only be "
-+                                "specified once!");
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_BIT;
-+          info->cmd = *flags;
-+          break;                                                                                                                                                                                                                      
-+
-+      case 'c':               /*cmd: apple*/
-+            if ((*flags & IPP2P_APPLE) == IPP2P_APPLE)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--apple' may only be "
-+                                "specified once!");
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_APPLE;
-+          info->cmd = *flags;
-+          break;                                                                                                                                                                                                                      
-+
-+
-+      case 'd':               /*cmd: soul*/
-+            if ((*flags & IPP2P_SOUL) == IPP2P_SOUL)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--soul' may only be "
-+                                "specified once!");
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_SOUL;
-+          info->cmd = *flags;
-+          break;                                                                                                                                                                                                                      
-+
-+
-+      case 'e':               /*cmd: winmx*/
-+            if ((*flags & IPP2P_WINMX) == IPP2P_WINMX)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--winmx' may only be "
-+                                "specified once!");
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_WINMX;
-+          info->cmd = *flags;
-+          break;                                                                                                                                                                                                                      
-+
-+      case 'f':               /*cmd: ares*/
-+            if ((*flags & IPP2P_ARES) == IPP2P_ARES)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--ares' may only be "
-+                                "specified once!");
-+          if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+                  xtables_error(PARAMETER_PROBLEM,
-+                              "ipp2p: `--ipp2p' may only be "
-+                              "specified alone!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_ARES;
-+          info->cmd = *flags;
-+          break;                                                                                                                                                                                                                      
-+      
-+      case 'g':               /*cmd: mute*/
-+            if ((*flags & IPP2P_MUTE) == IPP2P_MUTE)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--mute' may only be "
-+                                "specified once!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_MUTE;
-+          info->cmd = *flags;
-+          break;                                                                                                                                                                                                                      
-+      case 'h':               /*cmd: waste*/
-+            if ((*flags & IPP2P_WASTE) == IPP2P_WASTE)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--waste' may only be "
-+                                "specified once!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_WASTE;
-+          info->cmd = *flags;
-+          break;                                                                                                                                                                                                                      
-+      case 'i':               /*cmd: xdcc*/
-+            if ((*flags & IPP2P_XDCC) == IPP2P_XDCC)
-+            xtables_error(PARAMETER_PROBLEM,
-+                                "ipp2p: `--ares' may only be "
-+                                "specified once!");
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+            *flags += IPP2P_XDCC;
-+          info->cmd = *flags;
-+          break;                                                                                                                                                                                                                      
-+
-+      case 'j':               /*cmd: debug*/
-+          if (invert) xtables_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+          info->debug = 1;
-+          break;                                                                                                                                                                                                                      
-+
-+      default:
-+//            xtables_error(PARAMETER_PROBLEM,
-+//        "\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n");
-+          return 0;
-+    }
-+    return 1;
-+}
-+
-+
-+static void
-+final_check(unsigned int flags)
-+{
-+    if (!flags)
-+            xtables_error(PARAMETER_PROBLEM,
-+          "\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n");
-+}
-+
-+static void
-+#ifdef _XTABLES_H
-+print(const void *ip,
-+      const struct xt_entry_match *match,
-+#else
-+print(const struct ipt_ip *ip,
-+      const struct ipt_entry_match *match,
-+#endif
-+      int numeric)
-+{
-+    struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
-+    
-+    printf("ipp2p v%s", IPP2P_VERSION);
-+    if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf(" --ipp2p");
-+//    if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf(" --ipp2p-data");
-+    if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf(" --kazaa");
-+//    if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf(" --kazaa-data");
-+//    if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf(" --gnu-data");
-+    if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf(" --gnu");
-+    if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf(" --edk");
-+//    if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf(" --edk-data");
-+//    if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf(" --dc-data");
-+    if ((info->cmd & IPP2P_DC) == IPP2P_DC) printf(" --dc");
-+    if ((info->cmd & IPP2P_BIT) == IPP2P_BIT) printf(" --bit");
-+    if ((info->cmd & IPP2P_APPLE) == IPP2P_APPLE) printf(" --apple");
-+    if ((info->cmd & IPP2P_SOUL) == IPP2P_SOUL) printf(" --soul");
-+    if ((info->cmd & IPP2P_WINMX) == IPP2P_WINMX) printf(" --winmx");
-+    if ((info->cmd & IPP2P_ARES) == IPP2P_ARES) printf(" --ares");
-+    if ((info->cmd & IPP2P_MUTE) == IPP2P_MUTE) printf(" --mute");
-+    if ((info->cmd & IPP2P_WASTE) == IPP2P_WASTE) printf(" --waste");
-+    if ((info->cmd & IPP2P_XDCC) == IPP2P_XDCC) printf(" --xdcc");
-+    if (info->debug != 0) printf(" --debug");
-+    printf(" ");
-+}
-+
-+static void
-+#ifdef _XTABLES_H
-+save(const void *ip,
-+     const struct xt_entry_match *match)
-+#else
-+save(const struct ipt_ip *ip,
-+     const struct ipt_entry_match *match)
-+#endif
-+{
-+    struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
-+    
-+    if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf("--ipp2p ");
-+//    if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf("--ipp2p-data ");
-+    if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf("--kazaa ");
-+//    if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf("--kazaa-data ");
-+//    if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf("--gnu-data ");
-+    if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf("--gnu ");
-+    if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf("--edk ");
-+//    if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf("--edk-data ");
-+//    if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf("--dc-data ");
-+    if ((info->cmd & IPP2P_DC) == IPP2P_DC) printf("--dc ");
-+    if ((info->cmd & IPP2P_BIT) == IPP2P_BIT) printf("--bit ");
-+    if ((info->cmd & IPP2P_APPLE) == IPP2P_APPLE) printf("--apple ");
-+    if ((info->cmd & IPP2P_SOUL) == IPP2P_SOUL) printf("--soul ");
-+    if ((info->cmd & IPP2P_WINMX) == IPP2P_WINMX) printf("--winmx ");
-+    if ((info->cmd & IPP2P_ARES) == IPP2P_ARES) printf("--ares ");
-+    if ((info->cmd & IPP2P_MUTE) == IPP2P_MUTE) printf(" --mute");
-+    if ((info->cmd & IPP2P_WASTE) == IPP2P_WASTE) printf(" --waste");
-+    if ((info->cmd & IPP2P_XDCC) == IPP2P_XDCC) printf(" --xdcc");
-+    if (info->debug != 0) printf("--debug ");
-+}
-+
-+              
-+static 
-+struct xtables_match ipp2p= 
-+{ 
-+    .next           = NULL,
-+    .name           = "ipp2p",
-+    .version        = XTABLES_VERSION,
-+    .size           = XT_ALIGN(sizeof(struct ipt_p2p_info)),
-+    .userspacesize  = XT_ALIGN(sizeof(struct ipt_p2p_info)),
-+    .help           = &help,
-+    .init           = &init,
-+    .parse          = &parse,
-+    .final_check    = &final_check,
-+    .print          = &print,
-+    .save           = &save,
-+    .extra_opts     = opts
-+};
-+                                          
-+
-+
-+void _init(void)
-+{
-+    xtables_register_match(&ipp2p);
-+}
-+
-diff -Naur iptables-1.4.6.org/extensions/libipt_ipp2p.man iptables-1.4.6/extensions/libipt_ipp2p.man
---- iptables-1.4.6.org/extensions/libipt_ipp2p.man     1970-01-01 01:00:00.000000000 +0100
-+++ iptables-1.4.6/extensions/libipt_ipp2p.man 2010-02-13 20:02:52.000000000 +0100
-@@ -0,0 +1,43 @@
-+This module matches certain packets in P2P flows. It is not
-+designed to match all packets belonging to a P2P connection - 
-+use IPP2P together with CONNMARK for this purpose. Also visit
-+http://www.ipp2p.org for detailed information.
-+
-+Use it together with -p tcp or -p udp to search these protocols
-+only or without -p switch to search packets of both protocols.
-+
-+IPP2P provides the following options:
-+.TP
-+.B "--edk "
-+Matches as many eDonkey/eMule packets as possible.
-+.TP
-+.B "--kazaa "
-+Matches as many KaZaA packets as possible.
-+.TP
-+.B "--gnu "
-+Matches as many Gnutella packets as possible.
-+.TP
-+.B "--dc "
-+Matches as many Direct Connect packets as possible.
-+.TP
-+.B "--bit "
-+Matches BitTorrent packets.
-+.TP
-+.B "--apple "
-+Matches AppleJuice packets.
-+.TP
-+.B "--soul "
-+Matches some SoulSeek packets. Considered as beta, use careful!
-+.TP
-+.B "--winmx "
-+Matches some WinMX packets. Considered as beta, use careful!
-+.TP
-+.B "--ares "
-+Matches Ares and AresLite packets. Use together with -j DROP only.
-+.TP
-+.B "--ipp2p "
-+Short hand for: --edk --kazaa --gnu --dc
-+.TP
-+.B "--debug "
-+Prints some information about each hit into kernel logfile. May 
-+produce huge logfiles so beware!
diff --git a/src/patches/iputils-20020927-headers.patch b/src/patches/iputils-20020927-headers.patch
deleted file mode 100644 (file)
index 3f8be16..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-diff -urN iputils/clockdiff.c iputils.new/clockdiff.c
---- iputils/clockdiff.c        2002-02-22 19:10:59.000000000 -0500
-+++ iputils.new/clockdiff.c    2003-09-10 09:20:28.000000000 -0400
-@@ -2,6 +2,7 @@
- #include <sys/types.h>
- #include <sys/param.h>
- #include <stdio.h>
-+#include <linux/types.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <math.h>
-diff -urN iputils/ping6.c iputils.new/ping6.c
---- iputils/ping6.c    2003-09-10 17:27:48.000000000 -0400
-+++ iputils.new/ping6.c        2003-09-10 17:22:43.000000000 -0400
-@@ -68,8 +68,44 @@
-  */
- #include "ping_common.h"
--#include <linux/in6.h>
--#include <linux/ipv6.h>
-+struct ipv6_rt_hdr {
-+        __u8            nexthdr;
-+        __u8            hdrlen;
-+        __u8            type;
-+        __u8            segments_left;
-+
-+        /*
-+         *      type specific data
-+         *      variable length field
-+         */
-+};
-+
-+struct rt0_hdr {
-+        struct ipv6_rt_hdr      rt_hdr;
-+        __u32                   bitmap;         /* strict/loose bit map */
-+        struct in6_addr         addr[0];
-+
-+#define rt0_type                rt_hdr.type;
-+};
-+#define IPV6_SRCRT_TYPE_0     0       /* IPv6 type 0 Routing Header   */
-+struct ipv6hdr {
-+#if defined(__LITTLE_ENDIAN)
-+        __u8                    priority:4,
-+                                version:4;
-+#elif defined(__BIG_ENDIAN)
-+        __u8                    version:4,
-+                                priority:4;
-+#endif
-+        __u8                    flow_lbl[3];
-+
-+        __u16                   payload_len;
-+        __u8                    nexthdr;
-+        __u8                    hop_limit;
-+
-+        struct  in6_addr        saddr;
-+        struct  in6_addr        daddr;
-+};
-+
- #include <linux/icmpv6.h>
- #define BIT_CLEAR(nr, addr) do { ((__u32 *)(addr))[(nr) >> 5] &= ~(1U << ((nr) & 31)); } while(0)
-diff -urN iputils/ping.c iputils.new/ping.c
---- iputils/ping.c     2003-09-10 17:27:48.000000000 -0400
-+++ iputils.new/ping.c 2003-09-10 17:18:16.000000000 -0400
-@@ -60,8 +60,8 @@
- #include "ping_common.h"
-+#include <linux/icmp.h>
- #include <netinet/ip.h>
--#include <netinet/ip_icmp.h>
- #define       MAXIPLEN        60
-diff -urN iputils/ping_common.h iputils.new/ping_common.h
---- iputils/ping_common.h      2002-09-20 11:08:11.000000000 -0400
-+++ iputils.new/ping_common.h  2003-09-10 17:16:16.000000000 -0400
-@@ -19,6 +19,7 @@
- #include <netinet/in.h>
- #include <arpa/inet.h>
-+#include <linux/types.h>
- #include <linux/errqueue.h>
- #include "SNAPSHOT.h"
-diff -urN iputils/tftpd.c iputils.new/tftpd.c
---- iputils/tftpd.c    2002-01-23 19:31:41.000000000 -0500
-+++ iputils.new/tftpd.c        2003-09-10 09:39:45.000000000 -0400
-@@ -57,7 +57,6 @@
- #include <sys/socket.h>
- #include <netinet/in.h>
--#include <linux/in6.h>
- #include <netdb.h>
- #include <setjmp.h>
-diff -urN iputils/tracepath6.c iputils.new/tracepath6.c
---- iputils/tracepath6.c       2001-09-01 22:03:46.000000000 -0400
-+++ iputils.new/tracepath6.c   2003-09-10 09:40:18.000000000 -0400
-@@ -14,8 +14,7 @@
- #include <unistd.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
--
--#include <linux/in6.h>
-+#include <linux/types.h>
- #include <linux/errqueue.h>
- #include <errno.h>
- #include <string.h>
-diff -urN iputils/tracepath.c iputils.new/tracepath.c
---- iputils/tracepath.c        2002-02-22 19:10:59.000000000 -0500
-+++ iputils.new/tracepath.c    2003-09-10 06:14:35.000000000 -0400
-@@ -13,6 +13,7 @@
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/socket.h>
-+#include <linux/types.h>
- #include <linux/errqueue.h>
- #include <errno.h>
- #include <string.h>
-diff -urN iputils/traceroute6.c iputils.new/traceroute6.c
---- iputils/traceroute6.c      2002-09-20 11:44:22.000000000 -0400
-+++ iputils.new/traceroute6.c  2003-09-10 10:12:47.000000000 -0400
-@@ -246,9 +246,24 @@
- #include <netinet/ip_icmp.h>
- #include <netinet/udp.h>
--#include <linux/ipv6.h>
--#include <linux/in6.h>
-+#include <linux/types.h>
-+struct ipv6hdr {
-+#if defined(__LITTLE_ENDIAN)
-+        __u8                    priority:4,
-+                                version:4;
-+#elif defined(__BIG_ENDIAN)
-+        __u8                    version:4,
-+                                priority:4;
-+#endif
-+        __u8                    flow_lbl[3];
-+
-+        __u16                   payload_len;
-+        __u8                    nexthdr;
-+        __u8                    hop_limit;
-+        struct  in6_addr        saddr;
-+        struct  in6_addr        daddr;
-+};
- #include <linux/icmpv6.h>
- #include <arpa/inet.h>
diff --git a/src/patches/iputils-20020927-rh.patch b/src/patches/iputils-20020927-rh.patch
deleted file mode 100644 (file)
index 23d6fd8..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
---- iputils/doc/Makefile.rh7   2002-02-23 01:17:57.000000000 +0100
-+++ iputils/doc/Makefile       2004-05-12 14:55:16.724448173 +0200
-@@ -2,7 +2,7 @@
- HTMLFILES=$(subst .sgml,.html,$(SGMLFILES)) index.html
- MANFILES=$(subst .sgml,.8,$(SGMLFILES))
--all: html
-+all:
- html: $(HTMLFILES) iputils.html
---- iputils/Makefile.rh7       2002-09-20 20:23:55.000000000 +0200
-+++ iputils/Makefile   2004-05-12 15:08:25.638310270 +0200
-@@ -24,14 +24,14 @@
- CC=gcc
- # What a pity, all new gccs are buggy and -Werror does not work. Sigh.
- #CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g -Werror
--CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g
--CFLAGS=$(CCOPT) $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(DEFINES) 
-+#CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g
-+#CFLAGS=$(CCOPT) $(DEFINES) 
- IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd
- IPV6_TARGETS=tracepath6 traceroute6 ping6
- TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS)
--all: check-kernel $(TARGETS)
-+all: $(TARGETS)
- tftpd: tftpd.o tftpsubs.o
diff --git a/src/patches/iputils-glibckernheaders.patch b/src/patches/iputils-glibckernheaders.patch
deleted file mode 100644 (file)
index 88a54b1..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-diff -ru iputils/include-glibc/netinet/in.h iputils-clean/include-glibc/netinet/in.h
---- iputils/include-glibc/netinet/in.h 2000-06-18 14:57:25.000000000 -0400
-+++ iputils-clean/include-glibc/netinet/in.h   2003-09-03 11:21:55.000000000 -0400
-@@ -8,4 +8,45 @@
- #define SOL_IP        0
--#endif        /* netinet/in.h */
-+/* Functions to convert between host and network byte order.
-+
-+   Please note that these functions normally take `unsigned long int' or
-+   `unsigned short int' values as arguments and also return them.  But
-+   this was a short-sighted decision since on different systems the types
-+   may have different representations but the values are always the same.  */
-+
-+extern u_int32_t ntohl (u_int32_t __netlong) __THROW __attribute__ ((__const__));
-+extern u_int16_t ntohs (u_int16_t __netshort)
-+     __THROW __attribute__ ((__const__));
-+extern u_int32_t htonl (u_int32_t __hostlong)
-+     __THROW __attribute__ ((__const__));
-+extern u_int16_t htons (u_int16_t __hostshort)
-+     __THROW __attribute__ ((__const__));
-+
-+#include <endian.h>
-+
-+/* Get machine dependent optimized versions of byte swapping functions.  */
-+#include <bits/byteswap.h>
-+
-+#ifdef __OPTIMIZE__
-+/* We can optimize calls to the conversion functions.  Either nothing has
-+   to be done or we are using directly the byte-swapping functions which
-+   often can be inlined.  */
-+# if __BYTE_ORDER == __BIG_ENDIAN
-+/* The host byte order is the same as network byte order,
-+   so these functions are all just identity.  */
-+# define ntohl(x)     (x)
-+# define ntohs(x)     (x)
-+# define htonl(x)     (x)
-+# define htons(x)     (x)
-+# else
-+#  if __BYTE_ORDER == __LITTLE_ENDIAN
-+#   define ntohl(x)   __bswap_32 (x)
-+#   define ntohs(x)   __bswap_16 (x)
-+#   define htonl(x)   __bswap_32 (x)
-+#   define htons(x)   __bswap_16 (x)
-+#  endif
-+# endif
-+#endif
-+
-+#endif /* netinet/in.h */
-diff -ru iputils/ping6.c iputils-clean/ping6.c
---- iputils/ping6.c    2003-09-03 11:22:46.000000000 -0400
-+++ iputils-clean/ping6.c      2003-09-03 11:15:42.000000000 -0400
-@@ -879,7 +879,7 @@
-       once = 1;
-       /* Patch bpflet for current identifier. */
--      insns[1] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, __constant_htons(ident), 0, 1);
-+      insns[1] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(ident), 0, 1);
-       if (setsockopt(icmp_sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
-               perror("WARNING: failed to install socket filter\n");
-diff -ru iputils/ping.c iputils-clean/ping.c
---- iputils/ping.c     2003-09-03 11:22:46.000000000 -0400
-+++ iputils-clean/ping.c       2003-09-03 11:15:26.000000000 -0400
-@@ -1196,7 +1196,7 @@
-       once = 1;
-       /* Patch bpflet for current identifier. */
--      insns[2] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, __constant_htons(ident), 0, 1);
-+      insns[2] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(ident), 0, 1);
-       if (setsockopt(icmp_sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
-               perror("WARNING: failed to install socket filter\n");
diff --git a/src/patches/kbd-1.12-backspace-1.patch b/src/patches/kbd-1.12-backspace-1.patch
deleted file mode 100644 (file)
index 8bcbb94..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-Submitted By: Alexander E. Patrakov
-Date: 2005-05-16
-Initial Package Version: 1.12
-Upstream Status: Not submitted, possibly incomplete
-Description: Makes Backspace and Delete keys consistent in all i386 keymaps.
-Obsoletes the /etc/kbd/bs-sends-del file for i386.
-
-diff -urN kbd-1.12.orig/data/keymaps/i386/dvorak/dvorak-l.map kbd-1.12/data/keymaps/i386/dvorak/dvorak-l.map
---- kbd-1.12.orig/data/keymaps/i386/dvorak/dvorak-l.map        2002-10-11 17:08:51.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/dvorak/dvorak-l.map     2005-05-16 19:54:48.000000000 +0600
-@@ -43,7 +43,7 @@
-               keycode  11 = three             numbersign
-               keycode  12 = two               at
-               keycode  13 = one               exclam
--              keycode  14 = BackSpace         Delete
-+              keycode  14 = Delete            Delete
- ! --------------------------------------------------------------------------
- ! Row 3
- ! --------------------------------------------------------------------------
-diff -urN kbd-1.12.orig/data/keymaps/i386/dvorak/dvorak-r.map kbd-1.12/data/keymaps/i386/dvorak/dvorak-r.map
---- kbd-1.12.orig/data/keymaps/i386/dvorak/dvorak-r.map        2002-10-11 17:08:51.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/dvorak/dvorak-r.map     2005-05-16 19:54:48.000000000 +0600
-@@ -43,7 +43,7 @@
-               keycode  11 = slash             question
-               keycode  12 = bracketleft       braceleft
-               keycode  13 = bracketright      braceright
--              keycode  14 = BackSpace         Delete
-+              keycode  14 = Delete            Delete
- ! --------------------------------------------------------------------------
- ! Row 3
- ! --------------------------------------------------------------------------
-diff -urN kbd-1.12.orig/data/keymaps/i386/fgGIod/tr_f-latin5.map kbd-1.12/data/keymaps/i386/fgGIod/tr_f-latin5.map
---- kbd-1.12.orig/data/keymaps/i386/fgGIod/tr_f-latin5.map     2002-10-13 06:21:12.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/fgGIod/tr_f-latin5.map  2005-05-16 19:54:48.000000000 +0600
-@@ -51,7 +51,7 @@
-       alt     keycode  12 = Meta_minus      
- keycode  13 = minus            underscore      
-       alt     keycode  13 = Meta_equal      
--keycode  14 = BackSpace           Delete          
-+keycode  14 = Delete           Delete          
-       alt     keycode  14 = Meta_Delete     
- keycode  15 = Tab              Tab             
-       alt     keycode  15 = Meta_Tab        
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/lt.l4.map kbd-1.12/data/keymaps/i386/qwerty/lt.l4.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/lt.l4.map   2002-10-13 05:59:51.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/lt.l4.map        2005-05-16 19:54:48.000000000 +0600
-@@ -205,7 +205,7 @@
- #     edit this if you want the key above <Enter> to delete symbols above
- # cursor, not before.
- keycode        14 = \
--            BackSpace        BackSpace        BackSpace        BackSpace  \
-+            Delete           Delete           Delete           Delete \
-             Delete           Delete           Delete           Delete      \
-             Meta_BackSpace   Meta_BackSpace   Meta_BackSpace Meta_BackSpace \
-             Meta_Delete      Meta_Delete      Meta_Delete      Meta_Delete  
-@@ -506,7 +506,7 @@
- # Edit this if you want strict VT100 emulation.
- string F111 = "\033[3$"
--keycode 111 = Delete         F111             Delete           F111      \
-+keycode 111 = Remove         F111             Remove           F111      \
-             Remove           Remove           Remove           Remove     \
-             Meta_Delete      Meta_Delete      Meta_Delete      Meta_Delete \
-             Boot             Boot             Boot             Boot
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/lt.map kbd-1.12/data/keymaps/i386/qwerty/lt.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/lt.map      2002-10-13 06:00:25.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/lt.map   2005-05-16 19:54:48.000000000 +0600
-@@ -204,7 +204,7 @@
- #     edit this if you want the key above <Enter> to delete symbols above
- # cursor, not before.
- keycode        14 = \
--            BackSpace        BackSpace        BackSpace        BackSpace  \
-+            Delete           Delete           Delete           Delete  \
-             Delete           Delete           Delete           Delete      \
-             Meta_BackSpace   Meta_BackSpace   Meta_BackSpace Meta_BackSpace \
-             Meta_Delete      Meta_Delete      Meta_Delete      Meta_Delete  
-@@ -505,7 +505,7 @@
- # Edit this if you want strict VT100 emulation.
- string F111 = "\033[3$"
--keycode 111 = Delete         F111             Delete           F111      \
-+keycode 111 = Remove         F111             Remove           F111      \
-             Remove           Remove           Remove           Remove     \
-             Meta_Delete      Meta_Delete      Meta_Delete      Meta_Delete \
-             Boot             Boot             Boot             Boot
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/no-latin1.map kbd-1.12/data/keymaps/i386/qwerty/no-latin1.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/no-latin1.map       2002-10-11 17:08:49.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/no-latin1.map    2005-05-16 19:54:48.000000000 +0600
-@@ -3,7 +3,7 @@
- # Send comments to Kjetil T. Homme <kjetilho@ifi.uio.no>
- include "linux-with-alt-and-altgr"
-       plain keycode  83 = KP_Comma
--      plain keycode 111 = Delete              # "Remove" originally, weird...
-+      plain keycode 111 = Remove
- strings as usual
-       keycode   1 = Escape
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/ru-ms.map kbd-1.12/data/keymaps/i386/qwerty/ru-ms.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/ru-ms.map   2002-10-13 06:07:05.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/ru-ms.map        2005-05-16 19:54:48.000000000 +0600
-@@ -89,8 +89,8 @@
- altgr alt     keycode 13 =    Meta_equal
-       shift alt keycode 13 =  Meta_plus
- altgr shift alt keycode 13 =  Meta_plus
--              keycode 14 =    BackSpace  BackSpace  BackSpace  BackSpace
--#             keycode 14 =    Delete  Delete  Delete  Delete
-+#             keycode 14 =    BackSpace  BackSpace  BackSpace  BackSpace
-+              keycode 14 =    Delete  Delete  Delete  Delete
-       alt     keycode 14 =    Meta_Delete
- altgr alt     keycode 14 =    Meta_Delete
-               keycode 15 =    Tab     Tab             Tab     Tab     
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/ru.map kbd-1.12/data/keymaps/i386/qwerty/ru.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/ru.map      2002-10-13 06:02:19.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/ru.map   2005-05-16 19:56:08.000000000 +0600
-@@ -37,7 +37,7 @@
-       alt     keycode 12 =    Meta_minus
-               keycode 13 =    equal   plus            equal   plus
-       alt     keycode 13 =    Meta_equal
--              keycode 14 =    BackSpace BackSpace     BackSpace BackSpace
-+              keycode 14 =    Delete Delete   Delete Delete
-       alt     keycode 14 =    Meta_Delete
-               keycode 15 =    Tab     Tab             Tab     Tab     
-       alt     keycode 15 =    Meta_Tab        
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/ru1.map kbd-1.12/data/keymaps/i386/qwerty/ru1.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/ru1.map     2002-10-13 06:02:30.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/ru1.map  2005-05-16 19:55:32.000000000 +0600
-@@ -143,8 +143,8 @@
- # The keycode "0xFF" is too dangerous for many programs (including emacs).
- # So let it be bracket instead of Hard Sign.
--# altgr               keycode 27 =    +0xDF
--# altgr       shift   keycode 27 =    +0xFF
-+altgr         keycode 27 =    +0xDF
-+altgr shift   keycode 27 =    +0xFF
-       control keycode 27 =    Control_bracketright
- altgr control keycode 27 =    Control_bracketright
-       alt     keycode 27 =    Meta_bracketright
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/ru2.map kbd-1.12/data/keymaps/i386/qwerty/ru2.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/ru2.map     2002-10-13 06:05:47.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/ru2.map  2005-05-16 19:56:52.000000000 +0600
-@@ -46,7 +46,7 @@
-       alt     keycode 12 =    Meta_minus
-               keycode 13 =    equal   plus            equal   plus
-       alt     keycode 13 =    Meta_equal
--              keycode 14 =    BackSpace BackSpace     BackSpace BackSpace
-+              keycode 14 =    Delete Delete   Delete Delete
-       alt     keycode 14 =    Meta_Delete
-               keycode 15 =    Tab     Tab             Tab     Tab     
-       alt     keycode 15 =    Meta_Tab        
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/se-ir209.map kbd-1.12/data/keymaps/i386/qwerty/se-ir209.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/se-ir209.map        2002-10-13 06:12:48.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/se-ir209.map     2005-05-16 19:54:48.000000000 +0600
-@@ -345,7 +345,7 @@
-       keycode 109 = Next      Scroll_Forward
-       keycode 110 = Insert
--      keycode 111 = Delete            # "Remove" originally, weird...
-+      keycode 111 = Remove
- control alt   keycode 111 = Boot
- control altgr keycode 111 = Boot
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/se-lat6.map kbd-1.12/data/keymaps/i386/qwerty/se-lat6.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/se-lat6.map 2002-10-13 06:13:01.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/se-lat6.map      2005-05-16 19:54:48.000000000 +0600
-@@ -374,6 +374,6 @@
-       keycode 109 = Next      Scroll_Forward
-       keycode 110 = Insert
--      keycode 111 = Delete            # "Remove" originally, weird...
-+      keycode 111 = Remove
- control alt   keycode 111 = Boot
- control altgr keycode 111 = Boot
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/tr_q-latin5.map kbd-1.12/data/keymaps/i386/qwerty/tr_q-latin5.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/tr_q-latin5.map     2002-10-11 17:08:49.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/tr_q-latin5.map  2005-05-16 19:54:48.000000000 +0600
-@@ -49,7 +49,7 @@
-       alt     keycode  12 = Meta_minus
- keycode  13 = minus            underscore
-       alt     keycode  13 = Meta_equal
--keycode  14 = BackSpace           Delete
-+keycode  14 = Delete           Delete
-       alt     keycode  14 = Meta_Delete
- keycode  15 = Tab              Tab
-       alt     keycode  15 = Meta_Tab
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/ua-utf-ws.map kbd-1.12/data/keymaps/i386/qwerty/ua-utf-ws.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/ua-utf-ws.map       2002-10-13 06:07:56.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/ua-utf-ws.map    2005-05-16 19:54:48.000000000 +0600
-@@ -260,7 +260,7 @@
-       shift ctrll ctrlr keycode 13 = plus
-       alt ctrll ctrlr keycode 13 = Meta_equal
-       shift alt ctrll ctrlr keycode 13 = Meta_plus
--keycode  14 = BackSpace           Delete          
-+keycode  14 = Delete           Delete          
-       control keycode  14 = BackSpace       
-       alt     keycode  14 = Meta_Delete     
-       ctrlr   keycode 14 = BackSpace
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/ua-utf.map kbd-1.12/data/keymaps/i386/qwerty/ua-utf.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/ua-utf.map  2002-10-13 06:08:07.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/ua-utf.map       2005-05-16 19:54:48.000000000 +0600
-@@ -250,7 +250,7 @@
-       shift ctrll ctrlr keycode 13 = plus
-       alt ctrll ctrlr keycode 13 = Meta_equal
-       shift alt ctrll ctrlr keycode 13 = Meta_plus
--keycode  14 = BackSpace           Delete          
-+keycode  14 = Delete           Delete          
-       control keycode  14 = BackSpace       
-       alt     keycode  14 = Meta_Delete     
-       ctrlr   keycode 14 = BackSpace
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/ua-ws.map kbd-1.12/data/keymaps/i386/qwerty/ua-ws.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/ua-ws.map   2002-10-13 06:08:19.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/ua-ws.map        2005-05-16 19:54:48.000000000 +0600
-@@ -260,7 +260,7 @@
-       shift ctrll ctrlr keycode 13 = plus
-       alt ctrll ctrlr keycode 13 = Meta_equal
-       shift alt ctrll ctrlr keycode 13 = Meta_plus
--keycode  14 = BackSpace           Delete          
-+keycode  14 = Delete           Delete          
-       control keycode  14 = BackSpace       
-       alt     keycode  14 = Meta_Delete     
-       ctrlr   keycode 14 = BackSpace
-diff -urN kbd-1.12.orig/data/keymaps/i386/qwerty/ua.map kbd-1.12/data/keymaps/i386/qwerty/ua.map
---- kbd-1.12.orig/data/keymaps/i386/qwerty/ua.map      2002-10-13 06:08:31.000000000 +0600
-+++ kbd-1.12/data/keymaps/i386/qwerty/ua.map   2005-05-16 19:54:48.000000000 +0600
-@@ -249,7 +249,7 @@
-       shift ctrll ctrlr keycode 13 = plus
-       alt ctrll ctrlr keycode 13 = Meta_equal
-       shift alt ctrll ctrlr keycode 13 = Meta_plus
--keycode  14 = BackSpace           Delete          
-+keycode  14 = Delete           Delete          
-       control keycode  14 = BackSpace       
-       alt     keycode  14 = Meta_Delete     
-       ctrlr   keycode 14 = BackSpace
diff --git a/src/patches/kbd-1.12-gcc4_fixes-1.patch b/src/patches/kbd-1.12-gcc4_fixes-1.patch
deleted file mode 100644 (file)
index ce1d429..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-Submitted By: Matthew Burgess <matthew@linuxfromscratch.org>
-Date: 2005-07-28
-Initial Package Version: 1.12
-Upstream Status: Unknown
-Origin: http://cvs.fedora.redhat.com/viewcvs/devel/kbd/kbd-1.12-alias.patch?rev=1.2&view=markup
-Description: Fix violations of C aliasing rules, triggered by gcc4.
-
-diff -Naur kbd-1.12.orig/src/psffontop.c kbd-1.12/src/psffontop.c
---- kbd-1.12.orig/src/psffontop.c      2004-01-16 19:45:31.000000000 +0000
-+++ kbd-1.12/src/psffontop.c   2005-07-28 20:33:57.946088984 +0000
-@@ -59,7 +59,6 @@
- static unsigned int
- assemble_ucs2(char **inptr, int cnt) {
--      unsigned char **in = (unsigned char **) inptr;
-       unsigned int u1, u2;
-       if (cnt < 2) {
-@@ -68,8 +67,8 @@
-               exit(EX_DATAERR);
-       }
--      u1 = *(*in)++;
--      u2 = *(*in)++;
-+      u1 = (unsigned char)*(*inptr)++;
-+      u2 = (unsigned char)*(*inptr)++;
-       return (u1 | (u2 << 8));
- }
-@@ -110,7 +109,6 @@
-  */
- static void
- get_uni_entry(char **inptr, char **endptr, struct unicode_list *up, int utf8) {
--      unsigned char **in = (unsigned char **) inptr;
-       unsigned char uc;
-       unicode unichar;
-       int inseq = 0;
-@@ -126,14 +124,14 @@
-                       exit(EX_DATAERR);
-               }
-               if (utf8) {
--                      uc = *(*in)++;
-+                      uc = *(*inptr)++;
-                       if (uc == PSF2_SEPARATOR)
-                               break;
-                       if (uc == PSF2_STARTSEQ) {
-                               inseq = 1;
-                               continue;
-                       }
--                      --(*in);
-+                      --(*inptr);
-                       unichar = assemble_utf8(inptr, *endptr - *inptr);
-               } else {
-                       unichar = assemble_ucs2(inptr, *endptr - *inptr);
diff --git a/src/patches/kbd-1.12-more-programs-1.patch b/src/patches/kbd-1.12-more-programs-1.patch
deleted file mode 100644 (file)
index 227abed..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-Submitted By: Greg Schafer <greg at linuxfromscratch dot org>
-Date: 2004-01-07
-Initial Package Version: 1.10
-Origin: LFS Book and Anderson Lizardo <lizardo at linuxfromscratch dot org>
-        (based on kbd-1.08-more-programs.patch)
-Description: Install additional programs included in kbd package,
-             including their manpages. Note: setlogcons does not have
-             a manpage.
-
-diff -Naur kbd-1.10.orig/man/Makefile kbd-1.10/man/Makefile
---- kbd-1.10.orig/man/Makefile 2002-10-11 22:12:53.000000000 +0000
-+++ kbd-1.10/man/Makefile      2004-01-07 02:36:13.471404128 +0000
-@@ -7,6 +7,9 @@
-               install -d -m 755 $(MANDIR)/$$i; \
-               install -m 644 $$i/*.[0-9] $(MANDIR)/$$i; \
-       done
-+      install -d -m 755 $(MANDIR)/man8
-+      install -m 644 man8misc/setvesablank.8 $(MANDIR)/man8
-+      install -m 644 man8misc/getunimap.8 $(MANDIR)/man8
-       rm -f $(MANDIR)/man5/keytables.5
- clean:
-diff -Naur kbd-1.10.orig/src/Makefile.in kbd-1.10/src/Makefile.in
---- kbd-1.10.orig/src/Makefile.in      2004-01-03 17:53:06.000000000 +0000
-+++ kbd-1.10/src/Makefile.in   2004-01-07 02:36:44.706655648 +0000
-@@ -46,8 +46,9 @@
- OLDPROGS= mapscrn loadunimap
- # Not installed by default
--MISC    = screendump setlogcons setvesablank spawn_console spawn_login \
--        getunimap clrunimap outpsfheader setpalette
-+#MISC    = screendump setlogcons setvesablank spawn_console spawn_login \
-+#       getunimap clrunimap outpsfheader setpalette
-+MISC     = setlogcons setvesablank getunimap
- # Installed by default
- SHCMDS  = unicode_start unicode_stop
-@@ -73,7 +74,7 @@
- install:      all
-       install -d -m 0755 $(BINDIR) $(LOADKEYS_BINDIR)
-       install -s -m 0755 $(setowner) $(PROGS) $(OLDPROGS) $(BINDIR)
--#     install -s -m 0755 $(setowner) $(MISC) $(BINDIR)
-+      install -s -m 0755 $(setowner) $(MISC) $(BINDIR)
-       install -c -m 0755 $(setowner) $(SHCMDS) $(BINDIR)
-       for i in psfaddtable psfgettable psfstriptable; do \
-               rm -f $(BINDIR)/$$i; ln -s psfxtable $(BINDIR)/$$i; \
diff --git a/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch b/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch
deleted file mode 100644 (file)
index 6a4b3c5..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-diff -Naur linux-3.10.10/drivers/net/usb/smsc95xx.c linux-c1af7c6db316763b9dce7137495cb9ada8fa17b4/drivers/net/usb/smsc95xx.c
---- linux-3.10.10/drivers/net/usb/smsc95xx.c   2013-08-29 18:47:51.000000000 +0200
-+++ linux-c1af7c6db316763b9dce7137495cb9ada8fa17b4/drivers/net/usb/smsc95xx.c  2013-08-30 20:12:54.000000000 +0200
-@@ -61,6 +61,7 @@
- #define SUSPEND_SUSPEND3              (0x08)
- #define SUSPEND_ALLMODES              (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
-                                        SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3)
-+#define MAC_ADDR_LEN                    (6)
- struct smsc95xx_priv {
-       u32 mac_cr;
-@@ -76,6 +77,10 @@
- module_param(turbo_mode, bool, 0644);
- MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
-+static char *macaddr = ":";
-+module_param(macaddr, charp, 0);
-+MODULE_PARM_DESC(macaddr, "MAC address");
-+
- static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
-                                           u32 *data, int in_pm)
- {
-@@ -765,8 +770,59 @@
-       return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
- }
-+/* Check the macaddr module parameter for a MAC address */
-+static int smsc95xx_is_macaddr_param(struct usbnet *dev, u8 *dev_mac)
-+{
-+       int i, j, got_num, num;
-+       u8 mtbl[MAC_ADDR_LEN];
-+
-+       if (macaddr[0] == ':')
-+               return 0;
-+
-+       i = 0;
-+       j = 0;
-+       num = 0;
-+       got_num = 0;
-+       while (j < MAC_ADDR_LEN) {
-+               if (macaddr[i] && macaddr[i] != ':') {
-+                       got_num++;
-+                       if ('0' <= macaddr[i] && macaddr[i] <= '9')
-+                               num = num * 16 + macaddr[i] - '0';
-+                       else if ('A' <= macaddr[i] && macaddr[i] <= 'F')
-+                               num = num * 16 + 10 + macaddr[i] - 'A';
-+                       else if ('a' <= macaddr[i] && macaddr[i] <= 'f')
-+                               num = num * 16 + 10 + macaddr[i] - 'a';
-+                       else
-+                               break;
-+                       i++;
-+               } else if (got_num == 2) {
-+                       mtbl[j++] = (u8) num;
-+                       num = 0;
-+                       got_num = 0;
-+                       i++;
-+               } else {
-+                       break;
-+               }
-+       }
-+
-+       if (j == MAC_ADDR_LEN) {
-+               netif_dbg(dev, ifup, dev->net, "Overriding MAC address with: "
-+               "%02x:%02x:%02x:%02x:%02x:%02x\n", mtbl[0], mtbl[1], mtbl[2],
-+                                               mtbl[3], mtbl[4], mtbl[5]);
-+               for (i = 0; i < MAC_ADDR_LEN; i++)
-+                       dev_mac[i] = mtbl[i];
-+               return 1;
-+       } else {
-+               return 0;
-+       }
-+}
-+
- static void smsc95xx_init_mac_address(struct usbnet *dev)
- {
-+       /* Check module parameters */
-+       if (smsc95xx_is_macaddr_param(dev, dev->net->dev_addr))
-+               return;
-+
-       /* try reading mac address from EEPROM */
-       if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
-                       dev->net->dev_addr) == 0) {
diff --git a/src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch b/src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch
deleted file mode 100644 (file)
index e892d88..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -Naur linux-3.10.10.org/drivers/crypto/mv_cesa.c linux-3.10.10/drivers/crypto/mv_cesa.c
---- linux-3.10.10.org/drivers/crypto/mv_cesa.c 2013-08-29 18:47:51.000000000 +0200
-+++ linux-3.10.10/drivers/crypto/mv_cesa.c     2013-09-04 13:06:35.000000000 +0200
-@@ -1120,6 +1120,7 @@
-       else
-               printk(KERN_WARNING MV_CESA "Could not register sha1 driver\n");
-+/*
-       ret = crypto_register_ahash(&mv_hmac_sha1_alg);
-       if (ret == 0) {
-               cpg->has_hmac_sha1 = 1;
-@@ -1127,6 +1128,7 @@
-               printk(KERN_WARNING MV_CESA
-                      "Could not register hmac-sha1 driver\n");
-       }
-+*/
-       return 0;
- err_unreg_ecb:
diff --git a/src/patches/linux-3.10.39-add_libertas_uap.patch b/src/patches/linux-3.10.39-add_libertas_uap.patch
deleted file mode 100644 (file)
index be9a493..0000000
+++ /dev/null
@@ -1,5081 +0,0 @@
-diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
-index f8f0156..42a0702 100644
---- a/drivers/net/wireless/Kconfig
-+++ b/drivers/net/wireless/Kconfig
-@@ -51,6 +51,14 @@ config LIBERTAS_THINFIRM_USB
-       ---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
-       tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
-       depends on ISA_DMA_API && (PCI || BROKEN)
-diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
-index 67156ef..475a1b3 100644
---- a/drivers/net/wireless/Makefile
-+++ b/drivers/net/wireless/Makefile
-@@ -37,6 +37,8 @@ obj-$(CONFIG_LIBERTAS)               += libertas/
- obj-$(CONFIG_LIBERTAS_THINFIRM)       += libertas_tf/
-+obj-$(CONFIG_LIBERTAS_UAP)    += libertas_uap/
-+
- obj-$(CONFIG_ADM8211) += adm8211.o
- obj-$(CONFIG_MWL8K)   += mwl8k.o
-diff --git a/drivers/net/wireless/libertas_uap/Makefile b/drivers/net/wireless/libertas_uap/Makefile
-new file mode 100644
-index 0000000..821f2a4
---- /dev/null
-+++ b/drivers/net/wireless/libertas_uap/Makefile
-@@ -0,0 +1,6 @@
-+obj-$(CONFIG_LIBERTAS_UAP) += uap8xxx.o
-+
-+uap8xxx-y += uap_main.o uap_sdio_mmc.o
-+uap8xxx-$(CONFIG_PROC_FS) += uap_proc.o uap_debug.o
-+
-+EXTRA_CFLAGS += -DFPNUM='"52"' -DPXA3XX_DMA_ALIGN -DDEBUG_LEVEL1
-diff --git a/drivers/net/wireless/libertas_uap/uap_debug.c b/drivers/net/wireless/libertas_uap/uap_debug.c
-new file mode 100644
-index 0000000..a2f6dc9
---- /dev/null
-+++ b/drivers/net/wireless/libertas_uap/uap_debug.c
-@@ -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 --git a/drivers/net/wireless/libertas_uap/uap_drv.h b/drivers/net/wireless/libertas_uap/uap_drv.h
-new file mode 100644
-index 0000000..5aa009f
---- /dev/null
-+++ b/drivers/net/wireless/libertas_uap/uap_drv.h
-@@ -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 --git a/drivers/net/wireless/libertas_uap/uap_fw.h b/drivers/net/wireless/libertas_uap/uap_fw.h
-new file mode 100644
-index 0000000..23a40d6
---- /dev/null
-+++ b/drivers/net/wireless/libertas_uap/uap_fw.h
-@@ -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 --git a/drivers/net/wireless/libertas_uap/uap_headers.h b/drivers/net/wireless/libertas_uap/uap_headers.h
-new file mode 100644
-index 0000000..fa09af4
---- /dev/null
-+++ b/drivers/net/wireless/libertas_uap/uap_headers.h
-@@ -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 --git a/drivers/net/wireless/libertas_uap/uap_main.c b/drivers/net/wireless/libertas_uap/uap_main.c
-new file mode 100644
-index 0000000..6ad8403
---- /dev/null
-+++ b/drivers/net/wireless/libertas_uap/uap_main.c
-@@ -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 --git a/drivers/net/wireless/libertas_uap/uap_proc.c b/drivers/net/wireless/libertas_uap/uap_proc.c
-new file mode 100644
-index 0000000..d673f56
---- /dev/null
-+++ b/drivers/net/wireless/libertas_uap/uap_proc.c
-@@ -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 --git a/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c b/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c
-new file mode 100644
-index 0000000..86f55b5
---- /dev/null
-+++ b/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c
-@@ -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 --git a/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h b/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h
-new file mode 100644
-index 0000000..191c67f
---- /dev/null
-+++ b/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h
-@@ -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 --git a/src/patches/linux/linux-3.14.79-rpi-suspend-not-inline.patch b/src/patches/linux/linux-3.14.79-rpi-suspend-not-inline.patch
deleted file mode 100644 (file)
index da7cf80..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur linux-3.14.79.ORG/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c linux-3.14.79/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
---- linux-3.14.79.ORG/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c       2017-06-16 19:58:56.000000000 +0200
-+++ linux-3.14.79/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c   2017-06-17 09:32:51.645096482 +0200
-@@ -1776,7 +1776,7 @@
- ** VC_RESUME_FAILED - Currently unused - no mechanism to fail resume exists.
- */
--inline void
-+void
- set_suspend_state(VCHIQ_ARM_STATE_T *arm_state,
-       enum vc_suspend_status new_state)
- {
diff --git a/src/patches/linux/linux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch b/src/patches/linux/linux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch
deleted file mode 100644 (file)
index e4c8b99..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-From a44147a09baf8c46cc0b02332df3a4656e0659d5 Mon Sep 17 00:00:00 2001
-From: Arne Fitzenreiter <arne_f@ipfire.org>
-Date: Mon, 10 Dec 2018 13:12:00 +0100
-Subject: [PATCH] Revert "usb: dwc2: Fix DMA alignment to start at allocated
- boundary"
-
-This reverts commit 68fc92a0f3913d539d1ac68a861f895e34099e46.
----
- drivers/usb/dwc2/hcd.c | 44 +++++++++++++++++++++-----------------------
- 1 file changed, 21 insertions(+), 23 deletions(-)
-
-diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
-index fa20ec4..4b81d08 100644
---- a/drivers/usb/dwc2/hcd.c
-+++ b/drivers/usb/dwc2/hcd.c
-@@ -2644,29 +2644,34 @@ static int dwc2_alloc_split_dma_aligned_buf(struct dwc2_hsotg *hsotg,
- #define DWC2_USB_DMA_ALIGN 4
-+struct dma_aligned_buffer {
-+      void *kmalloc_ptr;
-+      void *old_xfer_buffer;
-+      u8 data[0];
-+};
-+
- static void dwc2_free_dma_aligned_buffer(struct urb *urb)
- {
--      void *stored_xfer_buffer;
-+      struct dma_aligned_buffer *temp;
-       if (!(urb->transfer_flags & URB_ALIGNED_TEMP_BUFFER))
-               return;
--      /* Restore urb->transfer_buffer from the end of the allocated area */
--      memcpy(&stored_xfer_buffer, urb->transfer_buffer +
--             urb->transfer_buffer_length, sizeof(urb->transfer_buffer));
-+      temp = container_of(urb->transfer_buffer,
-+                          struct dma_aligned_buffer, data);
-       if (usb_urb_dir_in(urb))
--              memcpy(stored_xfer_buffer, urb->transfer_buffer,
-+              memcpy(temp->old_xfer_buffer, temp->data,
-                      urb->transfer_buffer_length);
--      kfree(urb->transfer_buffer);
--      urb->transfer_buffer = stored_xfer_buffer;
-+      urb->transfer_buffer = temp->old_xfer_buffer;
-+      kfree(temp->kmalloc_ptr);
-       urb->transfer_flags &= ~URB_ALIGNED_TEMP_BUFFER;
- }
- static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
- {
--      void *kmalloc_ptr;
-+      struct dma_aligned_buffer *temp, *kmalloc_ptr;
-       size_t kmalloc_size;
-       if (urb->num_sgs || urb->sg ||
-@@ -2674,29 +2679,22 @@ static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
-           !((uintptr_t)urb->transfer_buffer & (DWC2_USB_DMA_ALIGN - 1)))
-               return 0;
--      /*
--       * Allocate a buffer with enough padding for original transfer_buffer
--       * pointer. This allocation is guaranteed to be aligned properly for
--       * DMA
--       */
-+      /* Allocate a buffer with enough padding for alignment */
-       kmalloc_size = urb->transfer_buffer_length +
--              sizeof(urb->transfer_buffer);
-+              sizeof(struct dma_aligned_buffer) + DWC2_USB_DMA_ALIGN - 1;
-       kmalloc_ptr = kmalloc(kmalloc_size, mem_flags);
-       if (!kmalloc_ptr)
-               return -ENOMEM;
--      /*
--       * Position value of original urb->transfer_buffer pointer to the end
--       * of allocation for later referencing
--       */
--      memcpy(kmalloc_ptr + urb->transfer_buffer_length,
--             &urb->transfer_buffer, sizeof(urb->transfer_buffer));
--
-+      /* Position our struct dma_aligned_buffer such that data is aligned */
-+      temp = PTR_ALIGN(kmalloc_ptr + 1, DWC2_USB_DMA_ALIGN) - 1;
-+      temp->kmalloc_ptr = kmalloc_ptr;
-+      temp->old_xfer_buffer = urb->transfer_buffer;
-       if (usb_urb_dir_out(urb))
--              memcpy(kmalloc_ptr, urb->transfer_buffer,
-+              memcpy(temp->data, urb->transfer_buffer,
-                      urb->transfer_buffer_length);
--      urb->transfer_buffer = kmalloc_ptr;
-+      urb->transfer_buffer = temp->data;
-       urb->transfer_flags |= URB_ALIGNED_TEMP_BUFFER;
--- 
-2.7.4
-
diff --git a/src/patches/linux/linux-4.9.8-rt2x00usb_suppress_queue_warnings.patch b/src/patches/linux/linux-4.9.8-rt2x00usb_suppress_queue_warnings.patch
deleted file mode 100644 (file)
index e145cb4..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -Naur linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2800usb.c linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
---- linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2800usb.c     2017-02-04 09:47:29.000000000 +0100
-+++ linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2800usb.c 2017-02-11 10:50:04.909859370 +0100
-@@ -448,7 +448,7 @@
-       rt2x00usb_register_read(rt2x00dev, TXRXQ_PCNT, &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);
-@@ -463,7 +463,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);
-@@ -613,7 +613,7 @@
-               if (unlikely(test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
-                            !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))) {
--                      rt2x00_warn(rt2x00dev, "Data pending for entry %u in queue %u\n",
-+                      rt2x00_dbg(rt2x00dev, "Data pending for entry %u in queue %u\n",
-                                   entry->entry_idx, qid);
-                       break;
-               }
-diff -Naur linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
---- linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c     2017-02-04 09:47:29.000000000 +0100
-+++ linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c 2017-02-11 10:50:04.909859370 +0100
-@@ -524,7 +524,7 @@
- static void rt2x00usb_watchdog_tx_dma(struct data_queue *queue)
- {
--      rt2x00_warn(queue->rt2x00dev, "TX queue %d DMA timed out, invoke forced forced reset\n",
-+      rt2x00_dbg(queue->rt2x00dev, "TX queue %d DMA timed out, invoke forced reset\n",
-                   queue->qid);
-       rt2x00queue_stop_queue(queue);
diff --git a/src/patches/lzo-2.06-CVE-2014-4607.patch b/src/patches/lzo-2.06-CVE-2014-4607.patch
deleted file mode 100644 (file)
index d22c406..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-diff --git a/minilzo/minilzo.c b/minilzo/minilzo.c
-index 34ce0f0..ecfdf66 100644
---- a/minilzo/minilzo.c
-+++ b/minilzo/minilzo.c
-@@ -3547,6 +3547,8 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
- #undef TEST_LBO
- #undef NEED_IP
- #undef NEED_OP
-+#undef TEST_IV
-+#undef TEST_OV
- #undef HAVE_TEST_IP
- #undef HAVE_TEST_OP
- #undef HAVE_NEED_IP
-@@ -3561,6 +3563,7 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
- #  if (LZO_TEST_OVERRUN_INPUT >= 2)
- #    define NEED_IP(x) \
-             if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x))  goto input_overrun
-+#    define TEST_IV(x)          if ((x) > (lzo_uint)0 - (511)) goto input_overrun
- #  endif
- #endif
-@@ -3572,6 +3575,7 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
- #    undef TEST_OP
- #    define NEED_OP(x) \
-             if ((lzo_uint)(op_end - op) < (lzo_uint)(x))  goto output_overrun
-+#    define TEST_OV(x)          if ((x) > (lzo_uint)0 - (511)) goto output_overrun
- #  endif
- #endif
-@@ -3602,11 +3606,13 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
- #  define HAVE_NEED_IP 1
- #else
- #  define NEED_IP(x)            ((void) 0)
-+#  define TEST_IV(x)            ((void) 0)
- #endif
- #if defined(NEED_OP)
- #  define HAVE_NEED_OP 1
- #else
- #  define NEED_OP(x)            ((void) 0)
-+#  define TEST_OV(x)            ((void) 0)
- #endif
- #if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
-@@ -3687,6 +3693,7 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
-             {
-                 t += 255;
-                 ip++;
-+                TEST_IV(t);
-                 NEED_IP(1);
-             }
-             t += 15 + *ip++;
-@@ -3835,6 +3842,7 @@ match:
-                     {
-                         t += 255;
-                         ip++;
-+                        TEST_OV(t);
-                         NEED_IP(1);
-                     }
-                     t += 31 + *ip++;
-@@ -3879,6 +3887,7 @@ match:
-                     {
-                         t += 255;
-                         ip++;
-+                        TEST_OV(t);
-                         NEED_IP(1);
-                     }
-                     t += 7 + *ip++;
-@@ -4073,6 +4082,8 @@ lookbehind_overrun:
- #undef TEST_LBO
- #undef NEED_IP
- #undef NEED_OP
-+#undef TEST_IV
-+#undef TEST_OV
- #undef HAVE_TEST_IP
- #undef HAVE_TEST_OP
- #undef HAVE_NEED_IP
-@@ -4087,6 +4098,7 @@ lookbehind_overrun:
- #  if (LZO_TEST_OVERRUN_INPUT >= 2)
- #    define NEED_IP(x) \
-             if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x))  goto input_overrun
-+#    define TEST_IV(x)          if ((x) > (lzo_uint)0 - (511)) goto input_overrun
- #  endif
- #endif
-@@ -4098,6 +4110,7 @@ lookbehind_overrun:
- #    undef TEST_OP
- #    define NEED_OP(x) \
-             if ((lzo_uint)(op_end - op) < (lzo_uint)(x))  goto output_overrun
-+#    define TEST_OV(x)          if ((x) > (lzo_uint)0 - (511)) goto output_overrun
- #  endif
- #endif
-@@ -4128,11 +4141,13 @@ lookbehind_overrun:
- #  define HAVE_NEED_IP 1
- #else
- #  define NEED_IP(x)            ((void) 0)
-+#  define TEST_IV(x)            ((void) 0)
- #endif
- #if defined(NEED_OP)
- #  define HAVE_NEED_OP 1
- #else
- #  define NEED_OP(x)            ((void) 0)
-+#  define TEST_OV(x)            ((void) 0)
- #endif
- #if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
-@@ -4213,6 +4228,7 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
-             {
-                 t += 255;
-                 ip++;
-+                TEST_IV(t);
-                 NEED_IP(1);
-             }
-             t += 15 + *ip++;
-@@ -4361,6 +4377,7 @@ match:
-                     {
-                         t += 255;
-                         ip++;
-+                        TEST_OV(t);
-                         NEED_IP(1);
-                     }
-                     t += 31 + *ip++;
-@@ -4405,6 +4422,7 @@ match:
-                     {
-                         t += 255;
-                         ip++;
-+                        TEST_OV(t);
-                         NEED_IP(1);
-                     }
-                     t += 7 + *ip++;
-diff --git a/src/lzo1_d.ch b/src/lzo1_d.ch
-index 40a5bfd..c442d9c 100644
---- a/src/lzo1_d.ch
-+++ b/src/lzo1_d.ch
-@@ -76,6 +76,8 @@
- #undef TEST_LBO
- #undef NEED_IP
- #undef NEED_OP
-+#undef TEST_IV
-+#undef TEST_OV
- #undef HAVE_TEST_IP
- #undef HAVE_TEST_OP
- #undef HAVE_NEED_IP
-@@ -91,6 +93,7 @@
- #  if (LZO_TEST_OVERRUN_INPUT >= 2)
- #    define NEED_IP(x) \
-             if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x))  goto input_overrun
-+#    define TEST_IV(x)          if ((x) > (lzo_uint)0 - (511)) goto input_overrun
- #  endif
- #endif
-@@ -102,6 +105,7 @@
- #    undef TEST_OP              /* don't need both of the tests here */
- #    define NEED_OP(x) \
-             if ((lzo_uint)(op_end - op) < (lzo_uint)(x))  goto output_overrun
-+#    define TEST_OV(x)          if ((x) > (lzo_uint)0 - (511)) goto output_overrun
- #  endif
- #endif
-@@ -135,11 +139,13 @@
- #  define HAVE_NEED_IP 1
- #else
- #  define NEED_IP(x)            ((void) 0)
-+#  define TEST_IV(x)            ((void) 0)
- #endif
- #if defined(NEED_OP)
- #  define HAVE_NEED_OP 1
- #else
- #  define NEED_OP(x)            ((void) 0)
-+#  define TEST_OV(x)            ((void) 0)
- #endif
-diff --git a/src/lzo1b_d.ch b/src/lzo1b_d.ch
-index fe5f361..36b4b6b 100644
---- a/src/lzo1b_d.ch
-+++ b/src/lzo1b_d.ch
-@@ -187,6 +187,7 @@ match:
-                 {
-                     t += 255;
-                     ip++;
-+                    TEST_OV(t);
-                     NEED_IP(1);
-                 }
-                 t += (M4_MIN_LEN - M3_MIN_LEN) + *ip++;
-diff --git a/src/lzo1f_d.ch b/src/lzo1f_d.ch
-index 9e942f5..0c2199e 100644
---- a/src/lzo1f_d.ch
-+++ b/src/lzo1f_d.ch
-@@ -84,6 +84,7 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
-             {
-                 t += 255;
-                 ip++;
-+                TEST_IV(t);
-                 NEED_IP(1);
-             }
-             t += 31 + *ip++;
-@@ -138,6 +139,7 @@ match:
-                         {
-                             t += 255;
-                             ip++;
-+                            TEST_OV(t);
-                             NEED_IP(1);
-                         }
-                         t += 31 + *ip++;
-diff --git a/src/lzo1x_d.ch b/src/lzo1x_d.ch
-index 49cf326..c804cc7 100644
---- a/src/lzo1x_d.ch
-+++ b/src/lzo1x_d.ch
-@@ -120,6 +120,7 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
-             {
-                 t += 255;
-                 ip++;
-+                TEST_IV(t);
-                 NEED_IP(1);
-             }
-             t += 15 + *ip++;
-@@ -273,6 +274,7 @@ match:
-                     {
-                         t += 255;
-                         ip++;
-+                        TEST_OV(t);
-                         NEED_IP(1);
-                     }
-                     t += 31 + *ip++;
-@@ -317,6 +319,7 @@ match:
-                     {
-                         t += 255;
-                         ip++;
-+                        TEST_OV(t);
-                         NEED_IP(1);
-                     }
-                     t += 7 + *ip++;
-diff --git a/src/lzo2a_d.ch b/src/lzo2a_d.ch
-index 48e51ca..954f07e 100644
---- a/src/lzo2a_d.ch
-+++ b/src/lzo2a_d.ch
-@@ -131,6 +131,7 @@ DO_DECOMPRESS    ( const lzo_bytep in , lzo_uint  in_len,
-             {
-                 t += 255;
-                 ip++;
-+                TEST_OV(t);
-                 NEED_IP(1);
-             }
-             t += *ip++;
diff --git a/src/patches/netpbm-10.26.46-getline.patch b/src/patches/netpbm-10.26.46-getline.patch
deleted file mode 100644 (file)
index c5a961b..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-The getline function used in a couple of places in netpbm-free is also
-defined by POSIX:2008, and so netpbm-free fails to build with newer
-versions of (e)glibc. Here's a patch to rename it.
-
-  * Rename getline functions to get_line to avoid conflict with POSIX:2008.
-
---- netpbm-free-10.0.orig/ppm/xvminitoppm.c
-+++ netpbm-free-10.0/ppm/xvminitoppm.c
-@@ -14,7 +14,7 @@
- #include "ppm.h"
- #define BUFSIZE 256
--static void getline ARGS((FILE *fp, char *buf));
-+static void get_line ARGS((FILE *fp, char *buf));
- int 
- main(argc, argv)
-@@ -48,18 +48,18 @@
-                 i++;
-             }
-     
--    getline(ifp, buf);
-+    get_line(ifp, buf);
-     if( strncmp(buf, "P7 332", 6) != 0 )
-         pm_error("bad magic number - not a XV thumbnail picture");
-     while(1) {
--        getline(ifp, buf);
-+        get_line(ifp, buf);
-         if( strncmp(buf, "#END_OF_COMMENTS", 16)==0 )
-             break;
-         if( strncmp(buf, "#BUILTIN", 8)==0 )
-             pm_error("cannot convert builtin XV thumbnail pictures");
-     }
--    getline(ifp, buf);
-+    get_line(ifp, buf);
-     if( sscanf(buf, "%d %d %d", &cols, &rows, &maxval) != 3 ) 
-         pm_error("error parsing dimension info");
-     if( maxval != 255 )
-@@ -85,7 +85,7 @@
- static void
--getline(fp, buf)
-+get_line(fp, buf)
-     FILE *fp;
-     char *buf;
- {
---- netpbm-free-10.0.orig/ppm/xpmtoppm.c
-+++ netpbm-free-10.0/ppm/xpmtoppm.c
-@@ -114,7 +114,7 @@
- static void
--getline(char * const line, int const size, FILE * const stream) {
-+get_line(char * const line, int const size, FILE * const stream) {
- /*----------------------------------------------------------------------------
-    Read the next line from the input file 'stream', through the one-line
-    buffer lastInputLine[].
-@@ -130,7 +130,7 @@
-    Exit program if the line doesn't fit in the buffer.
- -----------------------------------------------------------------------------*/
-     if (size > MAX_LINE+1)
--        pm_error("INTERNAL ERROR: getline() received 'size' parameter "
-+        pm_error("INTERNAL ERROR: get_line() received 'size' parameter "
-                  "which is out of bounds");
-     if (backup) {
-@@ -346,7 +346,7 @@
-                int * const transparentP) {
- /*----------------------------------------------------------------------------
-   Read the header of the XPM file on stream 'stream'.  Assume the
--  getline() stream is presently positioned to the beginning of the
-+  get_line() stream is presently positioned to the beginning of the
-   file and it is a Version 3 XPM file.  Leave the stream positioned
-   after the header.
-@@ -377,25 +377,25 @@
-     *widthP = *heightP = *ncolorsP = *chars_per_pixelP = -1;
-     /* Read the XPM signature comment */
--    getline(line, sizeof(line), stream);
-+    get_line(line, sizeof(line), stream);
-     if (strncmp(line, xpm3_signature, strlen(xpm3_signature)) != 0) 
-         pm_error("Apparent XPM 3 file does not start with '/* XPM */'.  "
-                  "First line is '%s'", xpm3_signature);
-     /* Read the assignment line */
--    getline(line, sizeof(line), stream);
-+    get_line(line, sizeof(line), stream);
-     if (strncmp(line, "static char", 11) != 0)
-         pm_error("Cannot find data structure declaration.  Expected a "
-                  "line starting with 'static char', but found the line "
-                  "'%s'.", line);
-       /* Read the hints line */
--    getline(line, sizeof(line), stream);
-+    get_line(line, sizeof(line), stream);
-     /* skip the comment line if any */
-     if (!strncmp(line, "/*", 2)) {
-         while (!strstr(line, "*/"))
--            getline(line, sizeof(line), stream);
--        getline(line, sizeof(line), stream);
-+            get_line(line, sizeof(line), stream);
-+        get_line(line, sizeof(line), stream);
-     }
-     if (sscanf(line, "\"%d %d %d %d\",", widthP, heightP,
-                ncolorsP, chars_per_pixelP) != 4)
-@@ -427,10 +427,10 @@
-         *transparentP = -1;  /* initial value */
-         for (seqNum = 0; seqNum < *ncolorsP; seqNum++) {
--            getline(line, sizeof(line), stream);
-+            get_line(line, sizeof(line), stream);
-             /* skip the comment line if any */
-             if (!strncmp(line, "/*", 2))
--                getline(line, sizeof(line), stream);
-+                get_line(line, sizeof(line), stream);
-             
-             interpretXpm3ColorTableLine(line, seqNum, *chars_per_pixelP, 
-                                         *colorsP, *ptabP, transparentP);
-@@ -445,7 +445,7 @@
-                pixel ** const colorsP, int ** const ptabP) {
- /*----------------------------------------------------------------------------
-   Read the header of the XPM file on stream 'stream'.  Assume the
--  getline() stream is presently positioned to the beginning of the
-+  get_line() stream is presently positioned to the beginning of the
-   file and it is a Version 1 XPM file.  Leave the stream positioned
-   after the header.
-   
-@@ -464,7 +464,7 @@
-     /* Read the initial defines. */
-     processedStaticChar = FALSE;
-     while (!processedStaticChar) {
--        getline(line, sizeof(line), stream);
-+        get_line(line, sizeof(line), stream);
-         if (sscanf(line, "#define %s %d", str1, &v) == 2) {
-             char *t1;
-@@ -512,7 +512,7 @@
-     /* If there's a monochrome color table, skip it. */
-     if (!strncmp(t1, "mono", 4)) {
-         for (;;) {
--            getline(line, sizeof(line), stream);
-+            get_line(line, sizeof(line), stream);
-             if (!strncmp(line, "static char", 11))
-                 break;
-         }
-@@ -533,7 +533,7 @@
-     /* Read color table. */
-     for (i = 0; i < *ncolorsP; ++i) {
--        getline(line, sizeof(line), stream);
-+        get_line(line, sizeof(line), stream);
-         if ((t1 = strchr(line, '"')) == NULL)
-             pm_error("D error scanning color table");
-@@ -569,7 +569,7 @@
-        "static char ...").
-     */
-     for (;;) {
--        getline(line, sizeof(line), stream);
-+        get_line(line, sizeof(line), stream);
-         if (strncmp(line, "static char", 11) == 0)
-             break;
-     }
-@@ -660,7 +660,7 @@
-     backup = FALSE;
-     /* Read the header line */
--    getline(line, sizeof(line), stream);
-+    get_line(line, sizeof(line), stream);
-     backup = TRUE;  /* back up so next read reads this line again */
-     
-     rc = sscanf(line, "/* %s */", str1);
-@@ -681,7 +681,7 @@
-         pm_error("Could not get %d bytes of memory for image", totalpixels);
-     cursor = *dataP;
-     maxcursor = *dataP + totalpixels - 1;
--      getline(line, sizeof(line), stream); 
-+      get_line(line, sizeof(line), stream); 
-         /* read next line (first line may not always start with comment) */
-     while (cursor <= maxcursor) {
-         if (strncmp(line, "/*", 2) == 0) {
-@@ -691,7 +691,7 @@
-                              ncolors, ptab, &cursor, maxcursor);
-         }
-         if (cursor <= maxcursor)
--            getline(line, sizeof(line), stream);
-+            get_line(line, sizeof(line), stream);
-     }
-     if (ptab) free(ptab);
- }
-
-Thanks,
-
--- 
-Colin Watson                                       [cjwatson@ubuntu.com]
-
-
-
-
diff --git a/src/patches/openssl-1.0.0-beta5-enginesdir.patch b/src/patches/openssl-1.0.0-beta5-enginesdir.patch
deleted file mode 100644 (file)
index d942d6e..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-diff -up openssl-1.0.0-beta5/Configure.enginesdir openssl-1.0.0-beta5/Configure
---- openssl-1.0.0-beta5/Configure.enginesdir   2010-01-20 18:07:05.000000000 +0100
-+++ openssl-1.0.0-beta5/Configure      2010-01-20 18:10:48.000000000 +0100
-@@ -622,6 +622,7 @@ my $idx_multilib = $idx++;
- my $prefix="";
- my $libdir="";
- my $openssldir="";
-+my $enginesdir="";
- my $exe_ext="";
- my $install_prefix= "$ENV{'INSTALL_PREFIX'}";
- my $cross_compile_prefix="";
-@@ -833,6 +834,10 @@ PROCESS_ARGS:
-                               {
-                               $openssldir=$1;
-                               }
-+                      elsif (/^--enginesdir=(.*)$/)
-+                              {
-+                              $enginesdir=$1;
-+                              }
-                       elsif (/^--install.prefix=(.*)$/)
-                               {
-                               $install_prefix=$1;
-@@ -1053,7 +1058,7 @@ chop $prefix if $prefix =~ /.\/$/;
- $openssldir=$prefix . "/ssl" if $openssldir eq "";
- $openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
--
-+$enginesdir="$prefix/lib/engines" if $enginesdir eq "";
- print "IsMK1MF=$IsMK1MF\n";
-@@ -1673,7 +1678,7 @@ while (<IN>)
-               }
-       elsif   (/^#define\s+ENGINESDIR/)
-               {
--              my $foo = "$prefix/$libdir/engines";
-+              my $foo = "$enginesdir";
-               $foo =~ s/\\/\\\\/g;
-               print OUT "#define ENGINESDIR \"$foo\"\n";
-               }
-diff -up openssl-1.0.0-beta5/engines/Makefile.enginesdir openssl-1.0.0-beta5/engines/Makefile
---- openssl-1.0.0-beta5/engines/Makefile.enginesdir    2010-01-16 21:06:09.000000000 +0100
-+++ openssl-1.0.0-beta5/engines/Makefile       2010-01-20 18:07:05.000000000 +0100
-@@ -124,7 +124,7 @@ install:
-                               sfx=".so"; \
-                               cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
-                         fi; \
--                        chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
-+                        chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
-                         mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \
-               done; \
-       fi
diff --git a/src/patches/openssl-1.0.2a-rpmbuild.patch b/src/patches/openssl-1.0.2a-rpmbuild.patch
deleted file mode 100644 (file)
index db1460c..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-diff -up openssl-1.0.2e/Configure.rpmbuild openssl-1.0.2e/Configure
---- openssl-1.0.2e/Configure.rpmbuild  2015-12-03 15:04:23.000000000 +0100
-+++ openssl-1.0.2e/Configure   2015-12-04 13:20:22.996835604 +0100
-@@ -365,8 +365,8 @@ my %table=(
- ####
- # *-generic* is endian-neutral target, but ./config is free to
- # throw in -D[BL]_ENDIAN, whichever appropriate...
--"linux-generic32","gcc:-O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
--"linux-ppc",  "gcc:-DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-generic32","gcc:-Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
-+"linux-ppc",  "gcc:-DB_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
- #######################################################################
- # Note that -march is not among compiler options in below linux-armv4
-@@ -395,31 +395,31 @@ my %table=(
- #
- #       ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
- #
--"linux-armv4",        "gcc: -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
--"linux-aarch64","gcc: -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-armv4",        "gcc:-Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
-+"linux-aarch64","gcc:-DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
- # Configure script adds minimally required -march for assembly support,
- # if no -march was specified at command line. mips32 and mips64 below
- # refer to contemporary MIPS Architecture specifications, MIPS32 and
- # MIPS64, rather than to kernel bitness.
--"linux-mips32",       "gcc:-mabi=32 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
--"linux-mips64",   "gcc:-mabi=n32 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:n32:dlfcn:linux-shared:-fPIC:-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
--"linux64-mips64",   "gcc:-mabi=64 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:64:dlfcn:linux-shared:-fPIC:-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-+"linux-mips32",       "gcc:-mabi=32 -Wall \$(RPM_OPT_FLAGS) -DBN_DIV3W::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
-+"linux-mips64",   "gcc:-mabi=n32 -Wall \$(RPM_OPT_FLAGS) -DBN_DIV3W::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:n32:dlfcn:linux-shared:-fPIC:-mabi=n32 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::32",
-+"linux64-mips64",   "gcc:-mabi=64 -Wall \$(RPM_OPT_FLAGS) -DBN_DIV3W::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:64:dlfcn:linux-shared:-fPIC:-mabi=64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
- #### IA-32 targets...
- "linux-ia32-icc",     "icc:-DL_ENDIAN -O2::-D_REENTRANT::-ldl -no_cpprt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
--"linux-elf",  "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-elf",  "gcc:-DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
- "linux-aout", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out",
- ####
--"linux-generic64","gcc:-O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
--"linux-ppc64",        "gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
--"linux-ppc64le","gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::",
--"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-generic64","gcc:-Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
-+"linux-ppc64",        "gcc:-m64 -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
-+"linux-ppc64le","gcc:-m64 -DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
-+"linux-ia64", "gcc:-DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
- "linux-ia64-icc","icc:-DL_ENDIAN -O2 -Wall::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
--"linux-x86_64",       "gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-+"linux-x86_64",       "gcc:-m64 -DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
- "linux-x86_64-clang", "clang: -m64 -DL_ENDIAN -O3 -Wall -Wextra $clang_disabled_warnings -Qunused-arguments::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
- "debug-linux-x86_64-clang",   "clang: -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -g -Wall -Wextra $clang_disabled_warnings -Qunused-arguments::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
- "linux-x86_64-icc", "icc:-DL_ENDIAN -O2::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
- "linux-x32",  "gcc:-mx32 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-mx32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::x32",
--"linux64-s390x",      "gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-+"linux64-s390x",      "gcc:-m64 -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
- #### So called "highgprs" target for z/Architecture CPUs
- # "Highgprs" is kernel feature first implemented in Linux 2.6.32, see
- # /proc/cpuinfo. The idea is to preserve most significant bits of
-@@ -437,12 +437,12 @@ my %table=(
- #### SPARC Linux setups
- # Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
- # assisted with debugging of following two configs.
--"linux-sparcv8","gcc:-mcpu=v8 -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-sparcv8","gcc:-mcpu=v8 -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS) -DBN_DIV2W::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
- # it's a real mess with -mcpu=ultrasparc option under Linux, but
- # -Wa,-Av8plus should do the trick no matter what.
--"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS) -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
- # GCC 3.1 is a requirement
--"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-+"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT:ULTRASPARC:-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
- #### Alpha Linux with GNU C and Compaq C setups
- # Special notes:
- # - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
-@@ -1767,7 +1767,7 @@ while (<IN>)
-       elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
-               {
-               my $sotmp = $1;
--              s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
-+              s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_SONAMEVER) .s$sotmp/;
-               }
-       elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
-               {
-diff -up openssl-1.0.2e/Makefile.org.rpmbuild openssl-1.0.2e/Makefile.org
---- openssl-1.0.2e/Makefile.org.rpmbuild       2015-12-03 15:04:23.000000000 +0100
-+++ openssl-1.0.2e/Makefile.org        2015-12-04 13:18:44.913538616 +0100
-@@ -10,6 +10,7 @@ SHLIB_VERSION_HISTORY=
- SHLIB_MAJOR=
- SHLIB_MINOR=
- SHLIB_EXT=
-+SHLIB_SONAMEVER=10
- PLATFORM=dist
- OPTIONS=
- CONFIGURE_ARGS=
-@@ -341,10 +342,9 @@ clean-shared:
- link-shared:
-       @ set -e; for i in $(SHLIBDIRS); do \
-               $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \
--                      LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
-+                      LIBNAME=$$i LIBVERSION=$(SHLIB_SONAMEVER) \
-                       LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
-                       symlink.$(SHLIB_TARGET); \
--              libs="$$libs -l$$i"; \
-       done
- build-shared: do_$(SHLIB_TARGET) link-shared
-@@ -355,7 +355,7 @@ do_$(SHLIB_TARGET):
-                       libs="$(LIBKRB5) $$libs"; \
-               fi; \
-               $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
--                      LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
-+                      LIBNAME=$$i LIBVERSION=$(SHLIB_SONAMEVER) \
-                       LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
-                       LIBDEPS="$$libs $(EX_LIBS)" \
-                       link_a.$(SHLIB_TARGET); \
diff --git a/src/patches/openssl-1.0.2a_disable_ssse3_for_amd.patch b/src/patches/openssl-1.0.2a_disable_ssse3_for_amd.patch
deleted file mode 100644 (file)
index 097cc80..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur openssl-1.0.2a.org/crypto/x86cpuid.pl openssl-1.0.2a/crypto/x86cpuid.pl
---- openssl-1.0.2a.org/crypto/x86cpuid.pl      2015-03-19 14:30:36.000000000 +0100
-+++ openssl-1.0.2a/crypto/x86cpuid.pl  2015-04-28 13:47:57.853521020 +0200
-@@ -71,6 +71,7 @@
-       &mov    ("eax",1);
-       &xor    ("ecx","ecx");
-       &cpuid  ();
-+      &and    ("ecx",0xfffffdff);     # clear SSSE3 because it is incredible slow on AMD's
-       &bt     ("edx",28);
-       &jnc    (&label("generic"));
-       &shr    ("ebx",16);
diff --git a/src/patches/openssl-1.0.2g-disable-sslv2v3.patch b/src/patches/openssl-1.0.2g-disable-sslv2v3.patch
deleted file mode 100644 (file)
index 06f5132..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -up openssl-1.0.2g/ssl/ssl_lib.c.v2v3 openssl-1.0.2g/ssl/ssl_lib.c
---- openssl-1.0.2g/ssl/ssl_lib.c.v2v3  2016-03-01 16:38:26.879142021 +0100
-+++ openssl-1.0.2g/ssl/ssl_lib.c       2016-03-01 16:41:32.977353769 +0100
-@@ -2055,11 +2055,11 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *m
-     ret->options |= SSL_OP_LEGACY_SERVER_CONNECT;
-     /*
--     * Disable SSLv2 by default, callers that want to enable SSLv2 will have to
--     * explicitly clear this option via either of SSL_CTX_clear_options() or
-+     * Disable SSLv2 and SSLv3 by default, callers that want to enable these will have to
-+     * explicitly clear these options via either of SSL_CTX_clear_options() or
-      * SSL_clear_options().
-      */
--    ret->options |= SSL_OP_NO_SSLv2;
-+    ret->options |= SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
-     return (ret);
-  err:
diff --git a/src/patches/pam-0.99.10.0-rlimit-build-fix.patch b/src/patches/pam-0.99.10.0-rlimit-build-fix.patch
deleted file mode 100644 (file)
index 5fdee07..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-From 8e508f23bf5ed727649c99bbd540f7b1c2c2bd35 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Stevan=20Baji=C4=87?= <stevan@bajic.ch>
-Date: Mon, 9 Jul 2012 09:43:11 +0200
-Subject: [PATCH] RLIMIT_* variables are no longer defined unless you
- explicitly include sys/resource.h.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu>
-
-modules/pam_unix/pam_unix_acct.c: Include sys/resource.h.
----
- modules/pam_unix/pam_unix_acct.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/modules/pam_unix/pam_unix_acct.c b/modules/pam_unix/pam_unix_acct.c
-index 8e90cc9..4a362f8 100644
---- a/modules/pam_unix/pam_unix_acct.c
-+++ b/modules/pam_unix/pam_unix_acct.c
-@@ -41,6 +41,7 @@
- #include <string.h>
- #include <unistd.h>
- #include <sys/types.h>
-+#include <sys/resource.h>
- #include <syslog.h>
- #include <pwd.h>
- #include <shadow.h>
diff --git a/src/patches/pcre-8.38-upstream_fixes-1.patch b/src/patches/pcre-8.38-upstream_fixes-1.patch
deleted file mode 100644 (file)
index d366e22..0000000
+++ /dev/null
@@ -1,1408 +0,0 @@
-Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
-Date: 2016-03-16
-Initial Package Version: 8.38
-Upstream Status: Applied
-Origin: Upstream, backported to 8.38 by Petr Písař at redhat
-Description: Various fixes, including for CVE-2016-1263 and many other
-bugs which have been fixed upstream.  Many of these bugs were found by
-fuzzing, upstream is trying to persuade its users to move to pcre2 and
-giving low priority to further pcre1 maintenance releases.
-
-From 3c80e02cd464ea049e117b423fd48fab294c51a9 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Thu, 26 Nov 2015 20:29:13 +0000
-Subject: [PATCH] Fix auto-callout (?# comment bug.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1611 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Pisar: Ported to 8.38.
-
-diff --git a/pcre_compile.c b/pcre_compile.c
-index 4d3b313..3360a8b 100644
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -4699,6 +4699,23 @@ for (;; ptr++)
-       }
-     }
-+  /* Skip over (?# comments. We need to do this here because we want to know if
-+  the next thing is a quantifier, and these comments may come between an item
-+  and its quantifier. */
-+
-+  if (c == CHAR_LEFT_PARENTHESIS && ptr[1] == CHAR_QUESTION_MARK &&
-+      ptr[2] == CHAR_NUMBER_SIGN)
-+    {
-+    ptr += 3;
-+    while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
-+    if (*ptr == CHAR_NULL)
-+      {
-+      *errorcodeptr = ERR18;
-+      goto FAILED;
-+      }
-+    continue;
-+    }
-+
-   /* See if the next thing is a quantifier. */
-   is_quantifier =
-@@ -6529,21 +6546,6 @@ for (;; ptr++)
-     case CHAR_LEFT_PARENTHESIS:
-     ptr++;
--    /* First deal with comments. Putting this code right at the start ensures
--    that comments have no bad side effects. */
--
--    if (ptr[0] == CHAR_QUESTION_MARK && ptr[1] == CHAR_NUMBER_SIGN)
--      {
--      ptr += 2;
--      while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
--      if (*ptr == CHAR_NULL)
--        {
--        *errorcodeptr = ERR18;
--        goto FAILED;
--        }
--      continue;
--      }
--
-     /* Now deal with various "verbs" that can be introduced by '*'. */
-     if (ptr[0] == CHAR_ASTERISK && (ptr[1] == ':'
-diff --git a/testdata/testinput2 b/testdata/testinput2
-index e2e520f..92e3359 100644
---- a/testdata/testinput2
-+++ b/testdata/testinput2
-@@ -4217,4 +4217,12 @@ backtracking verbs. --/
- /a[[:punct:]b]/BZ
-+/L(?#(|++<!(2)?/BZ
-+
-+/L(?#(|++<!(2)?/BOZ
-+
-+/L(?#(|++<!(2)?/BCZ
-+
-+/L(?#(|++<!(2)?/BCOZ
-+
- /-- End of testinput2 --/
-diff --git a/testdata/testinput7 b/testdata/testinput7
-index e411a4b..00b9738 100644
---- a/testdata/testinput7
-+++ b/testdata/testinput7
-@@ -853,4 +853,8 @@ of case for anything other than the ASCII letters. --/
- /a[b[:punct:]]/8WBZ
-+/L(?#(|++<!(2)?/B8COZ
-+
-+/L(?#(|++<!(2)?/B8WCZ
-+
- /-- End of testinput7 --/
-diff --git a/testdata/testoutput2 b/testdata/testoutput2
-index 85c565d..2cf7a90 100644
---- a/testdata/testoutput2
-+++ b/testdata/testoutput2
-@@ -14574,4 +14574,40 @@ No match
-         End
- ------------------------------------------------------------------
-+/L(?#(|++<!(2)?/BZ
-+------------------------------------------------------------------
-+        Bra
-+        L?+
-+        Ket
-+        End
-+------------------------------------------------------------------
-+
-+/L(?#(|++<!(2)?/BOZ
-+------------------------------------------------------------------
-+        Bra
-+        L?
-+        Ket
-+        End
-+------------------------------------------------------------------
-+
-+/L(?#(|++<!(2)?/BCZ
-+------------------------------------------------------------------
-+        Bra
-+        Callout 255 0 14
-+        L?+
-+        Callout 255 14 0
-+        Ket
-+        End
-+------------------------------------------------------------------
-+
-+/L(?#(|++<!(2)?/BCOZ
-+------------------------------------------------------------------
-+        Bra
-+        Callout 255 0 14
-+        L?
-+        Callout 255 14 0
-+        Ket
-+        End
-+------------------------------------------------------------------
-+
- /-- End of testinput2 --/
-diff --git a/testdata/testoutput7 b/testdata/testoutput7
-index cc9ebdd..fdfff64 100644
---- a/testdata/testoutput7
-+++ b/testdata/testoutput7
-@@ -2348,4 +2348,24 @@ No match
-         End
- ------------------------------------------------------------------
-+/L(?#(|++<!(2)?/B8COZ
-+------------------------------------------------------------------
-+        Bra
-+        Callout 255 0 14
-+        L?
-+        Callout 255 14 0
-+        Ket
-+        End
-+------------------------------------------------------------------
-+
-+/L(?#(|++<!(2)?/B8WCZ
-+------------------------------------------------------------------
-+        Bra
-+        Callout 255 0 14
-+        L?+
-+        Callout 255 14 0
-+        Ket
-+        End
-+------------------------------------------------------------------
-+
- /-- End of testinput7 --/
--- 
-2.4.3
-
-From ef6b10fcde41a2687f38d4a9ff2886b037948a1b Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Fri, 27 Nov 2015 17:13:13 +0000
-Subject: [PATCH 1/5] Fix negated POSIX class within negated overall class UCP
- bug.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1612 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-diff --git a/pcre_compile.c b/pcre_compile.c
-index 3360a8b..3670f1e 100644
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -5063,20 +5063,22 @@ for (;; ptr++)
-             ptr = tempptr + 1;
-             continue;
--            /* For the other POSIX classes (ascii, xdigit) we are going to fall
--            through to the non-UCP case and build a bit map for characters with
--            code points less than 256. If we are in a negated POSIX class
--            within a non-negated overall class, characters with code points
--            greater than 255 must all match. In the special case where we have
--            not yet generated any xclass data, and this is the final item in
--            the overall class, we need do nothing: later on, the opcode
-+            /* For the other POSIX classes (ascii, cntrl, xdigit) we are going
-+            to fall through to the non-UCP case and build a bit map for
-+            characters with code points less than 256. If we are in a negated
-+            POSIX class, characters with code points greater than 255 must
-+            either all match or all not match. In the special case where we
-+            have not yet generated any xclass data, and this is the final item
-+            in the overall class, we need do nothing: later on, the opcode
-             OP_NCLASS will be used to indicate that characters greater than 255
-             are acceptable. If we have already seen an xclass item or one may
-             follow (we have to assume that it might if this is not the end of
--            the class), explicitly match all wide codepoints. */
-+            the class), explicitly list all wide codepoints, which will then
-+            either not match or match, depending on whether the class is or is
-+            not negated. */
-             default:
--            if (!negate_class && local_negate &&
-+            if (local_negate &&
-                 (xclass || tempptr[2] != CHAR_RIGHT_SQUARE_BRACKET))
-               {
-               *class_uchardata++ = XCL_RANGE;
-diff --git a/testdata/testinput6 b/testdata/testinput6
-index aeb62a0..a178d3d 100644
---- a/testdata/testinput6
-+++ b/testdata/testinput6
-@@ -1553,4 +1553,13 @@
-     \x{200}
-     \x{37e}
-+/[^[:^ascii:]\d]/8W
-+    a
-+    ~
-+    0
-+    \a
-+    \x{7f}
-+    \x{389}
-+    \x{20ac}
-+
- /-- End of testinput6 --/
-diff --git a/testdata/testoutput6 b/testdata/testoutput6
-index beb85aa..b64dc0d 100644
---- a/testdata/testoutput6
-+++ b/testdata/testoutput6
-@@ -2557,4 +2557,20 @@ No match
-     \x{37e}
-  0: \x{37e}
-+/[^[:^ascii:]\d]/8W
-+    a
-+ 0: a
-+    ~
-+ 0: ~
-+    0
-+No match
-+    \a
-+ 0: \x{07}
-+    \x{7f}
-+ 0: \x{7f}
-+    \x{389}
-+No match
-+    \x{20ac}
-+No match
-+
- /-- End of testinput6 --/
--- 
-2.4.3
-
-From bfc1dfa660c24dc7a75108d934290e50d7db2719 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Fri, 27 Nov 2015 17:41:04 +0000
-Subject: [PATCH 2/5] Fix bug for isolated \E between an item and its qualifier
- when auto callout is set.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1613 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcre_compile.c b/pcre_compile.c
-index 3670f1e..5786cd3 100644
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -4645,9 +4645,10 @@ for (;; ptr++)
-     goto FAILED;
-     }
--  /* If in \Q...\E, check for the end; if not, we have a literal */
-+  /* If in \Q...\E, check for the end; if not, we have a literal. Otherwise an
-+  isolated \E is ignored. */
--  if (inescq && c != CHAR_NULL)
-+  if (c != CHAR_NULL)
-     {
-     if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E)
-       {
-@@ -4655,7 +4656,7 @@ for (;; ptr++)
-       ptr++;
-       continue;
-       }
--    else
-+    else if (inescq)
-       {
-       if (previous_callout != NULL)
-         {
-@@ -4670,7 +4671,6 @@ for (;; ptr++)
-         }
-       goto NORMAL_CHAR;
-       }
--    /* Control does not reach here. */
-     }
-   /* In extended mode, skip white space and comments. We need a loop in order
-diff --git a/testdata/testinput2 b/testdata/testinput2
-index 92e3359..e8ca4fe 100644
---- a/testdata/testinput2
-+++ b/testdata/testinput2
-@@ -4225,4 +4225,6 @@ backtracking verbs. --/
- /L(?#(|++<!(2)?/BCOZ
-+/(A*)\E+/CBZ
-+
- /-- End of testinput2 --/
-diff --git a/testdata/testoutput2 b/testdata/testoutput2
-index 2cf7a90..09756b8 100644
---- a/testdata/testoutput2
-+++ b/testdata/testoutput2
-@@ -14610,4 +14610,18 @@ No match
-         End
- ------------------------------------------------------------------
-+/(A*)\E+/CBZ
-+------------------------------------------------------------------
-+        Bra
-+        Callout 255 0 7
-+        SCBra 1
-+        Callout 255 1 2
-+        A*
-+        Callout 255 3 0
-+        KetRmax
-+        Callout 255 7 0
-+        Ket
-+        End
-+------------------------------------------------------------------
-+
- /-- End of testinput2 --/
--- 
-2.4.3
-
-From 108377b836fc29a84f5286287629d96549b1c777 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Sun, 29 Nov 2015 17:38:25 +0000
-Subject: [PATCH 3/5] Give error for regexec with pmatch=NULL and REG_STARTEND
- set.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1614 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcreposix.c b/pcreposix.c
-index f024423..dcc13ef 100644
---- a/pcreposix.c
-+++ b/pcreposix.c
-@@ -364,6 +364,7 @@ start location rather than being passed as a PCRE "starting offset". */
- if ((eflags & REG_STARTEND) != 0)
-   {
-+  if (pmatch == NULL) return REG_INVARG; 
-   so = pmatch[0].rm_so;
-   eo = pmatch[0].rm_eo;
-   }
--- 
-2.4.3
-
-From e347b40d5bb12f7ef1e632aa649571a107be7d8a Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Sun, 29 Nov 2015 17:46:23 +0000
-Subject: [PATCH 4/5] Allow for up to 32-bit numbers in the ordin() function in
- pcregrep.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1615 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcregrep.c b/pcregrep.c
-index 64986b0..cd53c64 100644
---- a/pcregrep.c
-+++ b/pcregrep.c
-@@ -2437,7 +2437,7 @@ return options;
- static char *
- ordin(int n)
- {
--static char buffer[8];
-+static char buffer[14];
- char *p = buffer;
- sprintf(p, "%d", n);
- while (*p != 0) p++;
--- 
-2.4.3
-
-From e78ad4264b16988b826bd2939a1781c1165a92d9 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Mon, 30 Nov 2015 17:44:45 +0000
-Subject: [PATCH 5/5] Fix \Q\E before qualifier bug when auto callouts are
- enabled.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1616 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcre_compile.c b/pcre_compile.c
-index 5786cd3..beed46b 100644
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -4671,17 +4671,27 @@ for (;; ptr++)
-         }
-       goto NORMAL_CHAR;
-       }
-+      
-+    /* Check for the start of a \Q...\E sequence. We must do this here rather
-+    than later in case it is immediately followed by \E, which turns it into a
-+    "do nothing" sequence. */                                            
-+                                                                          
-+    if (c == CHAR_BACKSLASH && ptr[1] == CHAR_Q)
-+      {                                                                   
-+      inescq = TRUE;                                                      
-+      ptr++;                                                  
-+      continue;
-+      }           
-     }
--  /* In extended mode, skip white space and comments. We need a loop in order
--  to check for more white space and more comments after a comment. */
-+  /* In extended mode, skip white space and comments. */
-   if ((options & PCRE_EXTENDED) != 0)
-     {
--    for (;;)
-+    const pcre_uchar *wscptr = ptr;
-+    while (MAX_255(c) && (cd->ctypes[c] & ctype_space) != 0) c = *(++ptr);
-+    if (c == CHAR_NUMBER_SIGN)
-       {
--      while (MAX_255(c) && (cd->ctypes[c] & ctype_space) != 0) c = *(++ptr);
--      if (c != CHAR_NUMBER_SIGN) break;
-       ptr++;
-       while (*ptr != CHAR_NULL)
-         {
-@@ -4695,7 +4705,15 @@ for (;; ptr++)
-         if (utf) FORWARDCHAR(ptr);
- #endif
-         }
--      c = *ptr;     /* Either NULL or the char after a newline */
-+      }
-+
-+    /* If we skipped any characters, restart the loop. Otherwise, we didn't see
-+    a comment. */
-+
-+    if (ptr > wscptr)
-+      {
-+      ptr--;
-+      continue;
-       }
-     }
-@@ -7900,16 +7918,6 @@ for (;; ptr++)
-       c = ec;
-     else
-       {
--      if (escape == ESC_Q)            /* Handle start of quoted string */
--        {
--        if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E)
--          ptr += 2;               /* avoid empty string */
--            else inescq = TRUE;
--        continue;
--        }
--
--      if (escape == ESC_E) continue;  /* Perl ignores an orphan \E */
--
-       /* For metasequences that actually match a character, we disable the
-       setting of a first character if it hasn't already been set. */
-diff --git a/testdata/testinput2 b/testdata/testinput2
-index e8ca4fe..3a1134f 100644
---- a/testdata/testinput2
-+++ b/testdata/testinput2
-@@ -4227,4 +4227,6 @@ backtracking verbs. --/
- /(A*)\E+/CBZ
-+/()\Q\E*]/BCZ
-+
- /-- End of testinput2 --/
-diff --git a/testdata/testoutput2 b/testdata/testoutput2
-index 09756b8..ac33cc4 100644
---- a/testdata/testoutput2
-+++ b/testdata/testoutput2
-@@ -14624,4 +14624,19 @@ No match
-         End
- ------------------------------------------------------------------
-+/()\Q\E*]/BCZ
-+------------------------------------------------------------------
-+        Bra
-+        Callout 255 0 7
-+        Brazero
-+        SCBra 1
-+        Callout 255 1 0
-+        KetRmax
-+        Callout 255 7 1
-+        ]
-+        Callout 255 8 0
-+        Ket
-+        End
-+------------------------------------------------------------------
-+
- /-- End of testinput2 --/
--- 
-2.4.3
-
-From 46ed1a703b067e5b679eacf6500a54dae35f8130 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Thu, 3 Dec 2015 17:05:40 +0000
-Subject: [PATCH] Fix /x bug when pattern starts with white space and (?-x)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1617 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcre_compile.c b/pcre_compile.c
-index beed46b..57719b9 100644
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -7607,39 +7607,15 @@ for (;; ptr++)
-         newoptions = (options | set) & (~unset);
-         /* If the options ended with ')' this is not the start of a nested
--        group with option changes, so the options change at this level. If this
--        item is right at the start of the pattern, the options can be
--        abstracted and made external in the pre-compile phase, and ignored in
--        the compile phase. This can be helpful when matching -- for instance in
--        caseless checking of required bytes.
--
--        If the code pointer is not (cd->start_code + 1 + LINK_SIZE), we are
--        definitely *not* at the start of the pattern because something has been
--        compiled. In the pre-compile phase, however, the code pointer can have
--        that value after the start, because it gets reset as code is discarded
--        during the pre-compile. However, this can happen only at top level - if
--        we are within parentheses, the starting BRA will still be present. At
--        any parenthesis level, the length value can be used to test if anything
--        has been compiled at that level. Thus, a test for both these conditions
--        is necessary to ensure we correctly detect the start of the pattern in
--        both phases.
--
-+        group with option changes, so the options change at this level. 
-         If we are not at the pattern start, reset the greedy defaults and the
-         case value for firstchar and reqchar. */
-         if (*ptr == CHAR_RIGHT_PARENTHESIS)
-           {
--          if (code == cd->start_code + 1 + LINK_SIZE &&
--               (lengthptr == NULL || *lengthptr == 2 + 2*LINK_SIZE))
--            {
--            cd->external_options = newoptions;
--            }
--          else
--            {
--            greedy_default = ((newoptions & PCRE_UNGREEDY) != 0);
--            greedy_non_default = greedy_default ^ 1;
--            req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS:0;
--            }
-+          greedy_default = ((newoptions & PCRE_UNGREEDY) != 0);
-+          greedy_non_default = greedy_default ^ 1;
-+          req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS:0;
-           /* Change options at this level, and pass them back for use
-           in subsequent branches. */
-diff --git a/testdata/testoutput2 b/testdata/testoutput2
-index ac33cc4..6c42897 100644
---- a/testdata/testoutput2
-+++ b/testdata/testoutput2
-@@ -419,7 +419,7 @@ Need char = '>'
- /(?U)<.*>/I
- Capturing subpattern count = 0
--Options: ungreedy
-+No options
- First char = '<'
- Need char = '>'
-     abc<def>ghi<klm>nop
-@@ -443,7 +443,7 @@ Need char = '='
- /(?U)={3,}?/I
- Capturing subpattern count = 0
--Options: ungreedy
-+No options
- First char = '='
- Need char = '='
-     abc========def
-@@ -477,7 +477,7 @@ Failed: lookbehind assertion is not fixed length at offset 12
- /(?i)abc/I
- Capturing subpattern count = 0
--Options: caseless
-+No options
- First char = 'a' (caseless)
- Need char = 'c' (caseless)
-@@ -489,7 +489,7 @@ No need char
- /(?i)^1234/I
- Capturing subpattern count = 0
--Options: anchored caseless
-+Options: anchored
- No first char
- No need char
-@@ -502,7 +502,7 @@ No need char
- /(?s).*/I
- Capturing subpattern count = 0
- May match empty string
--Options: anchored dotall
-+Options: anchored
- No first char
- No need char
-@@ -516,7 +516,7 @@ Starting chars: a b c d
- /(?i)[abcd]/IS
- Capturing subpattern count = 0
--Options: caseless
-+No options
- No first char
- No need char
- Subject length lower bound = 1
-@@ -524,7 +524,7 @@ Starting chars: A B C D a b c d
- /(?m)[xy]|(b|c)/IS
- Capturing subpattern count = 1
--Options: multiline
-+No options
- No first char
- No need char
- Subject length lower bound = 1
-@@ -538,7 +538,7 @@ No need char
- /(?i)(^a|^b)/Im
- Capturing subpattern count = 1
--Options: caseless multiline
-+Options: multiline
- First char at start or follows newline
- No need char
-@@ -1179,7 +1179,7 @@ No need char
-         End
- ------------------------------------------------------------------
- Capturing subpattern count = 1
--Options: anchored dotall
-+Options: anchored
- No first char
- No need char
-@@ -2735,7 +2735,7 @@ No match
-         End
- ------------------------------------------------------------------
- Capturing subpattern count = 0
--Options: caseless extended
-+Options: extended
- First char = 'a' (caseless)
- Need char = 'c' (caseless)
-@@ -2748,7 +2748,7 @@ Need char = 'c' (caseless)
-         End
- ------------------------------------------------------------------
- Capturing subpattern count = 0
--Options: caseless extended
-+Options: extended
- First char = 'a' (caseless)
- Need char = 'c' (caseless)
-@@ -3095,7 +3095,7 @@ Need char = 'b'
-         End
- ------------------------------------------------------------------
- Capturing subpattern count = 0
--Options: ungreedy
-+No options
- First char = 'x'
- Need char = 'b'
-     xaaaab
-@@ -3497,7 +3497,7 @@ Need char = 'c'
- /(?i)[ab]/IS
- Capturing subpattern count = 0
--Options: caseless
-+No options
- No first char
- No need char
- Subject length lower bound = 1
-@@ -6299,7 +6299,7 @@ Capturing subpattern count = 3
- Named capturing subpatterns:
-   A   2
-   A   3
--Options: anchored dupnames
-+Options: anchored
- Duplicate name status changes
- No first char
- No need char
--- 
-2.4.3
-
-From db1fb68feddc9afe6f8822d099fa9ff25e3ea8e7 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Sat, 5 Dec 2015 16:30:14 +0000
-Subject: [PATCH] Fix copy named substring bug.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1618 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-diff --git a/pcre_get.c b/pcre_get.c
-index 8094b34..41eda9c 100644
---- a/pcre_get.c
-+++ b/pcre_get.c
-@@ -250,6 +250,7 @@ Arguments:
-   code         the compiled regex
-   stringname   the name of the capturing substring
-   ovector      the vector of matched substrings
-+  stringcount  number of captured substrings 
- Returns:       the number of the first that is set,
-                or the number of the last one if none are set,
-@@ -258,13 +259,16 @@ Returns:       the number of the first that is set,
- #if defined COMPILE_PCRE8
- static int
--get_first_set(const pcre *code, const char *stringname, int *ovector)
-+get_first_set(const pcre *code, const char *stringname, int *ovector,
-+  int stringcount)
- #elif defined COMPILE_PCRE16
- static int
--get_first_set(const pcre16 *code, PCRE_SPTR16 stringname, int *ovector)
-+get_first_set(const pcre16 *code, PCRE_SPTR16 stringname, int *ovector,
-+  int stringcount)
- #elif defined COMPILE_PCRE32
- static int
--get_first_set(const pcre32 *code, PCRE_SPTR32 stringname, int *ovector)
-+get_first_set(const pcre32 *code, PCRE_SPTR32 stringname, int *ovector,
-+  int stringcount)
- #endif
- {
- const REAL_PCRE *re = (const REAL_PCRE *)code;
-@@ -295,7 +299,7 @@ if (entrysize <= 0) return entrysize;
- for (entry = (pcre_uchar *)first; entry <= (pcre_uchar *)last; entry += entrysize)
-   {
-   int n = GET2(entry, 0);
--  if (ovector[n*2] >= 0) return n;
-+  if (n < stringcount && ovector[n*2] >= 0) return n;
-   }
- return GET2(entry, 0);
- }
-@@ -402,7 +406,7 @@ pcre32_copy_named_substring(const pcre32 *code, PCRE_SPTR32 subject,
-   PCRE_UCHAR32 *buffer, int size)
- #endif
- {
--int n = get_first_set(code, stringname, ovector);
-+int n = get_first_set(code, stringname, ovector, stringcount);
- if (n <= 0) return n;
- #if defined COMPILE_PCRE8
- return pcre_copy_substring(subject, ovector, stringcount, n, buffer, size);
-@@ -619,7 +623,7 @@ pcre32_get_named_substring(const pcre32 *code, PCRE_SPTR32 subject,
-   PCRE_SPTR32 *stringptr)
- #endif
- {
--int n = get_first_set(code, stringname, ovector);
-+int n = get_first_set(code, stringname, ovector, stringcount);
- if (n <= 0) return n;
- #if defined COMPILE_PCRE8
- return pcre_get_substring(subject, ovector, stringcount, n, stringptr);
-diff --git a/testdata/testinput2 b/testdata/testinput2
-index 3a1134f..00ffe32 100644
---- a/testdata/testinput2
-+++ b/testdata/testinput2
-@@ -4229,4 +4229,7 @@ backtracking verbs. --/
- /()\Q\E*]/BCZ
-+/(?<A>)(?J:(?<B>)(?<B>))(?<C>)/
-+    \O\CC
-+
- /-- End of testinput2 --/
-diff --git a/testdata/testoutput2 b/testdata/testoutput2
-index 6c42897..ffb4466 100644
---- a/testdata/testoutput2
-+++ b/testdata/testoutput2
-@@ -14639,4 +14639,9 @@ No match
-         End
- ------------------------------------------------------------------
-+/(?<A>)(?J:(?<B>)(?<B>))(?<C>)/
-+    \O\CC
-+Matched, but too many substrings
-+copy substring C failed -7
-+
- /-- End of testinput2 --/
--- 
-2.4.3
-
-From 40363ebc19baeab160abaaa55dc84322a89ac35a Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Sat, 5 Dec 2015 16:58:46 +0000
-Subject: [PATCH] Fix (by hacking) another length computation issue.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1619 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcre_compile.c b/pcre_compile.c
-index 57719b9..087bf2a 100644
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -7280,7 +7280,7 @@ for (;; ptr++)
-           issue is fixed "properly" in PCRE2. As PCRE1 is now in maintenance
-           only mode, we finesse the bug by allowing more memory always. */
--          *lengthptr += 2 + 2*LINK_SIZE;
-+          *lengthptr += 4 + 4*LINK_SIZE;
-           /* It is even worse than that. The current reference may be to an
-           existing named group with a different number (so apparently not
-diff --git a/testdata/testoutput11-16 b/testdata/testoutput11-16
-index 9a0a12d..280692e 100644
---- a/testdata/testoutput11-16
-+++ b/testdata/testoutput11-16
-@@ -231,7 +231,7 @@ Memory allocation (code space): 73
- ------------------------------------------------------------------
- /(?P<a>a)...(?P=a)bbb(?P>a)d/BM
--Memory allocation (code space): 77
-+Memory allocation (code space): 93
- ------------------------------------------------------------------
-   0  24 Bra
-   2   5 CBra 1
-diff --git a/testdata/testoutput11-32 b/testdata/testoutput11-32
-index 57e5da0..cdbda74 100644
---- a/testdata/testoutput11-32
-+++ b/testdata/testoutput11-32
-@@ -231,7 +231,7 @@ Memory allocation (code space): 155
- ------------------------------------------------------------------
- /(?P<a>a)...(?P=a)bbb(?P>a)d/BM
--Memory allocation (code space): 157
-+Memory allocation (code space): 189
- ------------------------------------------------------------------
-   0  24 Bra
-   2   5 CBra 1
-diff --git a/testdata/testoutput11-8 b/testdata/testoutput11-8
-index 748548a..cb37896 100644
---- a/testdata/testoutput11-8
-+++ b/testdata/testoutput11-8
-@@ -231,7 +231,7 @@ Memory allocation (code space): 45
- ------------------------------------------------------------------
- /(?P<a>a)...(?P=a)bbb(?P>a)d/BM
--Memory allocation (code space): 50
-+Memory allocation (code space): 62
- ------------------------------------------------------------------
-   0  30 Bra
-   3   7 CBra 1
--- 
-2.4.3
-
-From 4f47274a2eb10131d88145ad7fd0eed4027a0c51 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Tue, 8 Dec 2015 11:06:40 +0000
-Subject: [PATCH] Fix get_substring_list() bug when \K is used in an assertion.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1620 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: ported to 8.38.
-
-diff --git a/pcre_get.c b/pcre_get.c
-index 41eda9c..cdd2abc 100644
---- a/pcre_get.c
-+++ b/pcre_get.c
-@@ -461,7 +461,10 @@ pcre_uchar **stringlist;
- pcre_uchar *p;
- for (i = 0; i < double_count; i += 2)
--  size += sizeof(pcre_uchar *) + IN_UCHARS(ovector[i+1] - ovector[i] + 1);
-+  {
-+  size += sizeof(pcre_uchar *) + IN_UCHARS(1);
-+  if (ovector[i+1] > ovector[i]) size += IN_UCHARS(ovector[i+1] - ovector[i]);
-+  } 
- stringlist = (pcre_uchar **)(PUBL(malloc))(size);
- if (stringlist == NULL) return PCRE_ERROR_NOMEMORY;
-@@ -477,7 +480,7 @@ p = (pcre_uchar *)(stringlist + stringcount + 1);
- for (i = 0; i < double_count; i += 2)
-   {
--  int len = ovector[i+1] - ovector[i];
-+  int len = (ovector[i+1] > ovector[i])? (ovector[i+1] - ovector[i]) : 0;
-   memcpy(p, subject + ovector[i], IN_UCHARS(len));
-   *stringlist++ = p;
-   p += len;
-diff --git a/testdata/testinput2 b/testdata/testinput2
-index 00ffe32..967a241 100644
---- a/testdata/testinput2
-+++ b/testdata/testinput2
-@@ -4232,4 +4232,7 @@ backtracking verbs. --/
- /(?<A>)(?J:(?<B>)(?<B>))(?<C>)/
-     \O\CC
-+/(?=a\K)/ 
-+    ring bpattingbobnd $ 1,oern cou \rb\L
-+
- /-- End of testinput2 --/
-diff --git a/testdata/testoutput2 b/testdata/testoutput2
-index ffb4466..5fb28d5 100644
---- a/testdata/testoutput2
-+++ b/testdata/testoutput2
-@@ -14644,4 +14644,10 @@ No match
- Matched, but too many substrings
- copy substring C failed -7
-+/(?=a\K)/ 
-+    ring bpattingbobnd $ 1,oern cou \rb\L
-+Start of matched string is beyond its end - displaying from end to start.
-+ 0: a
-+ 0L 
-+
- /-- End of testinput2 --/
--- 
-2.5.0
-
-From 3da5528b47b88c32224cf9d14d8a4e80cd7a0815 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Sat, 6 Feb 2016 16:54:14 +0000
-Subject: [PATCH] Fix pcretest bad behaviour for callout in lookbehind.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1625 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcretest.c b/pcretest.c
-index 488e419..63869fd 100644
---- a/pcretest.c
-+++ b/pcretest.c
-@@ -2250,7 +2250,7 @@ data is not zero. */
- static int callout(pcre_callout_block *cb)
- {
- FILE *f = (first_callout | callout_extra)? outfile : NULL;
--int i, pre_start, post_start, subject_length;
-+int i, current_position, pre_start, post_start, subject_length;
- if (callout_extra)
-   {
-@@ -2280,14 +2280,19 @@ printed lengths of the substrings. */
- if (f != NULL) fprintf(f, "--->");
-+/* If a lookbehind is involved, the current position may be earlier than the
-+match start. If so, use the match start instead. */
-+
-+current_position = (cb->current_position >= cb->start_match)?
-+  cb->current_position : cb->start_match;
-+
- PCHARS(pre_start, cb->subject, 0, cb->start_match, f);
- PCHARS(post_start, cb->subject, cb->start_match,
--  cb->current_position - cb->start_match, f);
-+  current_position - cb->start_match, f);
- PCHARS(subject_length, cb->subject, 0, cb->subject_length, NULL);
--PCHARSV(cb->subject, cb->current_position,
--  cb->subject_length - cb->current_position, f);
-+PCHARSV(cb->subject, current_position, cb->subject_length - current_position, f);
- if (f != NULL) fprintf(f, "\n");
-@@ -5740,3 +5745,4 @@ return yield;
- }
- /* End of pcretest.c */
-+
-diff --git a/testdata/testinput2 b/testdata/testinput2
-index 967a241..086e0f4 100644
---- a/testdata/testinput2
-+++ b/testdata/testinput2
-@@ -4235,4 +4235,8 @@ backtracking verbs. --/
- /(?=a\K)/ 
-     ring bpattingbobnd $ 1,oern cou \rb\L
-+/(?<=((?C)0))/
-+    9010
-+    abcd
-+     
- /-- End of testinput2 --/
-diff --git a/testdata/testoutput2 b/testdata/testoutput2
-index 5fb28d5..d414a72 100644
---- a/testdata/testoutput2
-+++ b/testdata/testoutput2
-@@ -14650,4 +14650,19 @@ Start of matched string is beyond its end - displaying from end to start.
-  0: a
-  0L 
-+/(?<=((?C)0))/
-+    9010
-+--->9010
-+  0  ^       0
-+  0   ^      0
-+ 0: 
-+ 1: 0
-+    abcd
-+--->abcd
-+  0  ^       0
-+  0   ^      0
-+  0    ^     0
-+  0     ^    0
-+No match
-+     
- /-- End of testinput2 --/
--- 
-2.5.0
-
-From 943a5105b9fe2842851003f692c7077a6cdbeefe Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Wed, 10 Feb 2016 19:13:17 +0000
-Subject: [PATCH] Fix workspace overflow for (*ACCEPT) with deeply nested
- parentheses.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1631 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcre_compile.c b/pcre_compile.c
-index b9a239e..5019854 100644
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -6,7 +6,7 @@
- and semantics are as close as possible to those of the Perl 5 language.
-                        Written by Philip Hazel
--           Copyright (c) 1997-2014 University of Cambridge
-+           Copyright (c) 1997-2016 University of Cambridge
- -----------------------------------------------------------------------------
- Redistribution and use in source and binary forms, with or without
-@@ -560,6 +560,7 @@ static const char error_texts[] =
-   /* 85 */
-   "parentheses are too deeply nested (stack check)\0"
-   "digits missing in \\x{} or \\o{}\0"
-+  "regular expression is too complicated\0"
-   ;
- /* Table to identify digits and hex digits. This is used when compiling
-@@ -4591,7 +4592,8 @@ for (;; ptr++)
-     if (code > cd->start_workspace + cd->workspace_size -
-         WORK_SIZE_SAFETY_MARGIN)                       /* Check for overrun */
-       {
--      *errorcodeptr = ERR52;
-+      *errorcodeptr = (code >= cd->start_workspace + cd->workspace_size)?
-+        ERR52 : ERR87;
-       goto FAILED;
-       }
-@@ -6626,8 +6628,21 @@ for (;; ptr++)
-             cd->had_accept = TRUE;
-             for (oc = cd->open_caps; oc != NULL; oc = oc->next)
-               {
--              *code++ = OP_CLOSE;
--              PUT2INC(code, 0, oc->number);
-+              if (lengthptr != NULL)
-+                {
-+#ifdef COMPILE_PCRE8
-+                *lengthptr += 1 + IMM2_SIZE;
-+#elif defined COMPILE_PCRE16
-+                *lengthptr += 2 + IMM2_SIZE;
-+#elif defined COMPILE_PCRE32
-+                *lengthptr += 4 + IMM2_SIZE;
-+#endif
-+                }
-+              else
-+                {
-+                *code++ = OP_CLOSE;
-+                PUT2INC(code, 0, oc->number);
-+                }
-               }
-             setverb = *code++ =
-               (cd->assert_depth > 0)? OP_ASSERT_ACCEPT : OP_ACCEPT;
-diff --git a/pcre_internal.h b/pcre_internal.h
-index f7a5ee7..dbfe80e 100644
---- a/pcre_internal.h
-+++ b/pcre_internal.h
-@@ -7,7 +7,7 @@
- and semantics are as close as possible to those of the Perl 5 language.
-                        Written by Philip Hazel
--           Copyright (c) 1997-2014 University of Cambridge
-+           Copyright (c) 1997-2016 University of Cambridge
- -----------------------------------------------------------------------------
- Redistribution and use in source and binary forms, with or without
-@@ -2289,7 +2289,7 @@ enum { ERR0,  ERR1,  ERR2,  ERR3,  ERR4,  ERR5,  ERR6,  ERR7,  ERR8,  ERR9,
-        ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59,
-        ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERR67, ERR68, ERR69,
-        ERR70, ERR71, ERR72, ERR73, ERR74, ERR75, ERR76, ERR77, ERR78, ERR79,
--       ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERR86, ERRCOUNT };
-+       ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERR86, ERR87, ERRCOUNT };
- /* JIT compiling modes. The function list is indexed by them. */
-diff --git a/pcreposix.c b/pcreposix.c
-index dcc13ef..55b6ddc 100644
---- a/pcreposix.c
-+++ b/pcreposix.c
-@@ -6,7 +6,7 @@
- and semantics are as close as possible to those of the Perl 5 language.
-                        Written by Philip Hazel
--           Copyright (c) 1997-2014 University of Cambridge
-+           Copyright (c) 1997-2016 University of Cambridge
- -----------------------------------------------------------------------------
- Redistribution and use in source and binary forms, with or without
-@@ -173,7 +173,8 @@ static const int eint[] = {
-   REG_BADPAT,  /* group name must start with a non-digit */
-   /* 85 */
-   REG_BADPAT,  /* parentheses too deeply nested (stack check) */
--  REG_BADPAT   /* missing digits in \x{} or \o{} */
-+  REG_BADPAT,  /* missing digits in \x{} or \o{} */
-+  REG_BADPAT   /* pattern too complicated */
- };
- /* Table of texts corresponding to POSIX error codes */
-diff --git a/testdata/testinput11 b/testdata/testinput11
-index ac9d228..6f0989a 100644
---- a/testdata/testinput11
-+++ b/testdata/testinput11
-@@ -138,4 +138,6 @@ is required for these tests. --/
- /.((?2)(?R)\1)()/B
-+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
-+
- /-- End of testinput11 --/
-diff --git a/testdata/testoutput11-16 b/testdata/testoutput11-16
-index 280692e..3c485da 100644
---- a/testdata/testoutput11-16
-+++ b/testdata/testoutput11-16
-@@ -765,4 +765,7 @@ Memory allocation (code space): 14
-  25     End
- ------------------------------------------------------------------
-+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
-+Failed: regular expression is too complicated at offset 490
-+
- /-- End of testinput11 --/
-diff --git a/testdata/testoutput11-32 b/testdata/testoutput11-32
-index cdbda74..e19518d 100644
---- a/testdata/testoutput11-32
-+++ b/testdata/testoutput11-32
-@@ -765,4 +765,7 @@ Memory allocation (code space): 28
-  25     End
- ------------------------------------------------------------------
-+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
-+Failed: missing ) at offset 509
-+
- /-- End of testinput11 --/
-diff --git a/testdata/testoutput11-8 b/testdata/testoutput11-8
-index cb37896..5a4fbb2 100644
---- a/testdata/testoutput11-8
-+++ b/testdata/testoutput11-8
-@@ -765,4 +765,7 @@ Memory allocation (code space): 10
-  38     End
- ------------------------------------------------------------------
-+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
-+Failed: missing ) at offset 509
-+
- /-- End of testinput11 --/
--- 
-2.5.0
-
-From b7537308b7c758f33c347cb0bec62754c43c271f Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Sat, 27 Feb 2016 17:38:11 +0000
-Subject: [PATCH] Yet another duplicate name bugfix by overestimating the
- memory needed (i.e. another hack - PCRE2 has this "properly" fixed).
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1636 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcre_compile.c b/pcre_compile.c
-index 5019854..4ffea0c 100644
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -7311,7 +7311,12 @@ for (;; ptr++)
-           so far in order to get the number. If the name is not found, leave
-           the value of recno as 0 for a forward reference. */
--          else
-+          /* This patch (removing "else") fixes a problem when a reference is
-+          to multiple identically named nested groups from within the nest.
-+          Once again, it is not the "proper" fix, and it results in an
-+          over-allocation of memory. */
-+
-+          /* else */
-             {
-             ng = cd->named_groups;
-             for (i = 0; i < cd->names_found; i++, ng++)
-diff --git a/testdata/testinput2 b/testdata/testinput2
-index 086e0f4..c805f5f 100644
---- a/testdata/testinput2
-+++ b/testdata/testinput2
-@@ -4239,4 +4239,6 @@ backtracking verbs. --/
-     9010
-     abcd
-      
-+/((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/
-+
- /-- End of testinput2 --/
-diff --git a/testdata/testoutput2 b/testdata/testoutput2
-index d414a72..800a72f 100644
---- a/testdata/testoutput2
-+++ b/testdata/testoutput2
-@@ -14665,4 +14665,6 @@ Start of matched string is beyond its end - displaying from end to start.
-   0     ^    0
- No match
-      
-+/((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/
-+
- /-- End of testinput2 --/
--- 
-2.5.0
-
-From 0fc2edb79b3815c6511fd75c36a57893e4acaee6 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Sat, 27 Feb 2016 17:55:24 +0000
-Subject: [PATCH] Fix pcretest loop for global matching with an ovector size
- less than 2.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1637 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcretest.c b/pcretest.c
-index 63869fd..78ef517 100644
---- a/pcretest.c
-+++ b/pcretest.c
-@@ -5617,6 +5617,12 @@ while (!done)
-         break;
-         }
-+      if (use_size_offsets < 2)
-+        {
-+        fprintf(outfile, "Cannot do global matching with an ovector size < 2\n");
-+        break;
-+        }
-+
-       /* If we have matched an empty string, first check to see if we are at
-       the end of the subject. If so, the /g loop is over. Otherwise, mimic what
-       Perl's /g options does. This turns out to be rather cunning. First we set
--- 
-2.5.0
-
-From b3db1b7de5cfaa026ec2bc4a393129461a0f5c57 Mon Sep 17 00:00:00 2001
-From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
-Date: Sat, 27 Feb 2016 18:44:41 +0000
-Subject: [PATCH] Fix non-diagnosis of missing assertion after (?(?C).
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1638 2f5784b3-3f2a-0410-8824-cb99058d5e15
-
-Petr Písař: Ported to 8.38.
-
-diff --git a/pcre_compile.c b/pcre_compile.c
-index 4ffea0c..254c629 100644
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -485,7 +485,7 @@ static const char error_texts[] =
-   "lookbehind assertion is not fixed length\0"
-   "malformed number or name after (?(\0"
-   "conditional group contains more than two branches\0"
--  "assertion expected after (?(\0"
-+  "assertion expected after (?( or (?(?C)\0"
-   "(?R or (?[+-]digits must be followed by )\0"
-   /* 30 */
-   "unknown POSIX class name\0"
-@@ -6771,6 +6771,15 @@ for (;; ptr++)
-           for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break;
-           if (ptr[i] == CHAR_RIGHT_PARENTHESIS)
-             tempptr += i + 1;
-+
-+          /* tempptr should now be pointing to the opening parenthesis of the
-+          assertion condition. */
-+
-+          if (*tempptr != CHAR_LEFT_PARENTHESIS)
-+            {
-+            *errorcodeptr = ERR28;
-+            goto FAILED;
-+            }
-           }
-         /* For conditions that are assertions, check the syntax, and then exit
-diff --git a/testdata/testinput2 b/testdata/testinput2
-index c805f5f..75e402e 100644
---- a/testdata/testinput2
-+++ b/testdata/testinput2
-@@ -4241,4 +4241,6 @@ backtracking verbs. --/
-      
- /((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/
-+/\N(?(?C)0?!.)*/
-+
- /-- End of testinput2 --/
-diff --git a/testdata/testoutput2 b/testdata/testoutput2
-index 800a72f..5e88d1a 100644
---- a/testdata/testoutput2
-+++ b/testdata/testoutput2
-@@ -555,13 +555,13 @@ Failed: malformed number or name after (?( at offset 4
- Failed: malformed number or name after (?( at offset 4
- /(?(?i))/
--Failed: assertion expected after (?( at offset 3
-+Failed: assertion expected after (?( or (?(?C) at offset 3
- /(?(abc))/
- Failed: reference to non-existent subpattern at offset 7
- /(?(?<ab))/
--Failed: assertion expected after (?( at offset 3
-+Failed: assertion expected after (?( or (?(?C) at offset 3
- /((?s)blah)\s+\1/I
- Capturing subpattern count = 1
-@@ -7870,7 +7870,7 @@ No match
- Failed: malformed number or name after (?( at offset 6
- /(?(''))/
--Failed: assertion expected after (?( at offset 4
-+Failed: assertion expected after (?( or (?(?C) at offset 4
- /(?('R')stuff)/
- Failed: reference to non-existent subpattern at offset 7
-@@ -14346,7 +14346,7 @@ No match
- "((?2)+)((?1))"
- "(?(?<E>.*!.*)?)"
--Failed: assertion expected after (?( at offset 3
-+Failed: assertion expected after (?( or (?(?C) at offset 3
- "X((?2)()*+){2}+"BZ
- ------------------------------------------------------------------
-@@ -14667,4 +14667,7 @@ No match
-      
- /((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/
-+/\N(?(?C)0?!.)*/
-+Failed: assertion expected after (?( or (?(?C) at offset 4
-+
- /-- End of testinput2 --/
--- 
-2.5.0
-
diff --git a/src/patches/python-pycurl-no-static-libs.patch b/src/patches/python-pycurl-no-static-libs.patch
deleted file mode 100644 (file)
index c1410dc..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- setup.py~  2008-04-22 17:00:45.000000000 +0300
-+++ setup.py   2008-07-03 21:53:36.000000000 +0300
-@@ -97,8 +97,7 @@
-         else:
-             extra_compile_args.append(e)
-     libs = split_quoted(
--        os.popen("'%s' --libs" % CURL_CONFIG).read()+\
--        os.popen("'%s' --static-libs" % CURL_CONFIG).read())
-+        os.popen("'%s' --libs" % CURL_CONFIG).read())
-     for e in libs:
-         if e[:2] == "-l":
-             libraries.append(e[2:])
diff --git a/src/patches/tcp_wrappers-7.6-shared_lib_plus_plus-1.patch b/src/patches/tcp_wrappers-7.6-shared_lib_plus_plus-1.patch
deleted file mode 100644 (file)
index 9a5b20c..0000000
+++ /dev/null
@@ -1,1035 +0,0 @@
-Submitted By: Tushar Teredesai <tushar@linuxfromscratch.org>
-Date: 2003-10-04
-Initial Package Version: 7.6
-Origin: http://archives.linuxfromscratch.org/mail-archives/blfs-dev/2003-January/001960.html
-Description: The patch was created from the tcp_wrappers modified package by Mark Heerdink.
-This patch provides the following improvements:
-    * Install libwrap.so along with libwrap.a.
-    * Create an install target for tcp_wrappers.
-    * Compilation and security fixes.
-    * Documentation fixes.
-diff -Naur tcp_wrappers_7.6/Makefile tcp_wrappers_7.6.gimli/Makefile
---- tcp_wrappers_7.6/Makefile  1997-03-21 12:27:21.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/Makefile    2002-07-15 16:07:21.000000000 -0500
-@@ -1,5 +1,10 @@
-+GLIBC=$(shell grep -s -c __GLIBC__ /usr/include/features.h)
-+
- # @(#) Makefile 1.23 97/03/21 19:27:20
-+# unset the HOSTNAME environment variable
-+HOSTNAME =
-+
- what:
-       @echo
-       @echo "Usage: edit the REAL_DAEMON_DIR definition in the Makefile then:"
-@@ -19,7 +24,7 @@
-       @echo " generic (most bsd-ish systems with sys5 compatibility)"
-       @echo " 386bsd aix alpha apollo bsdos convex-ultranet dell-gcc dgux dgux543"
-       @echo " dynix epix esix freebsd hpux irix4 irix5 irix6 isc iunix"
--      @echo " linux machten mips(untested) ncrsvr4 netbsd next osf power_unix_211"
-+      @echo " linux gnu machten mips(untested) ncrsvr4 netbsd next osf power_unix_211"
-       @echo " ptx-2.x ptx-generic pyramid sco sco-nis sco-od2 sco-os5 sinix sunos4"
-       @echo " sunos40 sunos5 sysv4 tandem ultrix unicos7 unicos8 unixware1 unixware2"
-       @echo " uts215 uxp"
-@@ -43,8 +48,8 @@
- # Ultrix 4.x SunOS 4.x ConvexOS 10.x Dynix/ptx
- #REAL_DAEMON_DIR=/usr/etc
- #
--# SysV.4 Solaris 2.x OSF AIX
--#REAL_DAEMON_DIR=/usr/sbin
-+# SysV.4 Solaris 2.x OSF AIX Linux
-+REAL_DAEMON_DIR=/usr/sbin
- #
- # BSD 4.4
- #REAL_DAEMON_DIR=/usr/libexec
-@@ -141,10 +146,21 @@
-       LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ= NETGROUP= TLI= \
-       EXTRA_CFLAGS=-DSYS_ERRLIST_DEFINED VSYSLOG= all
-+ifneq ($(GLIBC),0)
-+MYLIB=-lnsl
-+endif
-+
- linux:
-       @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
--      LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ=setenv.o \
--      NETGROUP= TLI= EXTRA_CFLAGS="-DBROKEN_SO_LINGER" all
-+      LIBS=$(MYLIB) RANLIB=ranlib ARFLAGS=rv AUX_OBJ=weak_symbols.o \
-+      NETGROUP=-DNETGROUP TLI= VSYSLOG= BUGS= all \
-+      EXTRA_CFLAGS="-DSYS_ERRLIST_DEFINED -DHAVE_WEAKSYMS -D_REENTRANT"
-+
-+gnu:
-+      @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
-+      LIBS=$(MYLIB) RANLIB=ranlib ARFLAGS=rv AUX_OBJ=weak_symbols.o \
-+      NETGROUP=-DNETGROUP TLI= VSYSLOG= BUGS= all \
-+      EXTRA_CFLAGS="-DHAVE_STRERROR -DHAVE_WEAKSYMS -D_REENTRANT"
- # This is good for many SYSV+BSD hybrids with NIS, probably also for HP-UX 7.x.
- hpux hpux8 hpux9 hpux10:
-@@ -391,7 +407,7 @@
- # the ones provided with this source distribution. The environ.c module
- # implements setenv(), getenv(), and putenv().
--AUX_OBJ= setenv.o
-+#AUX_OBJ= setenv.o
- #AUX_OBJ= environ.o
- #AUX_OBJ= environ.o strcasecmp.o
-@@ -454,7 +470,8 @@
- # host name aliases. Compile with -DSOLARIS_24_GETHOSTBYNAME_BUG to work
- # around this. The workaround does no harm on other Solaris versions.
--BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK
-+BUGS =
-+#BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK
- #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DINET_ADDR_BUG
- #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DSOLARIS_24_GETHOSTBYNAME_BUG
-@@ -464,7 +481,7 @@
- # If your system supports NIS or YP-style netgroups, enable the following
- # macro definition. Netgroups are used only for host access control.
- #
--#NETGROUP= -DNETGROUP
-+NETGROUP= -DNETGROUP
- ###############################################################
- # System dependencies: whether or not your system has vsyslog()
-@@ -491,7 +508,7 @@
- # Uncomment the next definition to turn on the language extensions
- # (examples: allow, deny, banners, twist and spawn).
- # 
--#STYLE        = -DPROCESS_OPTIONS     # Enable language extensions.
-+STYLE = -DPROCESS_OPTIONS     # Enable language extensions.
- ################################################################
- # Optional: Changing the default disposition of logfile records
-@@ -514,7 +531,7 @@
- #
- # The LOG_XXX names below are taken from the /usr/include/syslog.h file.
--FACILITY= LOG_MAIL    # LOG_MAIL is what most sendmail daemons use
-+FACILITY= LOG_DAEMON  # LOG_MAIL is what most sendmail daemons use
- # The syslog priority at which successful connections are logged.
-@@ -610,7 +627,7 @@
- # Paranoid mode implies hostname lookup. In order to disable hostname
- # lookups altogether, see the next section.
--PARANOID= -DPARANOID
-+#PARANOID= -DPARANOID
- ########################################
- # Optional: turning off hostname lookups
-@@ -623,7 +640,7 @@
- # In order to perform selective hostname lookups, disable paranoid
- # mode (see previous section) and comment out the following definition.
--HOSTNAME= -DALWAYS_HOSTNAME
-+#HOSTNAME= -DALWAYS_HOSTNAME
- #############################################
- # Optional: Turning on host ADDRESS checking
-@@ -649,28 +666,46 @@
- # source-routed traffic in the kernel. Examples: 4.4BSD derivatives,
- # Solaris 2.x, and Linux. See your system documentation for details.
- #
--# KILL_OPT= -DKILL_IP_OPTIONS
-+KILL_OPT= -DKILL_IP_OPTIONS
- ## End configuration options
- ############################
- # Protection against weird shells or weird make programs.
-+CC    = gcc
- SHELL = /bin/sh
--.c.o:;        $(CC) $(CFLAGS) -c $*.c
-+.c.o:;        $(CC) $(CFLAGS) -o $*.o -c $*.c
-+
-+SOMAJOR = 0
-+SOMINOR = 7.6
-+
-+LIB   = libwrap.a
-+SHLIB = shared/libwrap.so.$(SOMAJOR).$(SOMINOR)
-+SHLIBSOMAJ= shared/libwrap.so.$(SOMAJOR)
-+SHLIBSO       = shared/libwrap.so
-+SHLIBFLAGS = -Lshared -lwrap
--CFLAGS        = -O -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
-+shared/%.o: %.c
-+      $(CC) $(CFLAGS) $(SHCFLAGS) -c $< -o $@
-+
-+CFLAGS        = -O2 -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
-       $(BUGS) $(SYSTYPE) $(AUTH) $(UMASK) \
-       -DREAL_DAEMON_DIR=\"$(REAL_DAEMON_DIR)\" $(STYLE) $(KILL_OPT) \
-       -DSEVERITY=$(SEVERITY) -DRFC931_TIMEOUT=$(RFC931_TIMEOUT) \
-       $(UCHAR) $(TABLES) $(STRINGS) $(TLI) $(EXTRA_CFLAGS) $(DOT) \
-       $(VSYSLOG) $(HOSTNAME)
-+SHLINKFLAGS = -shared -Xlinker -soname -Xlinker libwrap.so.$(SOMAJOR) -lc $(LIBS)
-+SHCFLAGS = -fPIC -shared -D_REENTRANT
-+
- LIB_OBJ= hosts_access.o options.o shell_cmd.o rfc931.o eval.o \
-       hosts_ctl.o refuse.o percent_x.o clean_exit.o $(AUX_OBJ) \
-       $(FROM_OBJ) fix_options.o socket.o tli.o workarounds.o \
-       update.o misc.o diag.o percent_m.o myvsyslog.o
-+SHLIB_OBJ= $(addprefix shared/, $(LIB_OBJ));
-+
- FROM_OBJ= fromhost.o
- KIT   = README miscd.c tcpd.c fromhost.c hosts_access.c shell_cmd.c \
-@@ -684,46 +719,80 @@
-       refuse.c tcpdchk.8 setenv.c inetcf.c inetcf.h scaffold.c \
-       scaffold.h tcpdmatch.8 README.NIS
--LIB   = libwrap.a
--
--all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk
-+all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk $(LIB)
- # Invalidate all object files when the compiler options (CFLAGS) have changed.
- config-check:
-       @set +e; test -n "$(REAL_DAEMON_DIR)" || { make; exit 1; }
--      @set +e; echo $(CFLAGS) >/tmp/cflags.$$$$ ; \
--      if cmp cflags /tmp/cflags.$$$$ ; \
--      then rm /tmp/cflags.$$$$ ; \
--      else mv /tmp/cflags.$$$$ cflags ; \
-+      @set +e; echo $(CFLAGS) >cflags.new ; \
-+      if cmp cflags cflags.new ; \
-+      then rm cflags.new ; \
-+      else mv cflags.new cflags ; \
-       fi >/dev/null 2>/dev/null
-+      @if [ ! -d shared ]; then mkdir shared; fi
- $(LIB):       $(LIB_OBJ)
-       rm -f $(LIB)
-       $(AR) $(ARFLAGS) $(LIB) $(LIB_OBJ)
-       -$(RANLIB) $(LIB)
--tcpd: tcpd.o $(LIB)
--      $(CC) $(CFLAGS) -o $@ tcpd.o $(LIB) $(LIBS)
-+$(SHLIB): $(SHLIB_OBJ)
-+      rm -f $(SHLIB)
-+      $(CC) -o $(SHLIB) $(SHLINKFLAGS) $(SHLIB_OBJ)
-+      ln -s $(notdir $(SHLIB)) $(SHLIBSOMAJ)
-+      ln -s $(notdir $(SHLIBSOMAJ)) $(SHLIBSO)
-+
-+tcpd: tcpd.o $(SHLIB)
-+      $(CC) $(CFLAGS) -o $@ tcpd.o $(SHLIBFLAGS)
--miscd:        miscd.o $(LIB)
--      $(CC) $(CFLAGS) -o $@ miscd.o $(LIB) $(LIBS)
-+miscd:        miscd.o $(SHLIB)
-+      $(CC) $(CFLAGS) -o $@ miscd.o $(SHLIBFLAGS)
--safe_finger: safe_finger.o $(LIB)
--      $(CC) $(CFLAGS) -o $@ safe_finger.o $(LIB) $(LIBS)
-+safe_finger: safe_finger.o $(SHLIB)
-+      $(CC) $(CFLAGS) -o $@ safe_finger.o $(SHLIBFLAGS)
- TCPDMATCH_OBJ = tcpdmatch.o fakelog.o inetcf.o scaffold.o
--tcpdmatch: $(TCPDMATCH_OBJ) $(LIB)
--      $(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(LIB) $(LIBS)
-+tcpdmatch: $(TCPDMATCH_OBJ) $(SHLIB)
-+      $(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(SHLIBFLAGS)
--try-from: try-from.o fakelog.o $(LIB)
--      $(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(LIB) $(LIBS)
-+try-from: try-from.o fakelog.o $(SHLIB)
-+      $(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(SHLIBFLAGS)
- TCPDCHK_OBJ = tcpdchk.o fakelog.o inetcf.o scaffold.o
--tcpdchk: $(TCPDCHK_OBJ) $(LIB)
--      $(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(LIB) $(LIBS)
-+tcpdchk: $(TCPDCHK_OBJ) $(SHLIB)
-+      $(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(SHLIBFLAGS)
-+
-+install: install-lib install-bin install-dev
-+
-+install-lib:
-+      install -o root -g root -m 0755 $(SHLIB) ${DESTDIR}/usr/lib/
-+      ln -sf $(notdir $(SHLIB)) ${DESTDIR}/usr/lib/$(notdir $(SHLIBSOMAJ))
-+      ln -sf $(notdir $(SHLIBSOMAJ)) ${DESTDIR}/usr/lib/$(notdir $(SHLIBSO))
-+
-+install-bin:
-+      install -o root -g root -m 0755 tcpd ${DESTDIR}/usr/sbin/
-+      install -o root -g root -m 0755 tcpdchk ${DESTDIR}/usr/sbin/
-+      install -o root -g root -m 0755 tcpdmatch ${DESTDIR}/usr/sbin/
-+      install -o root -g root -m 0755 try-from ${DESTDIR}/usr/sbin/
-+      install -o root -g root -m 0755 safe_finger ${DESTDIR}/usr/sbin/
-+      install -o root -g root -m 0644 tcpd.8 ${DESTDIR}/usr/share/man/man8/
-+      install -o root -g root -m 0644 tcpdchk.8 ${DESTDIR}/usr/share/man/man8/
-+      install -o root -g root -m 0644 try-from.8 ${DESTDIR}/usr/share/man/man8/
-+      install -o root -g root -m 0644 tcpdmatch.8 ${DESTDIR}/usr/share/man/man8/
-+      install -o root -g root -m 0644 safe_finger.8 ${DESTDIR}/usr/share/man/man8/
-+      install -o root -g root -m 0644 hosts_access.5 ${DESTDIR}/usr/share/man/man5/
-+      install -o root -g root -m 0644 hosts_options.5 ${DESTDIR}/usr/share/man/man5/
-+
-+install-dev:
-+      install -o root -g root -m 0644 hosts_access.3 ${DESTDIR}/usr/share/man/man3/
-+      install -o root -g root -m 0644 tcpd.h ${DESTDIR}/usr/include/
-+      install -o root -g root -m 0644 $(LIB) ${DESTDIR}/usr/lib/
-+      ln -sf hosts_access.3 ${DESTDIR}/usr/share/man/man3/hosts_ctl.3
-+      ln -sf hosts_access.3 ${DESTDIR}/usr/share/man/man3/request_init.3
-+      ln -sf hosts_access.3 ${DESTDIR}/usr/share/man/man3/request_set.3
- shar: $(KIT)
-       @shar $(KIT)
-@@ -739,7 +808,8 @@
- clean:
-       rm -f tcpd miscd safe_finger tcpdmatch tcpdchk try-from *.[oa] core \
--      cflags
-+      cflags libwrap*.so*
-+      rm -rf shared
- tidy: clean
-       chmod -R a+r .
-@@ -885,5 +955,6 @@
- update.o: mystdarg.h
- update.o: tcpd.h
- vfprintf.o: cflags
-+weak_symbols.o: tcpd.h
- workarounds.o: cflags
- workarounds.o: tcpd.h
-diff -Naur tcp_wrappers_7.6/fix_options.c tcp_wrappers_7.6.gimli/fix_options.c
---- tcp_wrappers_7.6/fix_options.c     1997-04-07 19:29:19.000000000 -0500
-+++ tcp_wrappers_7.6.gimli/fix_options.c       2002-01-07 08:50:19.000000000 -0600
-@@ -35,7 +35,12 @@
- #ifdef IP_OPTIONS
-     unsigned char optbuf[BUFFER_SIZE / 3], *cp;
-     char    lbuf[BUFFER_SIZE], *lp;
-+#if !defined(__GLIBC__)
-     int     optsize = sizeof(optbuf), ipproto;
-+#else /* __GLIBC__ */
-+    size_t  optsize = sizeof(optbuf);
-+    int     ipproto;
-+#endif /* __GLIBC__ */
-     struct protoent *ip;
-     int     fd = request->fd;
-     unsigned int opt;
-diff -Naur tcp_wrappers_7.6/hosts_access.3 tcp_wrappers_7.6.gimli/hosts_access.3
---- tcp_wrappers_7.6/hosts_access.3    1996-02-11 10:01:27.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/hosts_access.3      2002-01-07 08:50:19.000000000 -0600
-@@ -3,7 +3,7 @@
- hosts_access, hosts_ctl, request_init, request_set \- access control library
- .SH SYNOPSIS
- .nf
--#include "tcpd.h"
-+#include <tcpd.h>
- extern int allow_severity;
- extern int deny_severity;
-diff -Naur tcp_wrappers_7.6/hosts_access.5 tcp_wrappers_7.6.gimli/hosts_access.5
---- tcp_wrappers_7.6/hosts_access.5    1995-01-30 12:51:47.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/hosts_access.5      2002-01-07 08:50:19.000000000 -0600
-@@ -8,9 +8,9 @@
- impatient reader is encouraged to skip to the EXAMPLES section for a
- quick introduction.
- .PP
--An extended version of the access control language is described in the
--\fIhosts_options\fR(5) document. The extensions are turned on at
--program build time by building with -DPROCESS_OPTIONS.
-+The extended version of the access control language is described in the
-+\fIhosts_options\fR(5) document. \fBNote that this language supersedes
-+the meaning of \fIshell_command\fB as documented below.\fR
- .PP
- In the following text, \fIdaemon\fR is the the process name of a
- network daemon process, and \fIclient\fR is the name and/or address of
-@@ -40,7 +40,7 @@
- character. This permits you to break up long lines so that they are
- easier to edit.
- .IP \(bu
--Blank lines or lines that begin with a `#\' character are ignored.
-+Blank lines or lines that begin with a `#' character are ignored.
- This permits you to insert comments and whitespace so that the tables
- are easier to read.
- .IP \(bu
-@@ -69,26 +69,33 @@
- .SH PATTERNS
- The access control language implements the following patterns:
- .IP \(bu
--A string that begins with a `.\' character. A host name is matched if
-+A string that begins with a `.' character. A host name is matched if
- the last components of its name match the specified pattern.  For
--example, the pattern `.tue.nl\' matches the host name
--`wzv.win.tue.nl\'.
-+example, the pattern `.tue.nl' matches the host name
-+`wzv.win.tue.nl'.
- .IP \(bu
--A string that ends with a `.\' character. A host address is matched if
-+A string that ends with a `.' character. A host address is matched if
- its first numeric fields match the given string.  For example, the
--pattern `131.155.\' matches the address of (almost) every host on the
-+pattern `131.155.' matches the address of (almost) every host on the
- Eind\%hoven University network (131.155.x.x).
- .IP \(bu
--A string that begins with an `@\' character is treated as an NIS
-+A string that begins with an `@' character is treated as an NIS
- (formerly YP) netgroup name. A host name is matched if it is a host
- member of the specified netgroup. Netgroup matches are not supported
- for daemon process names or for client user names.
- .IP \(bu
--An expression of the form `n.n.n.n/m.m.m.m\' is interpreted as a
--`net/mask\' pair. A host address is matched if `net\' is equal to the
--bitwise AND of the address and the `mask\'. For example, the net/mask
--pattern `131.155.72.0/255.255.254.0\' matches every address in the
--range `131.155.72.0\' through `131.155.73.255\'.
-+An expression of the form `n.n.n.n/m.m.m.m' is interpreted as a
-+`net/mask' pair. A host address is matched if `net' is equal to the
-+bitwise AND of the address and the `mask'. For example, the net/mask
-+pattern `131.155.72.0/255.255.254.0' matches every address in the
-+range `131.155.72.0' through `131.155.73.255'.
-+.IP \(bu
-+A string that begins with a `/' character is treated as a file
-+name. A host name or address is matched if it matches any host name
-+or address pattern listed in the named file. The file format is
-+zero or more lines with zero or more host name or address patterns
-+separated by whitespace.  A file name pattern can be used anywhere
-+a host name or address pattern can be used.
- .SH WILDCARDS
- The access control language supports explicit wildcards:
- .IP ALL
-@@ -115,19 +122,19 @@
- .ne 6
- .SH OPERATORS
- .IP EXCEPT
--Intended use is of the form: `list_1 EXCEPT list_2\'; this construct
-+Intended use is of the form: `list_1 EXCEPT list_2'; this construct
- matches anything that matches \fIlist_1\fR unless it matches
- \fIlist_2\fR.  The EXCEPT operator can be used in daemon_lists and in
- client_lists. The EXCEPT operator can be nested: if the control
--language would permit the use of parentheses, `a EXCEPT b EXCEPT c\'
--would parse as `(a EXCEPT (b EXCEPT c))\'.
-+language would permit the use of parentheses, `a EXCEPT b EXCEPT c'
-+would parse as `(a EXCEPT (b EXCEPT c))'.
- .br
- .ne 6
- .SH SHELL COMMANDS
- If the first-matched access control rule contains a shell command, that
- command is subjected to %<letter> substitutions (see next section).
- The result is executed by a \fI/bin/sh\fR child process with standard
--input, output and error connected to \fI/dev/null\fR.  Specify an `&\'
-+input, output and error connected to \fI/dev/null\fR.  Specify an `&'
- at the end of the command if you do not want to wait until it has
- completed.
- .PP
-@@ -159,7 +166,7 @@
- .IP %u
- The client user name (or "unknown").
- .IP %%
--Expands to a single `%\' character.
-+Expands to a single `%' character.
- .PP
- Characters in % expansions that may confuse the shell are replaced by
- underscores.
-@@ -243,9 +250,9 @@
- less trustworthy. It is possible for an intruder to spoof both the
- client connection and the IDENT lookup, although doing so is much
- harder than spoofing just a client connection. It may also be that
--the client\'s IDENT server is lying.
-+the client's IDENT server is lying.
- .PP
--Note: IDENT lookups don\'t work with UDP services. 
-+Note: IDENT lookups don't work with UDP services. 
- .SH EXAMPLES
- The language is flexible enough that different types of access control
- policy can be expressed with a minimum of fuss. Although the language
-@@ -285,7 +292,7 @@
- .br
- ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
- .PP
--The first rule permits access from hosts in the local domain (no `.\'
-+The first rule permits access from hosts in the local domain (no `.'
- in the host name) and from members of the \fIsome_netgroup\fP
- netgroup.  The second rule permits access from all hosts in the
- \fIfoobar.edu\fP domain (notice the leading dot), with the exception of
-@@ -322,8 +329,8 @@
- /etc/hosts.deny:
- .in +3
- .nf
--in.tftpd: ALL: (/some/where/safe_finger -l @%h | \\
--      /usr/ucb/mail -s %d-%h root) &
-+in.tftpd: ALL: (/usr/sbin/safe_finger -l @%h | \\
-+      /usr/bin/mail -s %d-%h root) &
- .fi
- .PP
- The safe_finger command comes with the tcpd wrapper and should be
-@@ -349,7 +356,7 @@
- capacity of an internal buffer; when an access control rule is not
- terminated by a newline character; when the result of %<letter>
- expansion would overflow an internal buffer; when a system call fails
--that shouldn\'t.  All problems are reported via the syslog daemon.
-+that shouldn't.  All problems are reported via the syslog daemon.
- .SH FILES
- .na
- .nf
-diff -Naur tcp_wrappers_7.6/hosts_access.c tcp_wrappers_7.6.gimli/hosts_access.c
---- tcp_wrappers_7.6/hosts_access.c    1997-02-11 19:13:23.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/hosts_access.c      2002-01-07 08:50:19.000000000 -0600
-@@ -240,6 +240,26 @@
-     }
- }
-+/* hostfile_match - look up host patterns from file */
-+
-+static int hostfile_match(path, host)
-+char   *path;
-+struct hosts_info *host;
-+{
-+    char    tok[BUFSIZ];
-+    int     match = NO;
-+    FILE   *fp;
-+
-+    if ((fp = fopen(path, "r")) != 0) {
-+        while (fscanf(fp, "%s", tok) == 1 && !(match = host_match(tok, host)))
-+            /* void */ ;
-+        fclose(fp);
-+    } else if (errno != ENOENT) {
-+        tcpd_warn("open %s: %m", path);
-+    }
-+    return (match);
-+}
-+
- /* host_match - match host name and/or address against pattern */
- static int host_match(tok, host)
-@@ -267,6 +287,8 @@
-       tcpd_warn("netgroup support is disabled");      /* not tcpd_jump() */
-       return (NO);
- #endif
-+    } else if (tok[0] == '/') {                         /* /file hack */
-+        return (hostfile_match(tok, host));
-     } else if (STR_EQ(tok, "KNOWN")) {                /* check address and name */
-       char   *name = eval_hostname(host);
-       return (STR_NE(eval_hostaddr(host), unknown) && HOSTNAME_KNOWN(name));
-diff -Naur tcp_wrappers_7.6/hosts_options.5 tcp_wrappers_7.6.gimli/hosts_options.5
---- tcp_wrappers_7.6/hosts_options.5   1994-12-28 10:42:29.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/hosts_options.5     2002-01-07 08:50:19.000000000 -0600
-@@ -58,12 +58,12 @@
- Execute, in a child process, the specified shell command, after
- performing the %<letter> expansions described in the hosts_access(5)
- manual page.  The command is executed with stdin, stdout and stderr
--connected to the null device, so that it won\'t mess up the
-+connected to the null device, so that it won't mess up the
- conversation with the client host. Example:
- .sp
- .nf
- .ti +3
--spawn (/some/where/safe_finger -l @%h | /usr/ucb/mail root) &
-+spawn (/usr/sbin/safe_finger -l @%h | /usr/bin/mail root) &
- .fi
- .sp
- executes, in a background child process, the shell command "safe_finger
-diff -Naur tcp_wrappers_7.6/options.c tcp_wrappers_7.6.gimli/options.c
---- tcp_wrappers_7.6/options.c 1996-02-11 10:01:32.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/options.c   2002-01-07 08:50:19.000000000 -0600
-@@ -473,6 +473,9 @@
- #ifdef LOG_CRON
-     "cron", LOG_CRON,
- #endif
-+#ifdef LOG_FTP
-+    "ftp", LOG_FTP,
-+#endif
- #ifdef LOG_LOCAL0
-     "local0", LOG_LOCAL0,
- #endif
-diff -Naur tcp_wrappers_7.6/percent_m.c tcp_wrappers_7.6.gimli/percent_m.c
---- tcp_wrappers_7.6/percent_m.c       1994-12-28 10:42:37.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/percent_m.c 2002-01-07 08:50:19.000000000 -0600
-@@ -13,7 +13,7 @@
- #include <string.h>
- extern int errno;
--#ifndef SYS_ERRLIST_DEFINED
-+#if !defined(SYS_ERRLIST_DEFINED) && !defined(HAVE_STRERROR)
- extern char *sys_errlist[];
- extern int sys_nerr;
- #endif
-@@ -29,11 +29,15 @@
-     while (*bp = *cp)
-       if (*cp == '%' && cp[1] == 'm') {
-+#ifdef HAVE_STRERROR
-+            strcpy(bp, strerror(errno));
-+#else
-           if (errno < sys_nerr && errno > 0) {
-               strcpy(bp, sys_errlist[errno]);
-           } else {
-               sprintf(bp, "Unknown error %d", errno);
-           }
-+#endif
-           bp += strlen(bp);
-           cp += 2;
-       } else {
-diff -Naur tcp_wrappers_7.6/rfc931.c tcp_wrappers_7.6.gimli/rfc931.c
---- tcp_wrappers_7.6/rfc931.c  1995-01-02 09:11:34.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/rfc931.c    2002-01-07 08:50:19.000000000 -0600
-@@ -33,7 +33,7 @@
- int     rfc931_timeout = RFC931_TIMEOUT;/* Global so it can be changed */
--static jmp_buf timebuf;
-+static sigjmp_buf timebuf;
- /* fsocket - open stdio stream on top of socket */
-@@ -62,7 +62,7 @@
- static void timeout(sig)
- int     sig;
- {
--    longjmp(timebuf, sig);
-+    siglongjmp(timebuf, sig);
- }
- /* rfc931 - return remote user name, given socket structures */
-@@ -99,7 +99,7 @@
-        * Set up a timer so we won't get stuck while waiting for the server.
-        */
--      if (setjmp(timebuf) == 0) {
-+      if (sigsetjmp(timebuf,1) == 0) {
-           signal(SIGALRM, timeout);
-           alarm(rfc931_timeout);
-diff -Naur tcp_wrappers_7.6/safe_finger.8 tcp_wrappers_7.6.gimli/safe_finger.8
---- tcp_wrappers_7.6/safe_finger.8     1969-12-31 18:00:00.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/safe_finger.8       2002-01-07 08:50:19.000000000 -0600
-@@ -0,0 +1,34 @@
-+.TH SAFE_FINGER 8 "21th June 1997" Linux "Linux Programmer's Manual"
-+.SH NAME
-+safe_finger \- finger client wrapper that protects against nasty stuff
-+from finger servers
-+.SH SYNOPSIS
-+.B safe_finger [finger_options]
-+.SH DESCRIPTION
-+The
-+.B safe_finger
-+command protects against nasty stuff from finger servers. Use this
-+program for automatic reverse finger probes from the
-+.B tcp_wrapper
-+.B (tcpd)
-+, not the raw finger command. The
-+.B safe_finger
-+command makes sure that the finger client is not run with root
-+privileges. It also runs the finger client with a defined PATH
-+environment.
-+.B safe_finger
-+will also protect you from problems caused by the output of some
-+finger servers. The problem: some programs may react to stuff in
-+the first column. Other programs may get upset by thrash anywhere
-+on a line. File systems may fill up as the finger server keeps
-+sending data. Text editors may bomb out on extremely long lines.
-+The finger server may take forever because it is somehow wedged.
-+.B safe_finger
-+takes care of all this badness.
-+.SH SEE ALSO
-+.BR hosts_access (5),
-+.BR hosts_options (5),
-+.BR tcpd (8)
-+.SH AUTHOR
-+Wietse Venema, Eindhoven University of Technology, The Netherlands.
-+
-diff -Naur tcp_wrappers_7.6/safe_finger.c tcp_wrappers_7.6.gimli/safe_finger.c
---- tcp_wrappers_7.6/safe_finger.c     1994-12-28 10:42:42.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/safe_finger.c       2002-01-07 08:50:19.000000000 -0600
-@@ -26,21 +26,24 @@
- #include <stdio.h>
- #include <ctype.h>
- #include <pwd.h>
-+#include <syslog.h>
- extern void exit();
- /* Local stuff */
--char    path[] = "PATH=/bin:/usr/bin:/usr/ucb:/usr/bsd:/etc:/usr/etc:/usr/sbin";
-+char    path[] = "PATH=/bin:/usr/bin:/sbin:/usr/sbin";
- #define       TIME_LIMIT      60              /* Do not keep listinging forever */
- #define       INPUT_LENGTH    100000          /* Do not keep listinging forever */
- #define       LINE_LENGTH     128             /* Editors can choke on long lines */
- #define       FINGER_PROGRAM  "finger"        /* Most, if not all, UNIX systems */
- #define       UNPRIV_NAME     "nobody"        /* Preferred privilege level */
--#define       UNPRIV_UGID     32767           /* Default uid and gid */
-+#define       UNPRIV_UGID     65534           /* Default uid and gid */
- int     finger_pid;
-+int   allow_severity = SEVERITY;
-+int   deny_severity = LOG_WARNING;
- void    cleanup(sig)
- int     sig;
-diff -Naur tcp_wrappers_7.6/scaffold.c tcp_wrappers_7.6.gimli/scaffold.c
---- tcp_wrappers_7.6/scaffold.c        1997-03-21 12:27:24.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/scaffold.c  2002-01-07 08:50:19.000000000 -0600
-@@ -180,10 +180,12 @@
- /* ARGSUSED */
--void    rfc931(request)
--struct request_info *request;
-+void    rfc931(rmt_sin, our_sin, dest)
-+struct sockaddr_in *rmt_sin;
-+struct sockaddr_in *our_sin;
-+char   *dest;
- {
--    strcpy(request->user, unknown);
-+    strcpy(dest, unknown);
- }
- /* check_path - examine accessibility */
-diff -Naur tcp_wrappers_7.6/socket.c tcp_wrappers_7.6.gimli/socket.c
---- tcp_wrappers_7.6/socket.c  1997-03-21 12:27:25.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/socket.c    2002-01-07 08:50:19.000000000 -0600
-@@ -76,7 +76,11 @@
- {
-     static struct sockaddr_in client;
-     static struct sockaddr_in server;
-+#if !defined (__GLIBC__)
-     int     len;
-+#else /* __GLIBC__ */
-+    size_t  len;
-+#endif /* __GLIBC__ */
-     char    buf[BUFSIZ];
-     int     fd = request->fd;
-@@ -224,7 +228,11 @@
- {
-     char    buf[BUFSIZ];
-     struct sockaddr_in sin;
-+#if !defined(__GLIBC__)
-     int     size = sizeof(sin);
-+#else /* __GLIBC__ */
-+    size_t  size = sizeof(sin);
-+#endif /* __GLIBC__ */
-     /*
-      * Eat up the not-yet received datagram. Some systems insist on a
-diff -Naur tcp_wrappers_7.6/tcpd.8 tcp_wrappers_7.6.gimli/tcpd.8
---- tcp_wrappers_7.6/tcpd.8    1996-02-21 09:39:16.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/tcpd.8      2002-01-07 08:50:19.000000000 -0600
-@@ -94,7 +94,7 @@
- .PP
- The example assumes that the network daemons live in /usr/etc. On some
- systems, network daemons live in /usr/sbin or in /usr/libexec, or have
--no `in.\' prefix to their name.
-+no `in.' prefix to their name.
- .SH EXAMPLE 2
- This example applies when \fItcpd\fR expects that the network daemons
- are left in their original place.
-@@ -110,26 +110,26 @@
- becomes:
- .sp
- .ti +5
--finger  stream  tcp  nowait  nobody  /some/where/tcpd     in.fingerd
-+finger  stream  tcp  nowait  nobody  /usr/sbin/tcpd       in.fingerd
- .sp
- .fi
- .PP
- The example assumes that the network daemons live in /usr/etc. On some
- systems, network daemons live in /usr/sbin or in /usr/libexec, the
--daemons have no `in.\' prefix to their name, or there is no userid
-+daemons have no `in.' prefix to their name, or there is no userid
- field in the inetd configuration file.
- .PP
- Similar changes will be needed for the other services that are to be
--covered by \fItcpd\fR.  Send a `kill -HUP\' to the \fIinetd\fR(8)
-+covered by \fItcpd\fR.  Send a `kill -HUP' to the \fIinetd\fR(8)
- process to make the changes effective. AIX users may also have to
--execute the `inetimp\' command.
-+execute the `inetimp' command.
- .SH EXAMPLE 3
- In the case of daemons that do not live in a common directory ("secret"
- or otherwise), edit the \fIinetd\fR configuration file so that it
- specifies an absolute path name for the process name field. For example:
- .nf
- .sp
--    ntalk  dgram  udp  wait  root  /some/where/tcpd  /usr/local/lib/ntalkd
-+    ntalk  dgram  udp  wait  root  /usr/sbin/tcpd  /usr/sbin/in.ntalkd
- .sp
- .fi
- .PP
-diff -Naur tcp_wrappers_7.6/tcpd.h tcp_wrappers_7.6.gimli/tcpd.h
---- tcp_wrappers_7.6/tcpd.h    1996-03-19 09:22:25.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/tcpd.h      2002-01-07 08:50:19.000000000 -0600
-@@ -4,6 +4,25 @@
-   * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
-   */
-+#ifndef _TCPWRAPPERS_TCPD_H
-+#define _TCPWRAPPERS_TCPD_H
-+
-+/* someone else may have defined this */
-+#undef  __P
-+
-+/* use prototypes if we have an ANSI C compiler or are using C++ */
-+#if defined(__STDC__) || defined(__cplusplus)
-+#define __P(args)       args
-+#else
-+#define __P(args)       ()
-+#endif
-+
-+/* Need definitions of struct sockaddr_in and FILE. */
-+#include <netinet/in.h>
-+#include <stdio.h>
-+
-+__BEGIN_DECLS
-+
- /* Structure to describe one communications endpoint. */
- #define STRING_LENGTH 128             /* hosts, users, processes */
-@@ -25,10 +44,10 @@
-     char    pid[10];                  /* access via eval_pid(request) */
-     struct host_info client[1];               /* client endpoint info */
-     struct host_info server[1];               /* server endpoint info */
--    void  (*sink) ();                 /* datagram sink function or 0 */
--    void  (*hostname) ();             /* address to printable hostname */
--    void  (*hostaddr) ();             /* address to printable address */
--    void  (*cleanup) ();              /* cleanup function or 0 */
-+    void  (*sink) __P((int));         /* datagram sink function or 0 */
-+    void  (*hostname) __P((struct host_info *)); /* address to printable hostname */
-+    void  (*hostaddr) __P((struct host_info *)); /* address to printable address */
-+    void  (*cleanup) __P((struct request_info *)); /* cleanup function or 0 */
-     struct netconfig *config;         /* netdir handle */
- };
-@@ -61,25 +80,30 @@
- /* Global functions. */
- #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
--extern void fromhost();                       /* get/validate client host info */
-+extern void fromhost __P((struct request_info *));    /* get/validate client host info */
- #else
- #define fromhost sock_host            /* no TLI support needed */
- #endif
--extern int hosts_access();            /* access control */
--extern void shell_cmd();              /* execute shell command */
--extern char *percent_x();             /* do %<char> expansion */
--extern void rfc931();                 /* client name from RFC 931 daemon */
--extern void clean_exit();             /* clean up and exit */
--extern void refuse();                 /* clean up and exit */
--extern char *xgets();                 /* fgets() on steroids */
--extern char *split_at();              /* strchr() and split */
--extern unsigned long dot_quad_addr(); /* restricted inet_addr() */
-+extern void shell_cmd __P((char *));  /* execute shell command */
-+extern char *percent_x __P((char *, int, char *, struct request_info *)); /* do %<char> expansion */
-+extern void rfc931 __P((struct sockaddr_in *, struct sockaddr_in *, char *)); /* client name from RFC 931 daemon */
-+extern void clean_exit __P((struct request_info *)); /* clean up and exit */
-+extern void refuse __P((struct request_info *));      /* clean up and exit */
-+extern char *xgets __P((char *, int, FILE *));        /* fgets() on steroids */
-+extern char *split_at __P((char *, int));     /* strchr() and split */
-+extern unsigned long dot_quad_addr __P((char *)); /* restricted inet_addr() */
- /* Global variables. */
-+#ifdef HAVE_WEAKSYMS
-+extern int allow_severity __attribute__ ((weak)); /* for connection logging */
-+extern int deny_severity __attribute__ ((weak)); /* for connection logging */
-+#else
- extern int allow_severity;            /* for connection logging */
- extern int deny_severity;             /* for connection logging */
-+#endif
-+
- extern char *hosts_allow_table;               /* for verification mode redirection */
- extern char *hosts_deny_table;                /* for verification mode redirection */
- extern int hosts_access_verbose;      /* for verbose matching mode */
-@@ -92,9 +116,14 @@
-   */
- #ifdef __STDC__
-+extern int hosts_access(struct request_info *request);
-+extern int hosts_ctl(char *daemon, char *client_name, char *client_addr, 
-+                     char *client_user);
- extern struct request_info *request_init(struct request_info *,...);
- extern struct request_info *request_set(struct request_info *,...);
- #else
-+extern int hosts_access();
-+extern int hosts_ctl();
- extern struct request_info *request_init();   /* initialize request */
- extern struct request_info *request_set();    /* update request structure */
- #endif
-@@ -117,27 +146,31 @@
-   * host_info structures serve as caches for the lookup results.
-   */
--extern char *eval_user();             /* client user */
--extern char *eval_hostname();         /* printable hostname */
--extern char *eval_hostaddr();         /* printable host address */
--extern char *eval_hostinfo();         /* host name or address */
--extern char *eval_client();           /* whatever is available */
--extern char *eval_server();           /* whatever is available */
-+extern char *eval_user __P((struct request_info *));  /* client user */
-+extern char *eval_hostname __P((struct host_info *)); /* printable hostname */
-+extern char *eval_hostaddr __P((struct host_info *)); /* printable host address */
-+extern char *eval_hostinfo __P((struct host_info *)); /* host name or address */
-+extern char *eval_client __P((struct request_info *));        /* whatever is available */
-+extern char *eval_server __P((struct request_info *));        /* whatever is available */
- #define eval_daemon(r)        ((r)->daemon)   /* daemon process name */
- #define eval_pid(r)   ((r)->pid)      /* process id */
- /* Socket-specific methods, including DNS hostname lookups. */
--extern void sock_host();              /* look up endpoint addresses */
--extern void sock_hostname();          /* translate address to hostname */
--extern void sock_hostaddr();          /* address to printable address */
-+/* look up endpoint addresses */
-+extern void sock_host __P((struct request_info *));
-+/* translate address to hostname */
-+extern void sock_hostname __P((struct host_info *));
-+/* address to printable address */
-+extern void sock_hostaddr __P((struct host_info *));
-+
- #define sock_methods(r) \
-       { (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; }
- /* The System V Transport-Level Interface (TLI) interface. */
- #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
--extern void tli_host();                       /* look up endpoint addresses etc. */
-+extern void tli_host __P((struct request_info *));    /* look up endpoint addresses etc. */
- #endif
-  /*
-@@ -178,7 +211,7 @@
-   * behavior.
-   */
--extern void process_options();                /* execute options */
-+extern void process_options __P((char *, struct request_info *)); /* execute options */
- extern int dry_run;                   /* verification flag */
- /* Bug workarounds. */
-@@ -217,3 +250,7 @@
- #define strtok        my_strtok
- extern char *my_strtok();
- #endif
-+
-+__END_DECLS
-+
-+#endif /* tcpd.h */
-diff -Naur tcp_wrappers_7.6/tcpdchk.c tcp_wrappers_7.6.gimli/tcpdchk.c
---- tcp_wrappers_7.6/tcpdchk.c 1997-02-11 19:13:25.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/tcpdchk.c   2002-01-07 08:50:19.000000000 -0600
-@@ -350,6 +350,8 @@
- {
-     if (pat[0] == '@') {
-       tcpd_warn("%s: daemon name begins with \"@\"", pat);
-+    } else if (pat[0] == '/') {
-+        tcpd_warn("%s: daemon name begins with \"/\"", pat);
-     } else if (pat[0] == '.') {
-       tcpd_warn("%s: daemon name begins with dot", pat);
-     } else if (pat[strlen(pat) - 1] == '.') {
-@@ -382,6 +384,8 @@
- {
-     if (pat[0] == '@') {                      /* @netgroup */
-       tcpd_warn("%s: user name begins with \"@\"", pat);
-+    } else if (pat[0] == '/') {
-+        tcpd_warn("%s: user name begins with \"/\"", pat);
-     } else if (pat[0] == '.') {
-       tcpd_warn("%s: user name begins with dot", pat);
-     } else if (pat[strlen(pat) - 1] == '.') {
-@@ -402,8 +406,13 @@
- static int check_host(pat)
- char   *pat;
- {
-+    char    buf[BUFSIZ];
-     char   *mask;
-     int     addr_count = 1;
-+    FILE   *fp;
-+    struct tcpd_context saved_context;
-+    char   *cp;
-+    char   *wsp = " \t\r\n";
-     if (pat[0] == '@') {                      /* @netgroup */
- #ifdef NO_NETGRENT
-@@ -422,6 +431,21 @@
-       tcpd_warn("netgroup support disabled");
- #endif
- #endif
-+    } else if (pat[0] == '/') {                 /* /path/name */
-+        if ((fp = fopen(pat, "r")) != 0) {
-+            saved_context = tcpd_context;
-+            tcpd_context.file = pat;
-+            tcpd_context.line = 0;
-+            while (fgets(buf, sizeof(buf), fp)) {
-+                tcpd_context.line++;
-+                for (cp = strtok(buf, wsp); cp; cp = strtok((char *) 0, wsp))
-+                    check_host(cp);
-+            }
-+            tcpd_context = saved_context;
-+            fclose(fp);
-+        } else if (errno != ENOENT) {
-+            tcpd_warn("open %s: %m", pat);
-+        }
-     } else if (mask = split_at(pat, '/')) {   /* network/netmask */
-       if (dot_quad_addr(pat) == INADDR_NONE
-           || dot_quad_addr(mask) == INADDR_NONE)
-diff -Naur tcp_wrappers_7.6/try-from.8 tcp_wrappers_7.6.gimli/try-from.8
---- tcp_wrappers_7.6/try-from.8        1969-12-31 18:00:00.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/try-from.8  2002-01-07 08:50:19.000000000 -0600
-@@ -0,0 +1,28 @@
-+.TH TRY-FROM 8 "21th June 1997" Linux "Linux Programmer's Manual"
-+.SH NAME
-+try-from \- test program for the tcp_wrapper
-+.SH SYNOPSIS
-+.B try-from
-+.SH DESCRIPTION
-+The
-+.B try-from
-+command can be called via a remote shell command to find out
-+if the hostname and address are properly recognized
-+by the
-+.B tcp_wrapper
-+library, if username lookup works, and (SysV only) if the TLI
-+on top of IP heuristics work. Diagnostics are reported through
-+.BR syslog (3)
-+and redirected to stderr.
-+
-+Example:
-+
-+rsh host /some/where/try-from
-+
-+.SH SEE ALSO
-+.BR hosts_access (5),
-+.BR hosts_options (5),
-+.BR tcpd (8)
-+.SH AUTHOR
-+Wietse Venema, Eindhoven University of Technology, The Netherlands.
-+
-diff -Naur tcp_wrappers_7.6/weak_symbols.c tcp_wrappers_7.6.gimli/weak_symbols.c
---- tcp_wrappers_7.6/weak_symbols.c    1969-12-31 18:00:00.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/weak_symbols.c      2002-01-07 08:50:19.000000000 -0600
-@@ -0,0 +1,11 @@
-+ /*
-+  * @(#) weak_symbols.h 1.5 99/12/29 23:50
-+  * 
-+  * Author: Anthony Towns <ajt@debian.org>
-+  */
-+
-+#ifdef HAVE_WEAKSYMS
-+#include <syslog.h>
-+int deny_severity = LOG_WARNING;
-+int allow_severity = SEVERITY; 
-+#endif
-diff -Naur tcp_wrappers_7.6/workarounds.c tcp_wrappers_7.6.gimli/workarounds.c
---- tcp_wrappers_7.6/workarounds.c     1996-03-19 09:22:26.000000000 -0600
-+++ tcp_wrappers_7.6.gimli/workarounds.c       2002-01-07 08:50:19.000000000 -0600
-@@ -163,7 +163,11 @@
- int     fix_getpeername(sock, sa, len)
- int     sock;
- struct sockaddr *sa;
-+#if !defined(__GLIBC__)
- int    *len;
-+#else /* __GLIBC__ */
-+size_t *len;
-+#endif /* __GLIBC__ */
- {
-     int     ret;
-     struct sockaddr_in *sin = (struct sockaddr_in *) sa;
diff --git a/src/patches/udev-208-fix_uint8_t.patch b/src/patches/udev-208-fix_uint8_t.patch
deleted file mode 100644 (file)
index 06aee3b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur systemd-208.org/src/udev/mtd_probe/mtd_probe.h systemd-208/src/udev/mtd_probe/mtd_probe.h
---- systemd-208.org/src/udev/mtd_probe/mtd_probe.h     2013-08-13 22:02:47.000000000 +0200
-+++ systemd-208/src/udev/mtd_probe/mtd_probe.h 2017-02-07 18:08:33.492985563 +0100
-@@ -18,6 +18,7 @@
-  */
- #include <mtd/mtd-user.h>
-+#include <stdint.h>
- /* Full oob structure as written on the flash */
- struct sm_oob {
diff --git a/src/patches/udev-208_remove_systemd_log.patch b/src/patches/udev-208_remove_systemd_log.patch
deleted file mode 100644 (file)
index 927de1e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur systemd-208.org/src/libudev/libudev-util.c systemd-208/src/libudev/libudev-util.c
---- systemd-208.org/src/libudev/libudev-util.c 2013-09-23 21:31:55.000000000 +0200
-+++ systemd-208/src/libudev/libudev-util.c     2013-11-19 23:18:10.326350131 +0100
-@@ -481,7 +481,7 @@
-         if (fd < 0)
-                 return -errno;
--        len = snprintf(text, sizeof(text), "<30>systemd-udevd[%u]: ", getpid());
-+        len = snprintf(text, sizeof(text), "udevd[%u]: ", getpid());
-         va_start(ap, fmt);
-         len += vsnprintf(text + len, sizeof(text) - len, fmt, ap);