From: craigeger@comcast.netThere is receive buffering between the serial driver and line discipline. The line discipline processes FIONREAD and TCFLSH with regard to the line discipline receive buffers but not the intermediate buffering. In 2.6.17 the intermediate buffering pushed receive data to the line discipline without regard for tty->receive_room, so if the ldisc buffers were full the data was lost. In 2.6.18 the intermediate buffering was changed to hold receive data until the line discipline could accept it. So in 2.6.17 all the extra data you sent was simply discarded and flushing the ldisc buffers cleared all of the receive data. Starting with 2.6.18, flushing the ldisc buffers just allowed the intermediate buffering to start feeding more data to the ldisc. This results in the receive data you see after a TCFLSH. Starting with 2.6.22 TCFLSH is processed by the intermediate buffering as well as the ldisc to eliminate any remaining receive data in the intermediate buffering. -- Paul Fulghum Microgate Systems, Ltd -
| Alistair John Strachan | cpu time oddity (was Re: Linux 2.6.27-rc5) |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| mkrufky | Re: [v4l-dvb-maintainer] modpost errors ( Re: 2.6.23-rc6-mm1) |
| Avi Kivity | [PATCH 022/104] KVM: Remove dead code in the cmpxchg instruction emulation |
git: | |
| Sander | 'struct task_struct' has no member named 'mems_allowed' (was: Re: 2.6.20-rc4-mm1) |
| David Miller | [GIT]: Networking |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 18/37] dccp: Support for Mandatory options |
| Natalie Protasevich | [BUG] New Kernel Bugs |
