diff options
author | Oliver Neukum <oliver@neukum.org> | 2009-04-20 11:28:53 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-23 17:15:29 -0400 |
commit | 2400a2bfbd0e912193fe3b077f492d4980141813 (patch) | |
tree | e2e1bcc34252c14662c80df15c44703ead9d589c /drivers/usb | |
parent | 212b8f0c3f5a2280bfa1d6ab13a6fe98552becaa (diff) |
USB: removal of tty->low_latency hack dating back to the old serial code
This removes tty->low_latency from all USB serial drivers that push
data into the tty layer at hard interrupt context. It's no longer needed
and actually harmful.
Signed-off-by: Oliver Neukum <oliver@neukum.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/serial/cyberjack.c | 7 | ||||
-rw-r--r-- | drivers/usb/serial/cypress_m8.c | 4 | ||||
-rw-r--r-- | drivers/usb/serial/empeg.c | 6 | ||||
-rw-r--r-- | drivers/usb/serial/garmin_gps.c | 8 | ||||
-rw-r--r-- | drivers/usb/serial/generic.c | 6 | ||||
-rw-r--r-- | drivers/usb/serial/io_edgeport.c | 8 | ||||
-rw-r--r-- | drivers/usb/serial/io_ti.c | 8 | ||||
-rw-r--r-- | drivers/usb/serial/ipaq.c | 6 | ||||
-rw-r--r-- | drivers/usb/serial/ipw.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/iuu_phoenix.c | 1 | ||||
-rw-r--r-- | drivers/usb/serial/kobil_sct.c | 6 | ||||
-rw-r--r-- | drivers/usb/serial/mos7720.c | 7 | ||||
-rw-r--r-- | drivers/usb/serial/mos7840.c | 6 | ||||
-rw-r--r-- | drivers/usb/serial/opticon.c | 8 | ||||
-rw-r--r-- | drivers/usb/serial/option.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/sierra.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/ti_usb_3410_5052.c | 14 | ||||
-rw-r--r-- | drivers/usb/serial/visor.c | 8 |
18 files changed, 1 insertions, 111 deletions
diff --git a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c index 858bdd038fbc..dd501bb63ed6 100644 --- a/drivers/usb/serial/cyberjack.c +++ b/drivers/usb/serial/cyberjack.c | |||
@@ -175,13 +175,6 @@ static int cyberjack_open(struct tty_struct *tty, | |||
175 | dbg("%s - usb_clear_halt", __func__); | 175 | dbg("%s - usb_clear_halt", __func__); |
176 | usb_clear_halt(port->serial->dev, port->write_urb->pipe); | 176 | usb_clear_halt(port->serial->dev, port->write_urb->pipe); |
177 | 177 | ||
178 | /* force low_latency on so that our tty_push actually forces | ||
179 | * the data through, otherwise it is scheduled, and with high | ||
180 | * data rates (like with OHCI) data can get lost. | ||
181 | */ | ||
182 | if (tty) | ||
183 | tty->low_latency = 1; | ||
184 | |||
185 | priv = usb_get_serial_port_data(port); | 178 | priv = usb_get_serial_port_data(port); |
186 | spin_lock_irqsave(&priv->lock, flags); | 179 | spin_lock_irqsave(&priv->lock, flags); |
187 | priv->rdtodo = 0; | 180 | priv->rdtodo = 0; |
diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c index eae4740d448c..e568710b263f 100644 --- a/drivers/usb/serial/cypress_m8.c +++ b/drivers/usb/serial/cypress_m8.c | |||
@@ -656,10 +656,6 @@ static int cypress_open(struct tty_struct *tty, | |||
656 | priv->rx_flags = 0; | 656 | priv->rx_flags = 0; |
657 | spin_unlock_irqrestore(&priv->lock, flags); | 657 | spin_unlock_irqrestore(&priv->lock, flags); |
658 | 658 | ||
659 | /* setting to zero could cause data loss */ | ||
660 | if (tty) | ||
661 | tty->low_latency = 1; | ||
662 | |||
663 | /* raise both lines and set termios */ | 659 | /* raise both lines and set termios */ |
664 | spin_lock_irqsave(&priv->lock, flags); | 660 | spin_lock_irqsave(&priv->lock, flags); |
665 | priv->line_control = CONTROL_DTR | CONTROL_RTS; | 661 | priv->line_control = CONTROL_DTR | CONTROL_RTS; |
diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c index 8a69cce40b6d..c709ec474a80 100644 --- a/drivers/usb/serial/empeg.c +++ b/drivers/usb/serial/empeg.c | |||
@@ -478,12 +478,6 @@ static void empeg_set_termios(struct tty_struct *tty, | |||
478 | termios->c_cflag | 478 | termios->c_cflag |
479 | |= CS8; /* character size 8 bits */ | 479 | |= CS8; /* character size 8 bits */ |
480 | 480 | ||
481 | /* | ||
482 | * Force low_latency on; otherwise the pushes are scheduled; | ||
483 | * this is bad as it opens up the possibility of dropping bytes | ||
484 | * on the floor. We don't want to drop bytes on the floor. :) | ||
485 | */ | ||
486 | tty->low_latency = 1; | ||
487 | tty_encode_baud_rate(tty, 115200, 115200); | 481 | tty_encode_baud_rate(tty, 115200, 115200); |
488 | } | 482 | } |
489 | 483 | ||
diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c index a26a0e2cdb4a..586d30ff450b 100644 --- a/drivers/usb/serial/garmin_gps.c +++ b/drivers/usb/serial/garmin_gps.c | |||
@@ -973,14 +973,6 @@ static int garmin_open(struct tty_struct *tty, | |||
973 | 973 | ||
974 | dbg("%s - port %d", __func__, port->number); | 974 | dbg("%s - port %d", __func__, port->number); |
975 | 975 | ||
976 | /* | ||
977 | * Force low_latency on so that our tty_push actually forces the data | ||
978 | * through, otherwise it is scheduled, and with high data rates (like | ||
979 | * with OHCI) data can get lost. | ||
980 | */ | ||
981 | if (tty) | ||
982 | tty->low_latency = 1; | ||
983 | |||
984 | spin_lock_irqsave(&garmin_data_p->lock, flags); | 976 | spin_lock_irqsave(&garmin_data_p->lock, flags); |
985 | garmin_data_p->mode = initial_mode; | 977 | garmin_data_p->mode = initial_mode; |
986 | garmin_data_p->count = 0; | 978 | garmin_data_p->count = 0; |
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c index 9d57cace3731..4cec9906ccf3 100644 --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c | |||
@@ -122,12 +122,6 @@ int usb_serial_generic_open(struct tty_struct *tty, | |||
122 | 122 | ||
123 | dbg("%s - port %d", __func__, port->number); | 123 | dbg("%s - port %d", __func__, port->number); |
124 | 124 | ||
125 | /* force low_latency on so that our tty_push actually forces the data | ||
126 | through, otherwise it is scheduled, and with high data rates (like | ||
127 | with OHCI) data can get lost. */ | ||
128 | if (tty) | ||
129 | tty->low_latency = 1; | ||
130 | |||
131 | /* clear the throttle flags */ | 125 | /* clear the throttle flags */ |
132 | spin_lock_irqsave(&port->lock, flags); | 126 | spin_lock_irqsave(&port->lock, flags); |
133 | port->throttled = 0; | 127 | port->throttled = 0; |
diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c index e85c8c0d1ad9..fb4a73d090f6 100644 --- a/drivers/usb/serial/io_edgeport.c +++ b/drivers/usb/serial/io_edgeport.c | |||
@@ -193,8 +193,6 @@ static const struct divisor_table_entry divisor_table[] = { | |||
193 | /* local variables */ | 193 | /* local variables */ |
194 | static int debug; | 194 | static int debug; |
195 | 195 | ||
196 | static int low_latency = 1; /* tty low latency flag, on by default */ | ||
197 | |||
198 | static atomic_t CmdUrbs; /* Number of outstanding Command Write Urbs */ | 196 | static atomic_t CmdUrbs; /* Number of outstanding Command Write Urbs */ |
199 | 197 | ||
200 | 198 | ||
@@ -867,9 +865,6 @@ static int edge_open(struct tty_struct *tty, | |||
867 | if (edge_port == NULL) | 865 | if (edge_port == NULL) |
868 | return -ENODEV; | 866 | return -ENODEV; |
869 | 867 | ||
870 | if (tty) | ||
871 | tty->low_latency = low_latency; | ||
872 | |||
873 | /* see if we've set up our endpoint info yet (can't set it up | 868 | /* see if we've set up our endpoint info yet (can't set it up |
874 | in edge_startup as the structures were not set up at that time.) */ | 869 | in edge_startup as the structures were not set up at that time.) */ |
875 | serial = port->serial; | 870 | serial = port->serial; |
@@ -3299,6 +3294,3 @@ MODULE_FIRMWARE("edgeport/down2.fw"); | |||
3299 | 3294 | ||
3300 | module_param(debug, bool, S_IRUGO | S_IWUSR); | 3295 | module_param(debug, bool, S_IRUGO | S_IWUSR); |
3301 | MODULE_PARM_DESC(debug, "Debug enabled or not"); | 3296 | MODULE_PARM_DESC(debug, "Debug enabled or not"); |
3302 | |||
3303 | module_param(low_latency, bool, S_IRUGO | S_IWUSR); | ||
3304 | MODULE_PARM_DESC(low_latency, "Low latency enabled or not"); | ||
diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c index c3cdd00ddc41..513b25e044c1 100644 --- a/drivers/usb/serial/io_ti.c +++ b/drivers/usb/serial/io_ti.c | |||
@@ -76,7 +76,6 @@ struct edgeport_uart_buf_desc { | |||
76 | #define EDGE_READ_URB_STOPPING 1 | 76 | #define EDGE_READ_URB_STOPPING 1 |
77 | #define EDGE_READ_URB_STOPPED 2 | 77 | #define EDGE_READ_URB_STOPPED 2 |
78 | 78 | ||
79 | #define EDGE_LOW_LATENCY 1 | ||
80 | #define EDGE_CLOSING_WAIT 4000 /* in .01 sec */ | 79 | #define EDGE_CLOSING_WAIT 4000 /* in .01 sec */ |
81 | 80 | ||
82 | #define EDGE_OUT_BUF_SIZE 1024 | 81 | #define EDGE_OUT_BUF_SIZE 1024 |
@@ -232,7 +231,6 @@ static unsigned short OperationalBuildNumber; | |||
232 | 231 | ||
233 | static int debug; | 232 | static int debug; |
234 | 233 | ||
235 | static int low_latency = EDGE_LOW_LATENCY; | ||
236 | static int closing_wait = EDGE_CLOSING_WAIT; | 234 | static int closing_wait = EDGE_CLOSING_WAIT; |
237 | static int ignore_cpu_rev; | 235 | static int ignore_cpu_rev; |
238 | static int default_uart_mode; /* RS232 */ | 236 | static int default_uart_mode; /* RS232 */ |
@@ -1850,9 +1848,6 @@ static int edge_open(struct tty_struct *tty, | |||
1850 | if (edge_port == NULL) | 1848 | if (edge_port == NULL) |
1851 | return -ENODEV; | 1849 | return -ENODEV; |
1852 | 1850 | ||
1853 | if (tty) | ||
1854 | tty->low_latency = low_latency; | ||
1855 | |||
1856 | port_number = port->number - port->serial->minor; | 1851 | port_number = port->number - port->serial->minor; |
1857 | switch (port_number) { | 1852 | switch (port_number) { |
1858 | case 0: | 1853 | case 0: |
@@ -3008,9 +3003,6 @@ MODULE_FIRMWARE("edgeport/down3.bin"); | |||
3008 | module_param(debug, bool, S_IRUGO | S_IWUSR); | 3003 | module_param(debug, bool, S_IRUGO | S_IWUSR); |
3009 | MODULE_PARM_DESC(debug, "Debug enabled or not"); | 3004 | MODULE_PARM_DESC(debug, "Debug enabled or not"); |
3010 | 3005 | ||
3011 | module_param(low_latency, bool, S_IRUGO | S_IWUSR); | ||
3012 | MODULE_PARM_DESC(low_latency, "Low latency enabled or not"); | ||
3013 | |||
3014 | module_param(closing_wait, int, S_IRUGO | S_IWUSR); | 3006 | module_param(closing_wait, int, S_IRUGO | S_IWUSR); |
3015 | MODULE_PARM_DESC(closing_wait, "Maximum wait for data to drain, in .01 secs"); | 3007 | MODULE_PARM_DESC(closing_wait, "Maximum wait for data to drain, in .01 secs"); |
3016 | 3008 | ||
diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c index ef92095b0732..cd62825a9ac3 100644 --- a/drivers/usb/serial/ipaq.c +++ b/drivers/usb/serial/ipaq.c | |||
@@ -631,13 +631,7 @@ static int ipaq_open(struct tty_struct *tty, | |||
631 | priv->free_len += PACKET_SIZE; | 631 | priv->free_len += PACKET_SIZE; |
632 | } | 632 | } |
633 | 633 | ||
634 | /* | ||
635 | * Force low latency on. This will immediately push data to the line | ||
636 | * discipline instead of queueing. | ||
637 | */ | ||
638 | |||
639 | if (tty) { | 634 | if (tty) { |
640 | tty->low_latency = 1; | ||
641 | /* FIXME: These two are bogus */ | 635 | /* FIXME: These two are bogus */ |
642 | tty->raw = 1; | 636 | tty->raw = 1; |
643 | tty->real_raw = 1; | 637 | tty->real_raw = 1; |
diff --git a/drivers/usb/serial/ipw.c b/drivers/usb/serial/ipw.c index f530032ed93d..da2a2b46644a 100644 --- a/drivers/usb/serial/ipw.c +++ b/drivers/usb/serial/ipw.c | |||
@@ -207,9 +207,6 @@ static int ipw_open(struct tty_struct *tty, | |||
207 | if (!buf_flow_init) | 207 | if (!buf_flow_init) |
208 | return -ENOMEM; | 208 | return -ENOMEM; |
209 | 209 | ||
210 | if (tty) | ||
211 | tty->low_latency = 1; | ||
212 | |||
213 | /* --1: Tell the modem to initialize (we think) From sniffs this is | 210 | /* --1: Tell the modem to initialize (we think) From sniffs this is |
214 | * always the first thing that gets sent to the modem during | 211 | * always the first thing that gets sent to the modem during |
215 | * opening of the device */ | 212 | * opening of the device */ |
diff --git a/drivers/usb/serial/iuu_phoenix.c b/drivers/usb/serial/iuu_phoenix.c index 2314c6ae4fc2..4473d442b2aa 100644 --- a/drivers/usb/serial/iuu_phoenix.c +++ b/drivers/usb/serial/iuu_phoenix.c | |||
@@ -1051,7 +1051,6 @@ static int iuu_open(struct tty_struct *tty, | |||
1051 | tty->termios->c_oflag = 0; | 1051 | tty->termios->c_oflag = 0; |
1052 | tty->termios->c_iflag = 0; | 1052 | tty->termios->c_iflag = 0; |
1053 | priv->termios_initialized = 1; | 1053 | priv->termios_initialized = 1; |
1054 | tty->low_latency = 1; | ||
1055 | priv->poll = 0; | 1054 | priv->poll = 0; |
1056 | } | 1055 | } |
1057 | spin_unlock_irqrestore(&priv->lock, flags); | 1056 | spin_unlock_irqrestore(&priv->lock, flags); |
diff --git a/drivers/usb/serial/kobil_sct.c b/drivers/usb/serial/kobil_sct.c index 6286baad9392..c148544953b3 100644 --- a/drivers/usb/serial/kobil_sct.c +++ b/drivers/usb/serial/kobil_sct.c | |||
@@ -231,13 +231,7 @@ static int kobil_open(struct tty_struct *tty, | |||
231 | /* someone sets the dev to 0 if the close method has been called */ | 231 | /* someone sets the dev to 0 if the close method has been called */ |
232 | port->interrupt_in_urb->dev = port->serial->dev; | 232 | port->interrupt_in_urb->dev = port->serial->dev; |
233 | 233 | ||
234 | |||
235 | /* force low_latency on so that our tty_push actually forces | ||
236 | * the data through, otherwise it is scheduled, and with high | ||
237 | * data rates (like with OHCI) data can get lost. | ||
238 | */ | ||
239 | if (tty) { | 234 | if (tty) { |
240 | tty->low_latency = 1; | ||
241 | 235 | ||
242 | /* Default to echo off and other sane device settings */ | 236 | /* Default to echo off and other sane device settings */ |
243 | tty->termios->c_lflag = 0; | 237 | tty->termios->c_lflag = 0; |
diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c index e772cc0a97fd..24e3b5d4b4d4 100644 --- a/drivers/usb/serial/mos7720.c +++ b/drivers/usb/serial/mos7720.c | |||
@@ -446,13 +446,6 @@ static int mos7720_open(struct tty_struct *tty, | |||
446 | data = 0x0c; | 446 | data = 0x0c; |
447 | send_mos_cmd(serial, MOS_WRITE, port_number, 0x01, &data); | 447 | send_mos_cmd(serial, MOS_WRITE, port_number, 0x01, &data); |
448 | 448 | ||
449 | /* force low_latency on so that our tty_push actually forces * | ||
450 | * the data through,otherwise it is scheduled, and with * | ||
451 | * high data rates (like with OHCI) data can get lost. */ | ||
452 | |||
453 | if (tty) | ||
454 | tty->low_latency = 1; | ||
455 | |||
456 | /* see if we've set up our endpoint info yet * | 449 | /* see if we've set up our endpoint info yet * |
457 | * (can't set it up in mos7720_startup as the * | 450 | * (can't set it up in mos7720_startup as the * |
458 | * structures were not set up at that time.) */ | 451 | * structures were not set up at that time.) */ |
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c index 499b7b82a0ec..84fb1dcd30dc 100644 --- a/drivers/usb/serial/mos7840.c +++ b/drivers/usb/serial/mos7840.c | |||
@@ -1007,12 +1007,6 @@ static int mos7840_open(struct tty_struct *tty, | |||
1007 | status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset, | 1007 | status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset, |
1008 | Data); | 1008 | Data); |
1009 | 1009 | ||
1010 | /* force low_latency on so that our tty_push actually forces * | ||
1011 | * the data through,otherwise it is scheduled, and with * | ||
1012 | * high data rates (like with OHCI) data can get lost. */ | ||
1013 | if (tty) | ||
1014 | tty->low_latency = 1; | ||
1015 | |||
1016 | /* Check to see if we've set up our endpoint info yet * | 1010 | /* Check to see if we've set up our endpoint info yet * |
1017 | * (can't set it up in mos7840_startup as the structures * | 1011 | * (can't set it up in mos7840_startup as the structures * |
1018 | * were not set up at that time.) */ | 1012 | * were not set up at that time.) */ |
diff --git a/drivers/usb/serial/opticon.c b/drivers/usb/serial/opticon.c index 839583dc8b6a..b500ad10b758 100644 --- a/drivers/usb/serial/opticon.c +++ b/drivers/usb/serial/opticon.c | |||
@@ -159,14 +159,6 @@ static int opticon_open(struct tty_struct *tty, struct usb_serial_port *port, | |||
159 | priv->port = port; | 159 | priv->port = port; |
160 | spin_unlock_irqrestore(&priv->lock, flags); | 160 | spin_unlock_irqrestore(&priv->lock, flags); |
161 | 161 | ||
162 | /* | ||
163 | * Force low_latency on so that our tty_push actually forces the data | ||
164 | * through, otherwise it is scheduled, and with high data rates (like | ||
165 | * with OHCI) data can get lost. | ||
166 | */ | ||
167 | if (tty) | ||
168 | tty->low_latency = 1; | ||
169 | |||
170 | /* Start reading from the device */ | 162 | /* Start reading from the device */ |
171 | usb_fill_bulk_urb(priv->bulk_read_urb, priv->udev, | 163 | usb_fill_bulk_urb(priv->bulk_read_urb, priv->udev, |
172 | usb_rcvbulkpipe(priv->udev, | 164 | usb_rcvbulkpipe(priv->udev, |
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 47bd070f24b7..7817b82889ca 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -936,9 +936,6 @@ static int option_open(struct tty_struct *tty, | |||
936 | usb_pipeout(urb->pipe), 0); */ | 936 | usb_pipeout(urb->pipe), 0); */ |
937 | } | 937 | } |
938 | 938 | ||
939 | if (tty) | ||
940 | tty->low_latency = 1; | ||
941 | |||
942 | option_send_setup(tty, port); | 939 | option_send_setup(tty, port); |
943 | 940 | ||
944 | return 0; | 941 | return 0; |
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c index 7da3775a097e..913225c61610 100644 --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c | |||
@@ -598,9 +598,6 @@ static int sierra_open(struct tty_struct *tty, | |||
598 | } | 598 | } |
599 | } | 599 | } |
600 | 600 | ||
601 | if (tty) | ||
602 | tty->low_latency = 1; | ||
603 | |||
604 | sierra_send_setup(tty, port); | 601 | sierra_send_setup(tty, port); |
605 | 602 | ||
606 | /* start up the interrupt endpoint if we have one */ | 603 | /* start up the interrupt endpoint if we have one */ |
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c index 9c4c700c7cc6..0a64bac306ee 100644 --- a/drivers/usb/serial/ti_usb_3410_5052.c +++ b/drivers/usb/serial/ti_usb_3410_5052.c | |||
@@ -50,11 +50,10 @@ | |||
50 | 50 | ||
51 | #define TI_TRANSFER_TIMEOUT 2 | 51 | #define TI_TRANSFER_TIMEOUT 2 |
52 | 52 | ||
53 | #define TI_DEFAULT_LOW_LATENCY 0 | ||
54 | #define TI_DEFAULT_CLOSING_WAIT 4000 /* in .01 secs */ | 53 | #define TI_DEFAULT_CLOSING_WAIT 4000 /* in .01 secs */ |
55 | 54 | ||
56 | /* supported setserial flags */ | 55 | /* supported setserial flags */ |
57 | #define TI_SET_SERIAL_FLAGS (ASYNC_LOW_LATENCY) | 56 | #define TI_SET_SERIAL_FLAGS 0 |
58 | 57 | ||
59 | /* read urb states */ | 58 | /* read urb states */ |
60 | #define TI_READ_URB_RUNNING 0 | 59 | #define TI_READ_URB_RUNNING 0 |
@@ -161,7 +160,6 @@ static int ti_buf_get(struct circ_buf *cb, char *buf, int count); | |||
161 | 160 | ||
162 | /* module parameters */ | 161 | /* module parameters */ |
163 | static int debug; | 162 | static int debug; |
164 | static int low_latency = TI_DEFAULT_LOW_LATENCY; | ||
165 | static int closing_wait = TI_DEFAULT_CLOSING_WAIT; | 163 | static int closing_wait = TI_DEFAULT_CLOSING_WAIT; |
166 | static ushort vendor_3410[TI_EXTRA_VID_PID_COUNT]; | 164 | static ushort vendor_3410[TI_EXTRA_VID_PID_COUNT]; |
167 | static unsigned int vendor_3410_count; | 165 | static unsigned int vendor_3410_count; |
@@ -296,10 +294,6 @@ MODULE_FIRMWARE("mts_edge.fw"); | |||
296 | module_param(debug, bool, S_IRUGO | S_IWUSR); | 294 | module_param(debug, bool, S_IRUGO | S_IWUSR); |
297 | MODULE_PARM_DESC(debug, "Enable debugging, 0=no, 1=yes"); | 295 | MODULE_PARM_DESC(debug, "Enable debugging, 0=no, 1=yes"); |
298 | 296 | ||
299 | module_param(low_latency, bool, S_IRUGO | S_IWUSR); | ||
300 | MODULE_PARM_DESC(low_latency, | ||
301 | "TTY low_latency flag, 0=off, 1=on, default is off"); | ||
302 | |||
303 | module_param(closing_wait, int, S_IRUGO | S_IWUSR); | 297 | module_param(closing_wait, int, S_IRUGO | S_IWUSR); |
304 | MODULE_PARM_DESC(closing_wait, | 298 | MODULE_PARM_DESC(closing_wait, |
305 | "Maximum wait for data to drain in close, in .01 secs, default is 4000"); | 299 | "Maximum wait for data to drain in close, in .01 secs, default is 4000"); |
@@ -448,7 +442,6 @@ static int ti_startup(struct usb_serial *serial) | |||
448 | spin_lock_init(&tport->tp_lock); | 442 | spin_lock_init(&tport->tp_lock); |
449 | tport->tp_uart_base_addr = (i == 0 ? | 443 | tport->tp_uart_base_addr = (i == 0 ? |
450 | TI_UART1_BASE_ADDR : TI_UART2_BASE_ADDR); | 444 | TI_UART1_BASE_ADDR : TI_UART2_BASE_ADDR); |
451 | tport->tp_flags = low_latency ? ASYNC_LOW_LATENCY : 0; | ||
452 | tport->tp_closing_wait = closing_wait; | 445 | tport->tp_closing_wait = closing_wait; |
453 | init_waitqueue_head(&tport->tp_msr_wait); | 446 | init_waitqueue_head(&tport->tp_msr_wait); |
454 | init_waitqueue_head(&tport->tp_write_wait); | 447 | init_waitqueue_head(&tport->tp_write_wait); |
@@ -528,10 +521,6 @@ static int ti_open(struct tty_struct *tty, | |||
528 | if (mutex_lock_interruptible(&tdev->td_open_close_lock)) | 521 | if (mutex_lock_interruptible(&tdev->td_open_close_lock)) |
529 | return -ERESTARTSYS; | 522 | return -ERESTARTSYS; |
530 | 523 | ||
531 | if (tty) | ||
532 | tty->low_latency = | ||
533 | (tport->tp_flags & ASYNC_LOW_LATENCY) ? 1 : 0; | ||
534 | |||
535 | port_number = port->number - port->serial->minor; | 524 | port_number = port->number - port->serial->minor; |
536 | 525 | ||
537 | memset(&(tport->tp_icount), 0x00, sizeof(tport->tp_icount)); | 526 | memset(&(tport->tp_icount), 0x00, sizeof(tport->tp_icount)); |
@@ -1454,7 +1443,6 @@ static int ti_set_serial_info(struct tty_struct *tty, struct ti_port *tport, | |||
1454 | return -EFAULT; | 1443 | return -EFAULT; |
1455 | 1444 | ||
1456 | tport->tp_flags = new_serial.flags & TI_SET_SERIAL_FLAGS; | 1445 | tport->tp_flags = new_serial.flags & TI_SET_SERIAL_FLAGS; |
1457 | tty->low_latency = (tport->tp_flags & ASYNC_LOW_LATENCY) ? 1 : 0; | ||
1458 | tport->tp_closing_wait = new_serial.closing_wait; | 1446 | tport->tp_closing_wait = new_serial.closing_wait; |
1459 | 1447 | ||
1460 | return 0; | 1448 | return 0; |
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index 4facce3d9364..5ac414bda718 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c | |||
@@ -296,14 +296,6 @@ static int visor_open(struct tty_struct *tty, struct usb_serial_port *port, | |||
296 | priv->throttled = 0; | 296 | priv->throttled = 0; |
297 | spin_unlock_irqrestore(&priv->lock, flags); | 297 | spin_unlock_irqrestore(&priv->lock, flags); |
298 | 298 | ||
299 | /* | ||
300 | * Force low_latency on so that our tty_push actually forces the data | ||
301 | * through, otherwise it is scheduled, and with high data rates (like | ||
302 | * with OHCI) data can get lost. | ||
303 | */ | ||
304 | if (tty) | ||
305 | tty->low_latency = 1; | ||
306 | |||
307 | /* Start reading from the device */ | 299 | /* Start reading from the device */ |
308 | usb_fill_bulk_urb(port->read_urb, serial->dev, | 300 | usb_fill_bulk_urb(port->read_urb, serial->dev, |
309 | usb_rcvbulkpipe(serial->dev, | 301 | usb_rcvbulkpipe(serial->dev, |