On Wed, Apr 17, 2024 at 2:46 PM Philo Lu <lulie@xxxxxxxxxxxxxxxxx> wrote: > > Add TCP_SKB_CB(skb)->sacked as the 4th arg of sockops passed to bpf > program. Then we can get the retransmission efficiency by counting skbs > w/ and w/o TCPCB_EVER_RETRANS mark. And for this purpose, sacked > updating is moved after the BPF_SOCK_OPS_RETRANS_CB hook. > > Signed-off-by: Philo Lu <lulie@xxxxxxxxxxxxxxxxx> This might be a naive question, but how the bpf program know what is the meaning of each bit ? Are they exposed already, and how future changes in TCP stack could break old bpf programs ? #define TCPCB_SACKED_ACKED 0x01 /* SKB ACK'd by a SACK block */ #define TCPCB_SACKED_RETRANS 0x02 /* SKB retransmitted */ #define TCPCB_LOST 0x04 /* SKB is lost */ #define TCPCB_TAGBITS 0x07 /* All tag bits */ #define TCPCB_REPAIRED 0x10 /* SKB repaired (no skb_mstamp_ns) */ #define TCPCB_EVER_RETRANS 0x80 /* Ever retransmitted frame */ #define TCPCB_RETRANS (TCPCB_SACKED_RETRANS|TCPCB_EVER_RETRANS| \ TCPCB_REPAIRED)