On Mon, Jun 9, 2008 at 6:03 PM, Alan Cox <alan@xxxxxxxxxx> wrote:> On Mon, Jun 09, 2008 at 03:23:33PM -0300, Gustavo Fernando Padovan wrote:>> The problem occurs when the execution enters on switch's default case>> and call tty_mode_ioctl() and the cmd is not TCGETS or cmd is not>> TCGETA. I don't know why this happens, but happens. On kernel 2.6.23>> Which ioctl is making it go silly ?>>> tty_mode_ioctl(). This is the unique real change between the two>> versions, the others are only code restructuring. Then I made this>> patch to revert part of changes and make modem works again. I don't>> know if this is correct. I just put the modem to work.>> It's very useful as we now know what change has had the effect, but not> what your pppd is doing which is breaking it (and thus where the real bug> may lie)>>> --- a/drivers/net/ppp_async.c. 2008-06-09 13:12:25.000000000 -0300>> +++ b/drivers/net/ppp_async.c 2008-06-09 13:15:57.000000000 -0300>> @@ -309,6 +309,11 @@>> err = 0;>> break;>>>> + case TCGETS:>> + case TCGETA:>> + err = tty_mode_ioctl(tty, file, cmd, arg);>> + break;>> +>> case TCFLSH:>> /* flush our buffers and the serial port's buffer */>> if (arg == TCIOFLUSH || arg == TCOFLUSH)>> @@ -324,8 +329,7 @@>> break;>>>> default:>> - /* Try the various mode ioctls */>> - err = tty_mode_ioctl(tty, file, cmd, arg);>> + err = -ENOIOCTLCMD;>> Can you add a printk to log which ioctl calls end up here and what they> return (both with/without the patch). That should give the needed info to> identify what is being done and returned which then breaks it. I made two tries to connect with and without the patch. The tries areseparated by a blank line. Debug without the patch: [ 5955.465357] cmd = 21506 (TCSETS) [ 5955.465369] err = 0 [ 5955.465372] ---------- [ 5987.058871] TCGETS [ 5987.059094] err = 0 [ 5987.059276] ---------- [ 5987.059645] TCGETS [ 5987.059786] err = 0 [ 5987.059863] ---------- [ 5987.060008] cmd = 21534 (TIOCGSERIAL) [ 5987.060117] err = -515 (-ENOIOCTLCML) [ 5987.060194] ---------- [ 5987.060283] cmd = 21506 [ 5987.060371] err = 0 [ 5987.060444] ---------- [ 5987.110619] cmd = 21506 [ 5987.110760] err = 0 [ 5987.110836] ---------- [ 5987.110949] cmd = 21506 [ 5987.111037] err = 0 [ 5987.111109] ---------- [ 5987.111192] TCGETS [ 5987.111272] err = 0 [ 5987.111345] ---------- [ 6000.334483] cmd = 21506 [ 6000.334494] err = 0 [ 6000.334496] ---------- Debug with the patch:[ 8207.865204] cmd = 21506 (TCSETS)[ 8207.865213] err = -515[ 8207.865215] ---------- [ 8866.939075] cmd = 21506[ 8866.939084] err = -515[ 8866.939086] ---------- The problem seems the ioctl TCSETS, with the patch (and on kernel2.6.23) it returns immediately, and on kernel 2.6.24 (without thepatch) it goes to tty_mode_ioctl(). >> From that I can work out what is going on and what the right fix may be.>> Alan>> -- ----------------------------------------------Gustavo Fernando PadovanEngenharia de Computação 2006LAS - Laboratório de Administração e Segurança de SistemasInstituto de Computação - UNICAMP gfpadovan@xxxxxxxxxxxxxxxxx@students.ic.unicamp.brpao@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Seja Livre, use Software Livre��.n��������+%������w��{.n�����{���i�)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥