PDA

View Full Version : System hangs hard activating ppp0 on Winmodem



dshaw256
11th May 2006, 01:06 AM
I've also posted this question to a Linmodem discussion list, but frankly, you guys are much more responsive. :) I'm hoping someone might have a good idea of where to start looking to solve a nasty system hang.

I have a Toshiba Tecra 8100 with a Lucent Winmodem chipset. A couple of months ago I was able to get the modem running correctly under Fedora Core 4 kernel 2.6.11, using (I believe) the ltmodem-2.6-7alk tarball.

I'm now trying to upgrade to kernel 2.6.16-1.2108_FC4. I started with the ltmodem-2.6-8alk tarball which I believe to be the correct version for post-2.6.12 kernels. Make ran clean, I have my *.ko modules, and I believe I faithfully followed all the installation instructions for a udev installation. On reboot I have a /dev/modem that looks correct.

But my system hangs hard when I "ifup ppp0". The only way to un-hang it is to power-cycle the laptop.

Have I missed a step? Or is this version of ltmodem not compatible with 2.6.16 kernels? Did I start from the wrong source package? I'm not sure where to start looking; any help would be greatly appreciated.

Btw, I have SELinux in "warn" mode, so I'm fairly sure that's not interfering with things. And I can still work fine with 2.6.11, so this isn't a crisis. Just an interesting and somewhat frustrating puzzle.

Thanks,

dshaw256
13th May 2006, 02:48 PM
It hangs on kernel-2.6.16-1.2096_FC4 as well. From the sound of my laptop's cooling fan, I think the thing goes into an infinite loop, rather than "hanging" per se. Any ideas? I'm stumped.

helmut_hed
23rd May 2006, 07:55 AM
If the ltmodem drivers are similar to the PCTel drivers, the problem is probably here in serial.c:

[begin quote]
static unsigned int lt_get_mctrl(struct uart_port *port)
{
struct ltmodem_port *up = (struct ltmodem_port *)port;
unsigned long flags;
unsigned char status;
unsigned int ret;

spin_lock_irqsave(&up->port.lock, flags); <<<<< REMOVE
status = serial_in(up, UART_MSR);
spin_unlock_irqrestore(&up->port.lock, flags); <<<<< REMOVE
[end quote]

if you remove the marked lines, perhaps it will stop hanging. Let me know if that works, and good luck.

Jeff Trull

dshaw256
23rd May 2006, 11:18 PM
Jeff, that worked perfectly -- I'm posting this via 2.6.16-1.2111_FC4.

Thank you, sir!