(please use reply to all and keep the previous mail) On Tue, Jul 24, 2012 at 02:29:57PM +0000, Dipen Patel wrote: > Hi Felipe, > > I think I know why my application is not receiving SIGHUP. > > When HOST sends SET_CONFIGURATION the set_config() in composite.c calls > acm_set_alt(). Now acm_set_alt() calls gserial_connect() and it will > create new port. But it never called gserial_disconnect() to close > previously called gserial_connect(), so SIGHUP is not generated. > > But why acm_set_alt() does not do gserial_disconnect() before calling > gserial_connect()?
In case of configuration change, composite.c will call f->disable()
which is implemented on acm as:
464 static void acm_disable(struct usb_function *f)
465 {
466 struct f_acm *acm = func_to_acm(f);
467 struct usb_composite_dev *cdev = f->config->cdev;
468
469 DBG(cdev, "acm ttyGS%d deactivated\n", acm->port_num);
470 gserial_disconnect(&acm->port);
471 usb_ep_disable(acm->notify);
472 acm->notify->driver_data = NULL;
473 }
there you have yor gserial_disconnect(). I suggest you enable debugging
and see where things are going fishy.
--
balbi
signature.asc
Description: Digital signature
