Eliminate excessive CPU consumption when redirecting UART over SSH

Redirecting the external UART via SSH caused the console-server,
console-client, and dropbear to consume ~30% of the available CPU each
when a large amount of data was being written to the UART output.

Buffering all of the small 16550 FIFO bytes into a larger packet and
then sending that to the SSH SW allows more efficient transmission
over the ethernet connection.

Tested this by "ssh root@<bmc.ip.addr> -p 2200" on a system running a
CentOS distribution.  Using a BASH console run a large binary file
through "od -t x1 <fname>" to create a large amount of traffic.  At
the BMC console run "top" to review the CPU usage.  My experience is
after this change is applied:
console-server: ~25% CPU
dropbear: ~3% CPU
console-client: ~1% CPU

Change-Id: Ibabfd285e97a487e7ff040e1cb3159fbff360328
Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
6 files changed
tree: 5b6c467c2cf6e345bae39cec6fd13ae03fb82063
  1. test/
  2. .gitignore
  3. .travis.yml
  4. bootstrap.sh
  5. config.c
  6. configure.ac
  7. console-client.c
  8. console-server.c
  9. console-server.h
  10. console-socket.c
  11. LICENSE
  12. log-handler.c
  13. MAINTAINERS
  14. Makefile.am
  15. obmc-console.conf.sample
  16. README.md
  17. ringbuffer.c
  18. socket-handler.c
  19. tty-handler.c
  20. util.c
README.md

To Build

Note: In addition to a toolchain and autoconf tools, this requires autotools-archive to be installed.

To build this project, run the following shell commands:

./bootstrap.sh
./configure ${CONFIGURE_FLAGS}
make

To fully clean the repository, run:

./bootstrap.sh clean

To Run Server

Running the server requires a serial port (e.g. /dev/ttyS0):

touch obmc-console.conf
./obmc-console-server --config obmc-console.conf ttyS0

To Connect Client

To connect to the server, simply run the client:

./obmc-console-client

To disconnect the client, use the standard ~. combination.