Commit 179dfb95 authored by Johan Hovold's avatar Johan Hovold
Browse files

USB: serial: remove write wait queue



The digi_acceleport driver is the only driver still using the port
write wake queue so move it to that driver's port data.

Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
parent 5098e779
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ struct digi_port {
	int dp_throttle_restart;
	wait_queue_head_t dp_flush_wait;
	wait_queue_head_t dp_close_wait;	/* wait queue for close */
	wait_queue_head_t write_wait;
	struct usb_serial_port *dp_port;
};

@@ -381,7 +382,7 @@ static int digi_write_oob_command(struct usb_serial_port *port,
	while (count > 0) {
		while (oob_priv->dp_write_urb_in_use) {
			cond_wait_interruptible_timeout_irqrestore(
				&oob_port->write_wait, DIGI_RETRY_TIMEOUT,
				&oob_priv->write_wait, DIGI_RETRY_TIMEOUT,
				&oob_priv->dp_port_lock, flags);
			if (interruptible && signal_pending(current))
				return -EINTR;
@@ -444,7 +445,7 @@ static int digi_write_inb_command(struct usb_serial_port *port,
		while (priv->dp_write_urb_in_use &&
		       time_before(jiffies, timeout)) {
			cond_wait_interruptible_timeout_irqrestore(
				&port->write_wait, DIGI_RETRY_TIMEOUT,
				&priv->write_wait, DIGI_RETRY_TIMEOUT,
				&priv->dp_port_lock, flags);
			if (signal_pending(current))
				return -EINTR;
@@ -523,7 +524,7 @@ static int digi_set_modem_signals(struct usb_serial_port *port,
	while (oob_priv->dp_write_urb_in_use) {
		spin_unlock(&port_priv->dp_port_lock);
		cond_wait_interruptible_timeout_irqrestore(
			&oob_port->write_wait, DIGI_RETRY_TIMEOUT,
			&oob_priv->write_wait, DIGI_RETRY_TIMEOUT,
			&oob_priv->dp_port_lock, flags);
		if (interruptible && signal_pending(current))
			return -EINTR;
@@ -983,7 +984,7 @@ static void digi_write_bulk_callback(struct urb *urb)
		dev_dbg(&port->dev, "digi_write_bulk_callback: oob callback\n");
		spin_lock_irqsave(&priv->dp_port_lock, flags);
		priv->dp_write_urb_in_use = 0;
		wake_up_interruptible(&port->write_wait);
		wake_up_interruptible(&priv->write_wait);
		spin_unlock_irqrestore(&priv->dp_port_lock, flags);
		return;
	}
@@ -1216,10 +1217,9 @@ static int digi_port_init(struct usb_serial_port *port, unsigned port_num)
	init_waitqueue_head(&priv->dp_transmit_idle_wait);
	init_waitqueue_head(&priv->dp_flush_wait);
	init_waitqueue_head(&priv->dp_close_wait);
	init_waitqueue_head(&priv->write_wait);
	priv->dp_port = port;

	init_waitqueue_head(&port->write_wait);

	usb_set_serial_port_data(port, priv);

	return 0;
+0 −2
Original line number Diff line number Diff line
@@ -62,7 +62,6 @@
 * @bulk_out_endpointAddress: endpoint address for the bulk out pipe for this
 *	port.
 * @flags: usb serial port flags
 * @write_wait: a wait_queue_head_t used by the port.
 * @work: work queue entry for the line discipline waking up.
 * @dev: pointer to the serial device
 *
@@ -108,7 +107,6 @@ struct usb_serial_port {
	int			tx_bytes;

	unsigned long		flags;
	wait_queue_head_t	write_wait;
	struct work_struct	work;
	unsigned long		sysrq; /* sysrq timeout */
	struct device		dev;