293 break;
294 case PKT_BAUD_RATE_230400:
295 baud_reg = REG_CONTROL_BAUD_RATE_230400;
296 break;
297 case PKT_BAUD_RATE_115200:
298 baud_reg = REG_CONTROL_BAUD_RATE_115200;
299 break;
300 case PKT_BAUD_RATE_57600:
301
302 default:
303 baud_reg = REG_CONTROL_BAUD_RATE_57600;
304 break;
305 }
306
307
308 prepare_to_wait(&wq, &wait, TASK_INTERRUPTIBLE);
309 schedule_timeout(HZ/10);
310 finish_wait(&wq, &wait);
311
312
313 info->ctrl_reg &= ~0x03;
314 info->ctrl_reg |= baud_reg;
315 outb(info->ctrl_reg, iobase + REG_CONTROL);
316
317
318 info->ctrl_reg &= ~REG_CONTROL_RTS;
319 outb(info->ctrl_reg, iobase + REG_CONTROL);
320
321
322 prepare_to_wait(&wq, &wait, TASK_INTERRUPTIBLE);
323 schedule_timeout(HZ);
324 finish_wait(&wq, &wait);
325 }
326
327 if (len == skb->len) {
328 kfree_skb(skb);
329 } else {
330 skb_pull(skb, len);
331 skb_queue_head(&(info->txq), skb);
332 }
333