> >
> > -/*
> > - * tcp event with arguments sk and skb
> > - *
> > - * Note: this class requires a valid sk pointer; while skb pointer could
> > - *       be NULL.
> > - */
> > -DECLARE_EVENT_CLASS(tcp_event_sk_skb,
> > +#define TCP_RETRANSMIT_QUIT_REASON             \
> > +               ENUM(TCP_RETRANS_ERR_DEFAULT,           "retransmit 
> > terminate unexpectedly")    \
> > +               ENUM(TCP_RETRANS_SUCCESS,               "retransmit 
> > successfully")              \
> > +               ENUM(TCP_RETRANS_IN_HOST_QUEUE,         "packet still 
> > queued in driver")        \
> > +               ENUM(TCP_RETRANS_END_SEQ_ERROR,         "invalid end 
> > sequence")                 \
> > +               ENUM(TCP_RETRANS_TRIM_HEAD_NOMEM,       "trim head no 
> > memory")                  \
> > +               ENUM(TCP_RETRANS_UNCLONE_NOMEM,         "skb unclone 
> > keeptruesize no memory")   \
> > +               ENUM(TCP_RETRANS_FRAG_NOMEM,            "fragment no 
> > memory")                   \
> 
> Do we really need 3 + 1 different 'NOMEMORY' status ? 

Yes, different "NOMEM" status pinpoint exact failure stages in packet 
retransmission,
which helps distinguish which process triggered it. Beneficial for 
troubleshooting.

> > +               ENUM(TCP_RETRANS_ROUTE_FAIL,            "routing failure")  
> >                     \
> > +               ENUM(TCP_RETRANS_RCV_ZERO_WINDOW,       "closed recevier 
> > window")               \
> 
> receiver
> 

Thanks, will fix it in V3.

> > +               ENUMe(TCP_RETRANS_PSKB_COPY_NOBUFS,     "no buffer for skb 
> > copy")               \
> 
> -> another NOMEM...
> 
> > +
> > +
> 
> 
> > +               __entry->quit_reason = quit_reason;
> >         ),
> >
> > -       TP_printk("skbaddr=%p skaddr=%p family=%s sport=%hu dport=%hu 
> > saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c state=%s",
> > +       TP_printk("skbaddr=%p skaddr=%p family=%s sport=%hu dport=%hu 
> > saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c state=%s quit_reason=%s",
> 
> quit_reason is really weird, since most retransmits are a success.
> 
> What about using : status or result ?
> 
> Also, for scripts parsing the output, I would try to keep  key=val
> format (no space in @val), and concise 'vals'

Good idea. Will fix it in V3.

Reply via email to