• M
    bpf: Remove BPF_SKB_DELIVERY_TIME_NONE and rename s/delivery_time_/tstamp_/ · 9bb984f2
    Martin KaFai Lau 提交于
    This patch is to simplify the uapi bpf.h regarding to the tstamp type
    and use a similar way as the kernel to describe the value stored
    in __sk_buff->tstamp.
    
    My earlier thought was to avoid describing the semantic and
    clock base for the rcv timestamp until there is more clarity
    on the use case, so the __sk_buff->delivery_time_type naming instead
    of __sk_buff->tstamp_type.
    
    With some thoughts, it can reuse the UNSPEC naming.  This patch first
    removes BPF_SKB_DELIVERY_TIME_NONE and also
    
    rename BPF_SKB_DELIVERY_TIME_UNSPEC to BPF_SKB_TSTAMP_UNSPEC
    and    BPF_SKB_DELIVERY_TIME_MONO   to BPF_SKB_TSTAMP_DELIVERY_MONO.
    
    The semantic of BPF_SKB_TSTAMP_DELIVERY_MONO is the same:
    __sk_buff->tstamp has delivery time in mono clock base.
    
    BPF_SKB_TSTAMP_UNSPEC means __sk_buff->tstamp has the (rcv)
    tstamp at ingress and the delivery time at egress.  At egress,
    the clock base could be found from skb->sk->sk_clockid.
    __sk_buff->tstamp == 0 naturally means NONE, so NONE is not needed.
    
    With BPF_SKB_TSTAMP_UNSPEC for the rcv tstamp at ingress,
    the __sk_buff->delivery_time_type is also renamed to __sk_buff->tstamp_type
    which was also suggested in the earlier discussion:
    https://lore.kernel.org/bpf/b181acbe-caf8-502d-4b7b-7d96b9fc5d55@iogearbox.net/
    
    The above will then make __sk_buff->tstamp and __sk_buff->tstamp_type
    the same as its kernel skb->tstamp and skb->mono_delivery_time
    counter part.
    
    The internal kernel function bpf_skb_convert_dtime_type_read() is then
    renamed to bpf_skb_convert_tstamp_type_read() and it can be simplified
    with the BPF_SKB_DELIVERY_TIME_NONE gone.  A BPF_ALU32_IMM(BPF_AND)
    insn is also saved by using BPF_JMP32_IMM(BPF_JSET).
    
    The bpf helper bpf_skb_set_delivery_time() is also renamed to
    bpf_skb_set_tstamp().  The arg name is changed from dtime
    to tstamp also.  It only allows setting tstamp 0 for
    BPF_SKB_TSTAMP_UNSPEC and it could be relaxed later
    if there is use case to change mono delivery time to
    non mono.
    
    prog->delivery_time_access is also renamed to prog->tstamp_type_access.
    Signed-off-by: NMartin KaFai Lau <kafai@fb.com>
    Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20220309090509.3712315-1-kafai@fb.com
    9bb984f2
filter.h 42.9 KB