My practical experience is 3% deviation at 115200 is well tolerated—no error at all with few feet of cable.
Everything is tolerable with a “few feet of cable.” On the other hand, running with a three percent timing drift over a 150 foot link has a high probability of experiencing framing errors at 115,200. I know this from the practical experience gained in installing literally thousands of serial terminals over the years.
Toward the tail end of the era in which my company did serial terminal and printer installations, we were using WYSE 160s and GPTs, whose serial interfaces could be run at 115,200. We used three different brands of serial MUXers at the server end: Digiboard, Equinox and Comtrol. On long runs, typically more than about 100 feet, we would run into garbled transmission on occasion with the Digiboards, but impeccable performance with the Comtrol and Equinox hardware.
A little investigation showed that the clock source used by Digiboard for its UARTS ran about 2.5 percent fast (checked with an H-P frequency counter) in the installations where errors were occurring. That discrepancy was just enough to cause periodic framing errors. After running into this several times, I decided to discontinue the use of Digiboard hardware—I don’t like eating warranties and trying to placate annoyed clients.
So, yes, three percent is pushing it. BTW, I use 50 PPM oscillators in my POC units to clock the DUARTs. A little investigation with the logic analyzer on POC V1.3 shows that the DUART oscillator is about 0.5 percent fast, which is well within what a serial link at 115200 can tolerate.
As a side note: tape and floppy disk 'serial' bit streams account for oscillator drift by applying conditions on the data that enable the reciever/reader to re-sync the clocks in the middle of the data stream.
For example, Commodore GCR used a max of 2 zero-bits in a row, so the circuit is able to re-sync on the following one-bit.
Such formats are now as I understand also used in fast serial links (hdmi, pci-e, ...). I am not sure if these are more for error correction or clock sync. Maybe both. But of course not available on rs232.
(I don't want to steal this topic, so if this deviates, move to an own thread)
André
Author of the GeckOS multitasking operating system, the usb65 stack, designer of the Micro-PET and many more 6502 content: http://6502.org/users/andre/