net: tcp: use tcp_drop_reason() for tcp_data_queue_ofo()
Replace tcp_drop() used in tcp_data_queue_ofo with tcp_drop_reason(). Following drop reasons are introduced: SKB_DROP_REASON_TCP_OFOMERGE Reviewed-by: Mengen Sun <mengensun@tencent.com> Reviewed-by: Hao Peng <flyingpeng@tencent.com> Signed-off-by: Menglong Dong <imagedong@tencent.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Reviewed-by: David Ahern <dsahern@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a7ec381049
commit
d25e481be0
|
@ -376,6 +376,10 @@ enum skb_drop_reason {
|
|||
* the right edges of receive
|
||||
* window
|
||||
*/
|
||||
SKB_DROP_REASON_TCP_OFOMERGE, /* the data of skb is already in
|
||||
* the ofo queue, corresponding to
|
||||
* LINUX_MIB_TCPOFOMERGE
|
||||
*/
|
||||
SKB_DROP_REASON_MAX,
|
||||
};
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
EM(SKB_DROP_REASON_TCP_ZEROWINDOW, TCP_ZEROWINDOW) \
|
||||
EM(SKB_DROP_REASON_TCP_OLD_DATA, TCP_OLD_DATA) \
|
||||
EM(SKB_DROP_REASON_TCP_OVERWINDOW, TCP_OVERWINDOW) \
|
||||
EM(SKB_DROP_REASON_TCP_OFOMERGE, TCP_OFOMERGE) \
|
||||
EMe(SKB_DROP_REASON_MAX, MAX)
|
||||
|
||||
#undef EM
|
||||
|
|
|
@ -4779,7 +4779,7 @@ static void tcp_data_queue_ofo(struct sock *sk, struct sk_buff *skb)
|
|||
if (unlikely(tcp_try_rmem_schedule(sk, skb, skb->truesize))) {
|
||||
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPOFODROP);
|
||||
sk->sk_data_ready(sk);
|
||||
tcp_drop(sk, skb);
|
||||
tcp_drop_reason(sk, skb, SKB_DROP_REASON_PROTO_MEM);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -4842,7 +4842,8 @@ coalesce_done:
|
|||
/* All the bits are present. Drop. */
|
||||
NET_INC_STATS(sock_net(sk),
|
||||
LINUX_MIB_TCPOFOMERGE);
|
||||
tcp_drop(sk, skb);
|
||||
tcp_drop_reason(sk, skb,
|
||||
SKB_DROP_REASON_TCP_OFOMERGE);
|
||||
skb = NULL;
|
||||
tcp_dsack_set(sk, seq, end_seq);
|
||||
goto add_sack;
|
||||
|
@ -4861,7 +4862,8 @@ coalesce_done:
|
|||
TCP_SKB_CB(skb1)->end_seq);
|
||||
NET_INC_STATS(sock_net(sk),
|
||||
LINUX_MIB_TCPOFOMERGE);
|
||||
tcp_drop(sk, skb1);
|
||||
tcp_drop_reason(sk, skb1,
|
||||
SKB_DROP_REASON_TCP_OFOMERGE);
|
||||
goto merge_right;
|
||||
}
|
||||
} else if (tcp_ooo_try_coalesce(sk, skb1,
|
||||
|
@ -4889,7 +4891,7 @@ merge_right:
|
|||
tcp_dsack_extend(sk, TCP_SKB_CB(skb1)->seq,
|
||||
TCP_SKB_CB(skb1)->end_seq);
|
||||
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPOFOMERGE);
|
||||
tcp_drop(sk, skb1);
|
||||
tcp_drop_reason(sk, skb1, SKB_DROP_REASON_TCP_OFOMERGE);
|
||||
}
|
||||
/* If there is no skb after us, we are the last_skb ! */
|
||||
if (!skb1)
|
||||
|
|
Loading…
Reference in New Issue