rmnet_smux: fix flow control race condition
rmnet_smux: fix flow control race condition

If multiple packets are written quickly and the high watermark is
exceeded, then the -EAGAIN return code is returned (A) and the code is
checked and the tx processing is throttled (B) until a low-watermark
notification is received (C).  If the packet queue is
drained and the low-watermark notification is delivered between steps
(A) and (B), then the order of events will be ACB and the tx queue will
be permanently stalled.

To fix this, a spinlock is held to ensure that the sequence is always
either ABC.

CRs-Fixed: 401544
Change-Id: Ie13e7f75e304e89399bb2d50f2e8974b2fd79aa4
Signed-off-by: Eric Holmberg <5000aa55685d659e1f7f26ece526f9c7021ab484@codeaurora.org>

TeamVee-Kanas/android_kernel_samsung_kanas,TeamVee-Kanas/android_kernel_samsung_kanas,TeamVee-Kanas/android_kernel_samsung_kanas,TeamVee-Kanas/android_kernel_samsung_kanas,TeamVee-Kanas/android_kernel_samsung_kanas