aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mm-generic-gsm.c3
-rw-r--r--src/mm-serial-port.c10
2 files changed, 11 insertions, 2 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c
index 9b693096..8d013a52 100644
--- a/src/mm-generic-gsm.c
+++ b/src/mm-generic-gsm.c
@@ -698,6 +698,9 @@ mm_generic_gsm_enable_complete (MMGenericGsm *self,
}
}
+ /* Try to enable XON/XOFF flow control */
+ mm_serial_port_queue_command (priv->primary, "+IFC=1,1", 3, NULL, NULL);
+
/* Get allowed mode */
if (MM_GENERIC_GSM_GET_CLASS (self)->get_allowed_mode)
MM_GENERIC_GSM_GET_CLASS (self)->get_allowed_mode (self, get_allowed_mode_done, NULL);
diff --git a/src/mm-serial-port.c b/src/mm-serial-port.c
index 07010e1d..1d98a537 100644
--- a/src/mm-serial-port.c
+++ b/src/mm-serial-port.c
@@ -357,8 +357,14 @@ config_fd (MMSerialPort *self, GError **error)
stbuf.c_cc[VTIME] = 0;
stbuf.c_cc[VEOF] = 1;
- stbuf.c_cflag &= ~(CBAUD | CSIZE | CSTOPB | CLOCAL | PARENB);
- stbuf.c_cflag |= (speed | bits | CREAD | 0 | parity | stopbits);
+ /* Use software handshaking */
+ stbuf.c_iflag |= (IXON | IXOFF | IXANY);
+
+ /* Set up port speed and serial attributes; also ignore modem control
+ * lines since most drivers don't implement RTS/CTS anyway.
+ */
+ stbuf.c_cflag &= ~(CBAUD | CSIZE | CSTOPB | PARENB | CRTSCTS);
+ stbuf.c_cflag |= (speed | bits | CREAD | 0 | parity | stopbits | CLOCAL);
if (ioctl (priv->fd, TCSETA, &stbuf) < 0) {
g_set_error (error,