[PATCH 3/3] USB : serial : pl2303 wake up after dcd status check.

2013-09-13 Thread Paul Chavent
Seems to be done this way in other drivers (ch341, 8250, ...).
And get tty reference only if dcd_change need to be called.

Signed-off-by: Paul Chavent paul.chav...@onera.fr
---
 drivers/usb/serial/pl2303.c | 17 +
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index e7a84f0..8b81188 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -854,15 +854,16 @@ static void pl2303_update_line_status(struct 
usb_serial_port *port,
spin_unlock_irqrestore(priv-lock, flags);
if (priv-line_status  UART_BREAK_ERROR)
usb_serial_handle_break(port);
-   wake_up_interruptible(port-port.delta_msr_wait);
 
-   tty = tty_port_tty_get(port-port);
-   if (!tty)
-   return;
-   if ((priv-line_status ^ prev_line_status)  UART_DCD)
-   usb_serial_handle_dcd_change(port, tty,
-   priv-line_status  UART_DCD);
-   tty_kref_put(tty);
+   if ((priv-line_status ^ prev_line_status)  UART_DCD) {
+   tty = tty_port_tty_get(port-port);
+   if (tty)
+   usb_serial_handle_dcd_change(port, tty,
+   priv-line_status  UART_DCD);
+   tty_kref_put(tty);
+   }
+
+   wake_up_interruptible(port-port.delta_msr_wait);
 }
 
 static void pl2303_read_int_callback(struct urb *urb)
-- 
1.7.12.1

--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] USB : serial : pl2303 wake up after dcd status check.

2013-09-13 Thread Paul Chavent

Hi.

This patch was just a suggestion. Don't bother with rebasing. I will 
wait your changes and remove this patch from the next submission.


Cheers.
Paul.


On 09/13/2013 06:23 PM, Johan Hovold wrote:

On Fri, Sep 13, 2013 at 05:35:13PM +0200, Paul Chavent wrote:

Seems to be done this way in other drivers (ch341, 8250, ...).
And get tty reference only if dcd_change need to be called.


This is fine. I have a patch here doing the same two changes as part of
a larger clean-up of the pl2303 interrupt handling (which in turn is
part of the MSR-refactoring I mentioned). I could rebase on top of this,
unless you care to wait another week. :)

Thanks,
Johan


Signed-off-by: Paul Chavent paul.chav...@onera.fr
---
  drivers/usb/serial/pl2303.c | 17 +
  1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index e7a84f0..8b81188 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -854,15 +854,16 @@ static void pl2303_update_line_status(struct 
usb_serial_port *port,
spin_unlock_irqrestore(priv-lock, flags);
if (priv-line_status  UART_BREAK_ERROR)
usb_serial_handle_break(port);
-   wake_up_interruptible(port-port.delta_msr_wait);

-   tty = tty_port_tty_get(port-port);
-   if (!tty)
-   return;
-   if ((priv-line_status ^ prev_line_status)  UART_DCD)
-   usb_serial_handle_dcd_change(port, tty,
-   priv-line_status  UART_DCD);
-   tty_kref_put(tty);
+   if ((priv-line_status ^ prev_line_status)  UART_DCD) {
+   tty = tty_port_tty_get(port-port);
+   if (tty)
+   usb_serial_handle_dcd_change(port, tty,
+   priv-line_status  UART_DCD);
+   tty_kref_put(tty);
+   }
+
+   wake_up_interruptible(port-port.delta_msr_wait);
  }

  static void pl2303_read_int_callback(struct urb *urb)
--
1.7.12.1




--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] USB : serial : pl2303 wake up after dcd status check.

2013-09-13 Thread Johan Hovold
On Fri, Sep 13, 2013 at 05:35:13PM +0200, Paul Chavent wrote:
 Seems to be done this way in other drivers (ch341, 8250, ...).
 And get tty reference only if dcd_change need to be called.

This is fine. I have a patch here doing the same two changes as part of
a larger clean-up of the pl2303 interrupt handling (which in turn is
part of the MSR-refactoring I mentioned). I could rebase on top of this,
unless you care to wait another week. :)

Thanks,
Johan

 Signed-off-by: Paul Chavent paul.chav...@onera.fr
 ---
  drivers/usb/serial/pl2303.c | 17 +
  1 file changed, 9 insertions(+), 8 deletions(-)
 
 diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
 index e7a84f0..8b81188 100644
 --- a/drivers/usb/serial/pl2303.c
 +++ b/drivers/usb/serial/pl2303.c
 @@ -854,15 +854,16 @@ static void pl2303_update_line_status(struct 
 usb_serial_port *port,
   spin_unlock_irqrestore(priv-lock, flags);
   if (priv-line_status  UART_BREAK_ERROR)
   usb_serial_handle_break(port);
 - wake_up_interruptible(port-port.delta_msr_wait);
  
 - tty = tty_port_tty_get(port-port);
 - if (!tty)
 - return;
 - if ((priv-line_status ^ prev_line_status)  UART_DCD)
 - usb_serial_handle_dcd_change(port, tty,
 - priv-line_status  UART_DCD);
 - tty_kref_put(tty);
 + if ((priv-line_status ^ prev_line_status)  UART_DCD) {
 + tty = tty_port_tty_get(port-port);
 + if (tty)
 + usb_serial_handle_dcd_change(port, tty,
 + priv-line_status  UART_DCD);
 + tty_kref_put(tty);
 + }
 +
 + wake_up_interruptible(port-port.delta_msr_wait);
  }
  
  static void pl2303_read_int_callback(struct urb *urb)
 -- 
 1.7.12.1
 
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html