Thanks. I will look at this patch this weekend. -- Al
Quoting Oliver Neukum <[EMAIL PROTECTED]>: > Hi, > > this fixes the flushing trouble due to its own buffering for this driver. > > Regards > Oliver > Signed-off-by: Oliver Neukum <[EMAIL PROTECTED]> > -- > > --- a/drivers/usb/serial/digi_acceleport.c 2007-05-07 12:27:23.000000000 > +0200 > +++ b/drivers/usb/serial/digi_acceleport.c 2007-05-07 13:10:57.000000000 > +0200 > @@ -930,23 +930,17 @@ static void digi_rx_unthrottle( struct u > { > > int ret = 0; > - int len; > unsigned long flags; > struct digi_port *priv = usb_get_serial_port_data(port); > - struct tty_struct *tty = port->tty; > - > > dbg( "digi_rx_unthrottle: TOP: port=%d", priv->dp_port_num ); > > spin_lock_irqsave( &priv->dp_port_lock, flags ); > > - /* send any buffered chars from throttle time on to tty subsystem */ > - > - len = tty_buffer_request_room(tty, priv->dp_in_buf_len); > - if( len > 0 ) { > - tty_insert_flip_string_flags(tty, priv->dp_in_buf, > priv->dp_in_flag_buf, > len); > - tty_flip_buffer_push( tty ); > - } > + /* turn throttle off */ > + priv->dp_throttled = 0; > + priv->dp_in_buf_len = 0; > + priv->dp_throttle_restart = 0; > > /* restart read chain */ > if( priv->dp_throttle_restart ) { > @@ -954,11 +948,6 @@ dbg( "digi_rx_unthrottle: TOP: port=%d", > ret = usb_submit_urb( port->read_urb, GFP_ATOMIC ); > } > > - /* turn throttle off */ > - priv->dp_throttled = 0; > - priv->dp_in_buf_len = 0; > - priv->dp_throttle_restart = 0; > - > spin_unlock_irqrestore( &priv->dp_port_lock, flags ); > > if( ret ) { > @@ -1864,31 +1853,16 @@ static int digi_read_inb_callback( struc > /* data length is len-1 (one byte of len is status) */ > --len; > > - if( throttled ) { > - > - len = min( len, > - DIGI_IN_BUF_SIZE - priv->dp_in_buf_len ); > - > - if( len > 0 ) { > - memcpy( priv->dp_in_buf + priv->dp_in_buf_len, > - data, len ); > - memset( priv->dp_in_flag_buf > - + priv->dp_in_buf_len, flag, len ); > - priv->dp_in_buf_len += len; > - } > - > - } else { > - len = tty_buffer_request_room(tty, len); > - if( len > 0 ) { > - /* Hot path */ > - if(flag == TTY_NORMAL) > - tty_insert_flip_string(tty, data, len); > - else { > - for(i = 0; i < len; i++) > - tty_insert_flip_char(tty, > data[i], flag); > - } > - tty_flip_buffer_push( tty ); > + len = tty_buffer_request_room(tty, len); > + if( len > 0 ) { > + /* Hot path */ > + if(flag == TTY_NORMAL) > + tty_insert_flip_string(tty, data, len); > + else { > + for(i = 0; i < len; i++) > + tty_insert_flip_char(tty, data[i], > flag); > } > + tty_flip_buffer_push( tty ); > } > } > > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel