|
@@ -3167,6 +3167,8 @@ void tcp_get_info(struct sock *sk, struct tcp_info *info)
|
|
rate64 = tcp_compute_delivery_rate(tp);
|
|
rate64 = tcp_compute_delivery_rate(tp);
|
|
if (rate64)
|
|
if (rate64)
|
|
info->tcpi_delivery_rate = rate64;
|
|
info->tcpi_delivery_rate = rate64;
|
|
|
|
+ info->tcpi_delivered = tp->delivered;
|
|
|
|
+ info->tcpi_delivered_ce = tp->delivered_ce;
|
|
unlock_sock_fast(sk, slow);
|
|
unlock_sock_fast(sk, slow);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(tcp_get_info);
|
|
EXPORT_SYMBOL_GPL(tcp_get_info);
|
|
@@ -3180,7 +3182,7 @@ struct sk_buff *tcp_get_timestamping_opt_stats(const struct sock *sk)
|
|
u32 rate;
|
|
u32 rate;
|
|
|
|
|
|
stats = alloc_skb(7 * nla_total_size_64bit(sizeof(u64)) +
|
|
stats = alloc_skb(7 * nla_total_size_64bit(sizeof(u64)) +
|
|
- 5 * nla_total_size(sizeof(u32)) +
|
|
|
|
|
|
+ 7 * nla_total_size(sizeof(u32)) +
|
|
3 * nla_total_size(sizeof(u8)), GFP_ATOMIC);
|
|
3 * nla_total_size(sizeof(u8)), GFP_ATOMIC);
|
|
if (!stats)
|
|
if (!stats)
|
|
return NULL;
|
|
return NULL;
|
|
@@ -3211,9 +3213,12 @@ struct sk_buff *tcp_get_timestamping_opt_stats(const struct sock *sk)
|
|
nla_put_u8(stats, TCP_NLA_RECUR_RETRANS, inet_csk(sk)->icsk_retransmits);
|
|
nla_put_u8(stats, TCP_NLA_RECUR_RETRANS, inet_csk(sk)->icsk_retransmits);
|
|
nla_put_u8(stats, TCP_NLA_DELIVERY_RATE_APP_LMT, !!tp->rate_app_limited);
|
|
nla_put_u8(stats, TCP_NLA_DELIVERY_RATE_APP_LMT, !!tp->rate_app_limited);
|
|
nla_put_u32(stats, TCP_NLA_SND_SSTHRESH, tp->snd_ssthresh);
|
|
nla_put_u32(stats, TCP_NLA_SND_SSTHRESH, tp->snd_ssthresh);
|
|
|
|
+ nla_put_u32(stats, TCP_NLA_DELIVERED, tp->delivered);
|
|
|
|
+ nla_put_u32(stats, TCP_NLA_DELIVERED_CE, tp->delivered_ce);
|
|
|
|
|
|
nla_put_u32(stats, TCP_NLA_SNDQ_SIZE, tp->write_seq - tp->snd_una);
|
|
nla_put_u32(stats, TCP_NLA_SNDQ_SIZE, tp->write_seq - tp->snd_una);
|
|
nla_put_u8(stats, TCP_NLA_CA_STATE, inet_csk(sk)->icsk_ca_state);
|
|
nla_put_u8(stats, TCP_NLA_CA_STATE, inet_csk(sk)->icsk_ca_state);
|
|
|
|
+
|
|
return stats;
|
|
return stats;
|
|
}
|
|
}
|
|
|
|
|