Francesco Lavra wrote: > this patch adds support for reset_resume in cdc-acm. This function simply calls > tty_hangup() if there was any user of the tty at suspend time, and then calls > the normal resume function. Tested with a Samsung SGH-U900 device. > Without reset_resume, every time the system is hibernated during a PPP > connection, the device moves from ttyACMx to ttyACM(x+1), an it must be > unplugged and replugged in order for its original node ttyACMx to re-appear. > Instead, with reset_resume the device retains its node name across hibernation > cycles. Hi, I'm playing with a back-port of this patch to v2.6.29 for a similar scenario (suspend during an active PPP connection). I see that if we hit the reset-resume, the tty_hangup() call results in the PPP connection getting dropped. Do you know if it is possible to have the reset-resume without the tty_hangup(), and without moving the device from ttyACMx to ttyACM(x+1)? Thanks in advance, Anand > Signed-off-by: Francesco Lavra <francescolavra@xxxxxxxxxxxx> > > --- a/drivers/usb/class/cdc-acm.c 2009-12-07 16:22:20.000000000 +0100 > +++ b/drivers/usb/class/cdc-acm.c 2009-12-08 08:39:49.000000000 +0100 > @@ -1460,6 +1460,23 @@ err_out: > return rv; > } > > +static int acm_reset_resume(struct usb_interface *intf) > +{ > + struct acm *acm = usb_get_intfdata(intf); > + struct tty_struct *tty; > + > + mutex_lock(&acm->mutex); > + if (acm->port.count) { > + tty = tty_port_tty_get(&acm->port); > + if (tty) { > + tty_hangup(tty); > + tty_kref_put(tty); > + } > + } > + mutex_unlock(&acm->mutex); > + return acm_resume(intf); > +} > + > #endif /* CONFIG_PM */ > /* > * USB driver structure. > @@ -1546,6 +1563,7 @@ static struct usb_driver acm_driver = { > #ifdef CONFIG_PM > .suspend = acm_suspend, > .resume = acm_resume, > + .reset_resume = acm_reset_resume, > #endif > .id_table = acm_ids, > #ifdef CONFIG_PM > > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html