[devel] ppp-2.4.4 - проблемы с CDMA(3G) USB модемом
Michael Shigorin
=?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Вс Апр 22 20:58:43 MSD 2007
On Sun, Apr 22, 2007 at 03:09:53PM +0300, Yuriy Kashirin wrote:
> Довелось на днях поиграться вот с таким девайсом:
> http://people.net.ua/ru/equipments/internet/u-550/
О, мне тоже.
> Завести его удалось, результат зафиксирован здесь:
> http://www.freesource.info/wiki/Stat'i/NastrojjkaInterneta/PeopleNet
> Но есть одна проблема, которую в двух словах можно сформулировать
> так: все работает с ppp-2.4.2, но не работает с ppp-2.4.4 - pppd
> вылетает с ошибкой при попытке запуска chat-скрипта коннекта.
Я проверял на буке -- тут был _вроде бы_ 2.4.4 (зуб не дам, дело
было больше недели тому и что с холдами-дистапгрейдами -- уже
сложно установить точно).
Дозванивается, но дальше посылали на аутентификации (напутали
с логинами, ну да не суть важно). Кажется, потом его заткнули
в машинку с образом, где 2.4.2, и с правильным паролем даже
достучались.
> Заглянул в исходники. В pppd/tty.c нашел нужное место в
> ходе инициализации устройства:
> #ifndef __linux__
> /*
> * Linux 2.4 and above blocks normal writes to the tty
> * when it is in PPP line discipline, so this isn't needed.
Очхрш.
> */
> /*
> * Do the equivalent of `mesg n' to stop broadcast messages.
> */
> if (fstat(ttyfd, &statbuf) < 0
> || fchmod(ttyfd, statbuf.st_mode & ~(S_IWGRP | S_IWOTH)) < 0) {
> warn("Couldn't restrict write permissions to %s: %m", devnam);
> } else
> tty_mode = statbuf.st_mode;
> #endif /* __linux__ */
>
> В ppp-2.4.2 в этом месте нет #ifndef __linux__, поэтому
> по strace видны fstat и fchmod, а в ppp-2.4.4 их нет.
> Убрал эти #ifndef и пересобрал ppp-2.4.4... и все чудесным
> образом заработало! (правда, вылезло в другом месте -
> соединение периодически рвется в отличие от 2.4.2, но это уже
> другая песня).
>
> Как наличие fstat/fchmod может влиять на отсутствие EIO в
> дальнейшем? Или это косяки не ppp, а самого устройства
> или драйвера или еще чего? Что еще можно поковырять?
>
> ----
> Попутно, мэйнтейнеру ppp. В пакете приложен патч
> ppp-2.4.2-alt-leave-ttyperms-alone.patch (насколько я
> понимаю, из #6042). Он модифицирует как раз этот кусок
> кода, который из-за #ifndef __linux__, не компилируется.
> Соответственно, этот патч или становится ненужным, или
> его надо исправлять, убирая из исходного кода еще и
> #ifndef
Я бы пока предложил выкинуть этот ifndef нафиг и посмотреть,
что на практике относительно их комментариев.
--
---- WBR, Michael Shigorin <mike на altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
Подробная информация о списке рассылки Devel