On Wed, Sep 7, 2016 at 5:27 PM, David Miller <da...@davemloft.net> wrote:
>
> From: "Francis Y. Yan" <francisy...@gmail.com>
> Date: Tue, 6 Sep 2016 18:32:40 -0700
>
> > diff --git a/include/linux/tcp.h b/include/linux/tcp.h
> > index 7be9b12..f5b588e 100644
> > --- a/include/linux/tcp.h
> > +++ b/include/linux/tcp.h
> > @@ -176,6 +176,7 @@ struct tcp_sock {
> > * were acked.
> > */
> > struct u64_stats_sync syncp; /* protects 64bit vars (cf
> > tcp_get_info()) */
> > + seqcount_t seqcnt; /* proctects rwnd-limited-related vars, etc.
> > */
> >
> > u32 snd_una; /* First byte we want an ack for */
> > u32 snd_sml; /* Last byte of the most recently transmitted
> > small packet */
> > @@ -204,6 +205,8 @@ struct tcp_sock {
> >
> > u32 window_clamp; /* Maximal window to advertise */
> > u32 rcv_ssthresh; /* Current window clamp */
> > + struct skb_mstamp rwnd_limited_ts; /* Last timestamp limited by rwnd
> > */
> > + u64 rwnd_limited; /* Total time (us) limited by rwnd */
> >
> > /* Information of the most recently (s)acked skb */
> > struct tcp_rack {
>
> I understand completely the usefulness of this change, but wow that is a lot
> of
> new TCP socket space taken up just to export some time values in tcp_info for
> debugging and statistics.
Thanks for raising the concern. The space requirement and timing
resolution should indeed be justified better on the motivation and the
dev plan. We would resubmit a v2 with a cover letter detailing those.