Я несколько месяцев назад описывал свои мучения с железкой Netgear R7500:
Entware-ng - основные сведения
В общем, как-то так получилось, что все это вылилось в то, что Нетгир забросил поддержку этой железки (статус end-of-life из-за проблемных драйверов Quantenna), а я продолжил эту поддержку. Надо же как-то выкручиваться. Сейчас моя модификация прошивки приобрела како-то удобоваримый вид, удалось заменить проблемные драйвера Quantenna, выдрав их в бинарном виде из како-то беты, обновил тулчейн, заменил кучу пакетов прошивки, использующей OpenWRT AA, на новые OpenWRT-шные и из Вашей Entware, ориентировал прошивку на использование Entware-NG (еще раз спасибо за этот проект). И как-то вышло, что люди стали использовать мою прошивку. Немного народа, но есть.
Вопрос к знатокам OpenWRT, ARM: если коротко, как включить харверную акселерацию в OpenSSL? Процессор в железке IPQ8064, Krait, то есть аналог Cortex A15. В стоковой прошивке вообще использовалась версия OpenSSL 0.9.8. Я заменил на 1.0.2h но получилосб без хардверной акселерации. Я тут подзапутался, заблудился в трех соснах. Я все же новичок в OpenWRT, OpenSSL и в ARM-ах. Если я правильно понимаю, в Makefile OpenSSL для OpenWRT выключена эта акселерация, закоментированы строки:
Код: Выделить всё
ifeq ($(CONFIG_x86_64),y)
OPENSSL_TARGET:=linux-x86_64-openwrt
OPENSSL_MAKEFLAGS += LIBDIR=lib
else
OPENSSL_OPTIONS+=no-sse2
ifeq ($(CONFIG_mips)$(CONFIG_mipsel),y)
OPENSSL_TARGET:=linux-mips-openwrt
# else ifeq ($(CONFIG_arm)$(CONFIG_armeb),y)
# OPENSSL_TARGET:=linux-armv4-openwrt
else
OPENSSL_TARGET:=linux-generic-openwrt
OPENSSL_OPTIONS+=no-perlasm
endif
endif
то есть, испрользуется linux-generic-openwrt. Если я убираю коментарии, получаю неразрешенные ссылки при линковке. Используется ассемблер, вижу. Что здесь за проблема, почему закоментировано в OpenWRT и почему неразрешенные ссылки? Может, нужна еще поддержка на уровне ядра? Тут у меня загвоздка, Нетгир использует свою модификацию ядра 3.4.103 и бинарные (прекомпилированные) драйверы прошивки привязаны к этому конкретному ядру...
Сообщения при линковке:
Код: Выделить всё
s_socket.o: In function `do_server':
s_socket.c:(.text+0x698): warning: gethostbyaddr is obsolescent, use getaddrinfo() instead.
s_socket.o: In function `GetHostByName':
s_socket.c:(.text+0xd4): warning: gethostbyname is obsolescent, use getnameinfo() instead.
../libcrypto.so: undefined reference to `bsaes_ctr32_encrypt_blocks'
../libcrypto.so: undefined reference to `aes_v8_ctr32_encrypt_blocks'
../libcrypto.so: undefined reference to `_armv7_tick'
../libcrypto.so: undefined reference to `aes_v8_encrypt'
../libcrypto.so: undefined reference to `_armv7_neon_probe'
../libcrypto.so: undefined reference to `_armv8_pmull_probe'
../libcrypto.so: undefined reference to `bsaes_xts_encrypt'
../libcrypto.so: undefined reference to `bsaes_xts_decrypt'
../libcrypto.so: undefined reference to `_armv8_sha1_probe'
../libcrypto.so: undefined reference to `aes_v8_set_decrypt_key'
../libcrypto.so: undefined reference to `bsaes_cbc_encrypt'
../libcrypto.so: undefined reference to `aes_v8_set_encrypt_key'
../libcrypto.so: undefined reference to `gcm_ghash_neon'
../libcrypto.so: undefined reference to `aes_v8_cbc_encrypt'
../libcrypto.so: undefined reference to `gcm_gmult_neon'
../libcrypto.so: undefined reference to `aes_v8_decrypt'
../libcrypto.so: undefined reference to `_armv8_aes_probe'
../libcrypto.so: undefined reference to `gcm_init_neon'
../libcrypto.so: undefined reference to `_armv8_sha256_probe'
collect2: error: ld returned 1 exit status
В общем, есть возможность вклюжить хардверное криптование для ARM в OpenSSL не трогая коды ядра? В Entware-ng тоже закоментированы эти строки.
Заранее спасибо,
Voxel.