LINUX.ORG.RU

Не могу скомпилировать драйвер WLAN адаптера.

 ,


0

1

Здравствуйте. ОС CentOS 6.4. Проблема описана в заголовке. Не могли бы подсказать, в чем может быть дело?

[root@notebook hybrid_wl]# make KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd` make[1]: Entering directory `/usr/src/kernels/2.6.32-358.14.1.el6.i686' CFG80211 API is prefered for this kernel version Using CFG80211 API LD /root/hybrid_wl/built-in.o CC [M] /root/hybrid_wl/src/shared/linux_osl.o CC [M] /root/hybrid_wl/src/wl/sys/wl_linux.o CC [M] /root/hybrid_wl/src/wl/sys/wl_iw.o CC [M] /root/hybrid_wl/src/wl/sys/wl_cfg80211.o /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:64: предупреждение: декларация ‘enum tx_power_setting’ внутри списка параметров /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:64: предупреждение: область действия типа - только данная декларация или определение, что может не соответствовать вашим намерениям /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1110: предупреждение: декларация ‘enum tx_power_setting’ внутри списка параметров /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1110: ошибка: параметр 2 (‘type’) имеет неполный тип /root/hybrid_wl/src/wl/sys/wl_cfg80211.c: В функции ‘wl_cfg80211_set_tx_power’: /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1123: ошибка: ‘TX_POWER_AUTOMATIC’ не описан (первое использование в этой функции) /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1123: ошибка: (Сообщение о неописанном идентификаторе выдается один раз /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1123: ошибка: для каждой функции, в которой он используется.) /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1125: ошибка: ‘TX_POWER_LIMITED’ не описан (первое использование в этой функции) /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1131: ошибка: ‘TX_POWER_FIXED’ не описан (первое использование в этой функции) /root/hybrid_wl/src/wl/sys/wl_cfg80211.c: На верхнем уровне: /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1649: предупреждение: несовместимый тип указателя в инициализации /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1651: предупреждение: несовместимый тип указателя в инициализации /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1652: предупреждение: несовместимый тип указателя в инициализации /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1653: предупреждение: несовместимый тип указателя в инициализации /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1654: предупреждение: несовместимый тип указателя в инициализации /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1658: предупреждение: несовместимый тип указателя в инициализации /root/hybrid_wl/src/wl/sys/wl_cfg80211.c: В функции ‘wl_inform_single_bss’: /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:1817: ошибка: слишком мало аргументов в вызове функции ‘ieee80211_channel_to_frequency’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c: В функции ‘wl_bss_roaming_done’: /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2117: предупреждение: в передаче аргумента 2 ‘cfg80211_roamed’: несовместимый тип указателя include/net/cfg80211.h:3124: замечание: expected ‘struct ieee80211_channel *’ but argument is of type ‘u8 *’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2117: предупреждение: при передаче аргумента 4 ‘cfg80211_roamed’ целое преобразуется в указатель без приведения типа include/net/cfg80211.h:3124: замечание: expected ‘const u8 *’ but argument is of type ‘s32’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2117: предупреждение: при передаче аргумента 5 ‘cfg80211_roamed’ указатель преобразуется в целое без приведения типа include/net/cfg80211.h:3124: замечание: expected ‘size_t’ but argument is of type ‘u8 *’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2117: предупреждение: при передаче аргумента 6 ‘cfg80211_roamed’ целое преобразуется в указатель без приведения типа include/net/cfg80211.h:3124: замечание: expected ‘const u8 *’ but argument is of type ‘s32’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2117: ошибка: слишком мало аргументов в вызове функции ‘cfg80211_roamed’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c: В функции ‘wl_bss_connect_done’: /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2149: предупреждение: в передаче аргумента 2 ‘cfg80211_roamed’: несовместимый тип указателя include/net/cfg80211.h:3124: замечание: expected ‘struct ieee80211_channel *’ but argument is of type ‘u8 *’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2149: предупреждение: при передаче аргумента 4 ‘cfg80211_roamed’ целое преобразуется в указатель без приведения типа include/net/cfg80211.h:3124: замечание: expected ‘const u8 *’ but argument is of type ‘s32’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2149: предупреждение: при передаче аргумента 5 ‘cfg80211_roamed’ указатель преобразуется в целое без приведения типа include/net/cfg80211.h:3124: замечание: expected ‘size_t’ but argument is of type ‘u8 *’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2149: предупреждение: при передаче аргумента 6 ‘cfg80211_roamed’ целое преобразуется в указатель без приведения типа include/net/cfg80211.h:3124: замечание: expected ‘const u8 *’ but argument is of type ‘s32’ /root/hybrid_wl/src/wl/sys/wl_cfg80211.c:2149: ошибка: слишком мало аргументов в вызове функции ‘cfg80211_roamed’ make[2]: *** [/root/hybrid_wl/src/wl/sys/wl_cfg80211.o] Ошибка 1 make[1]: *** [_module_/root/hybrid_wl] Ошибка 2 make[1]: Leaving directory `/usr/src/kernels/2.6.32-358.14.1.el6.i686' make: *** [all] Ошибка 2


Ответ на: комментарий от comp00

Извиняюсь, редко бываю на этом форуме, не знал.

Wheely
() автор топика

Видимо, заголовок как-то обрезался, так как там не указана, ни модель адаптера (pci id), ни откуда взяты драйвера.

mky ★★★★★
()
Ответ на: комментарий от mky

Драйвер брался с http://www.broadcom.com/support/802.11/linux_sta.php . [root@notebook ~]# lspci -vnn | grep 14e4 07:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller [14e4:4727] (rev 01) Кажется, перепробовал уже все. Откомпилировать я этот драйвер не смог, нашел единственное решение на wiki centos, закомментировать пару строк, но оно не помогло. Пытался ставить с помощью b43-fwcutter - тоже ничего. Нашел рпм-пакет broadcom-wl.i686, но он не ставится: нужно broadcom-wl-kmdl-5.100.82.112-6.el6, а этого kmdl нигде нет (не только этой версии).

Wheely
() автор топика
Ответ на: комментарий от Wheely

Вот здесь http://packages.atrpms.net/dist/el6/broadcom-wl/ есть всё — src.rpm, если вам хочется компилить, kmld-пакет — готовый модуль ядра и broadcom-wl.rpm (Readme и прочие файлы для этого модуля.

То, что broadcom-wl-5.100.82.38-5.el6.i686.rpm требует broadcom-wl-kmdl-5.100.82.38-5.el6 не означает, что вам нужен пакет broadcom-wl-kmdl-5.100.82.38-5.el6.rpm. Вам нужен пакет, которые обеспечивает broadcom-wl-kmdl-5.100.82.38-5.el6, например, broadcom-wl-kmdl-2.6.32-220.13.1.el6-5.100.82.38-5.el6.i686.rpm обеспечиват нужную зависимость, но требует /boot/vmlinuz-2.6.32-220.13.1.el6.i686, так что берите kmdl от установленной у вас версии ядра.

Как я понял из той каши, что была в первом посте, у вас 2.6.32-358.14.1, такого kmdl там нет, так что, либо откатывайте версию ядра не более старую, либо собирайте rpm из src.rpm пакета. Там сборка должна пройти без ошибок от компилятора.

mky ★★★★★
()
Ответ на: комментарий от mky

Вопрос решен. Драйвер скомпилировался только с параметром API=WEXT. Но и это еще не все, даже с установленным драйвером вайфай работать не захотел.

07:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller [14e4:4727] (rev 01) Subsystem: Hewlett-Packard Company Device [103c:1795] Kernel driver in use: wl Kernel modules: wl, bcma

Это сейчас. После установки драйвера Kernel driver in use: был bcma-bridge. Я заблеклистил wl и очень удивился, когда вайфай мой все же не работал. Заблеклистил bcma, драйвер стал wl и вайфай заработал.

broadcom-wl я нашел под свое ядро в репозитории какого-то кулибина, уже забыл, к сожалению, какого. Из известных репозиториев нигде не было. Но все равно спасибо за ответ. :)

Wheely
() автор топика
Ответ на: комментарий от Wheely

Замечательно. Модуль (.ko-файл) засунули в каталог extra?

Заблеклистил bcma, драйвер стал wl и вайфай заработал.

Интерестно, получается, что в 2.6.32-358 появился модуль bcma.ko, в 2.6.32-220 его вобще не было, поэтому пакет broadcom-wl-5.100.82.38-5.el6.i686.rpm содержал файл /etc/modprobe.d/broadcom-wl-blacklist.conf где было только такое:

blacklist bcm43xx
blacklist ssb
blacklist b43
blacklist ndiswrapper

mky ★★★★★
()
Ответ на: комментарий от Wheely

По идее нужно в /lib/modules/$(KERNELRELEASE)/extra, так как модуль не входит в исходники ядра. При этом при обновлении ядра (через yum update) модули из extra копируются (через symlink) в каталог weak-updates нового ядра и иногда даже продолжают работать :-)

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.