Re: UART buffer size
What you are asking is really a design issue that you have to answer yourself.
Why is 1550 too big? Have you tried working out the actual maximum packet size you need to send and receive and used that value?
If all else fails you may name to start thinking about other arrangements. You don't show us how all of that code actually gets used. For example, are you waiting for the entire packet to be received before you start sending? If you are simply receiving a value and then sending it again, then a buffer of a few bytes would suffice. Depending what is in the packet, perhaps read some part, process it and start sending before going back to read the next part - you are using a ring buffer so as long as the buffer is large enough to hold the parts you need to process before being over-written then you can set the ring buffer size accordingly.