[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