]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commit - drivers/tty/n_gsm.c
tty/n_gsm: avoid fifo overflow in gsm_dlci_data_output
authorMikhail Kshevetskiy <mikhail.kshevetskiy@gmail.com>
Fri, 23 Sep 2011 15:22:56 +0000 (19:22 +0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 26 Sep 2011 23:39:23 +0000 (16:39 -0700)
commit268e526b935e794386d75025577b745e6bd57f13
treeb7438beb8271cf94b311677c13743252d5a23bc9
parentf37ac5a144027cddfcf1dfab30eb7c2ba765f5ca
tty/n_gsm: avoid fifo overflow in gsm_dlci_data_output

n_gsm use a simple approach: every writing to fifo correspond exactly one
reading from fifo. There are no problem in this approach until we read
less bytes then we write. As result fifo may owerflow. This leads to packet
loss and very slow responce.

For example, this happens with ping packets (about 96 byte each) and default
gsm->mtu = 64. As result we get 50 sec ping timeout and 20% packet loss.

Fix the problem by reading and sending all data from the fifo

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/tty/n_gsm.c