There are two types of flow control: hardware (RTS/CTS) and software (XON/XOFF):
Modems can usually be configured to use hardware flow control. For example, the atdialHAY dialer supports RTS/CTS flow control using the &K3 command.
Hardware flow control for outgoing calls is supported by the atdialer, dialHA96V, dialMUL, and dialTBIT dialers. All of these dialers recognize strings of the form STTY=settings in their /usr/lib/uucp/default files. For example, you can enable bidirectional hardware flow control for the dialTBIT dialer by creating a file /usr/lib/uucp/default/dialTBIT that contains the following line:
STTY= -ORTSFLOW RTSFLOW CTSFLOW
Hardware flow control for incoming calls is configured by adding the -ORTSFLOW RTSFLOW CTSFLOW flags to the appropriate /etc/gettydefs entry referenced by the /etc/inittab entry for the modem tty port.
The CTSFLOW flag is often used by itself to prevent the modem buffer from overflowing when speed conversion is used for incoming calls. For example, assume a MultiModem V.32 is set for a fixed speed of 9600bps to the computer. When a 2400bps connection calls in, the computer sends data to the modem at 9600bps, which the modem can only send out at 2400bps. The CTSFLOW flag in /etc/gettydefs tells the serial driver to stop sending data when the modem drops CTS. This allows the modem to signal when it is busy and prevent data overruns.