2283 stopc = ch->stopc;
2284 } else {
2285 startc = ch->startca;
2286 stopc = ch->stopca;
2287 }
2288
2289 if (copy_from_user(&dflow, argp, sizeof(dflow)))
2290 return -EFAULT;
2291
2292 if (dflow.startc != startc || dflow.stopc != stopc) {
2293
2294 spin_lock_irqsave(&epca_lock, flags);
2295 globalwinon(ch);
2296
2297 if (cmd == DIGI_SETFLOW) {
2298 ch->fepstartc = ch->startc = dflow.startc;
2299 ch->fepstopc = ch->stopc = dflow.stopc;
2300 fepcmd(ch, SONOFFC, ch->fepstartc,
2301 ch->fepstopc, 0, 1);
2302 } else {
2303 ch->fepstartca = ch->startca = dflow.startc;
2304 ch->fepstopca = ch->stopca = dflow.stopc;
2305 fepcmd(ch, SAUXONOFFC, ch->fepstartca,
2306 ch->fepstopca, 0, 1);
2307 }
2308
2309 if (ch->statusflags & TXSTOPPED)
2310 pc_start(tty);
2311
2312 memoff(ch);
2313 spin_unlock_irqrestore(&epca_lock, flags);
2314 }
2315 break;
2316 default:
2317 return -ENOIOCTLCMD;
2318 }
2319 return 0;
2320}
2321
2322static void pc_set_termios(struct tty_struct *tty, struct ktermios *old_termios)
2323{