UPSTREAM: tcp: refine tcp_write_queue_empty() implementation

Due to how tcp_sendmsg() is implemented, we can have an empty
skb at the tail of the write queue.

Most [1] tcp_write_queue_empty() callers want to know if there is
anything to send (payload and/or FIN)

Instead of checking if the sk_write_queue is empty, we need
to test if tp->write_seq == tp->snd_nxt

[1] tcp_send_fin() was the only caller that expected to
 see if an skb was in the write queue, I have changed the code
 to reuse the tcp_write_queue_tail() result.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
(cherry picked from commit ee2aabd3fc2eef4c1a0ebdadccc76fbff74b94fc)
Signed-off-by: Xuewei Zhang <xueweiz@google.com>

BUG=b:145232468
TEST=None

Change-Id: Ibb0c34f77f206132e99ce5765acf26cd29641418
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/2055288
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Roy Yang <royyang@google.com>
Commit-Queue: Xuewei Zhang <xueweiz@google.com>
Tested-by: Xuewei Zhang <xueweiz@google.com>
2 files changed