• Vinicius Costa Gomes's avatar
    net/sched: Introduce the ETF Qdisc · 25db26a9
    Vinicius Costa Gomes authored
    The ETF (Earliest TxTime First) qdisc uses the information added
    earlier in this series (the socket option SO_TXTIME and the new
    role of sk_buff->tstamp) to schedule packets transmission based
    on absolute time.
    
    For some workloads, just bandwidth enforcement is not enough, and
    precise control of the transmission of packets is necessary.
    
    Example:
    
    $ tc qdisc replace dev enp2s0 parent root handle 100 mqprio num_tc 3 \
               map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 queues 1@0 1@1 2@2 hw 0
    
    $ tc qdisc add dev enp2s0 parent 100:1 etf delta 100000 \
               clockid CLOCK_TAI
    
    In this example, the Qdisc will provide SW best-effort for the control
    of the transmission time to the network adapter, the time stamp in the
    socket will be in reference to the clockid CLOCK_TAI and packets
    will leave the qdisc "delta" (100000) nanoseconds before its transmission
    time.
    
    The ETF qdisc will buffer packets sorted by their txtime. It will drop
    packets on enqueue() if their skbuff clockid does not match the clock
    reference of the Qdisc. Moreover, on dequeue(), a packet will be dropped
    if it expires while being enqueued.
    
    The qdisc also supports the SO_TXTIME deadline mode. For this mode, it
    will dequeue a packet as soon as possible and change the skb timestamp
    to 'now' during etf_dequeue().
    
    Note that both the qdisc's and the SO_TXTIME ABIs allow for a clockid
    to be configured, but it's been decided that usage of CLOCK_TAI should
    be enforced until we decide to allow for other clockids to be used.
    The rationale here is that PTP times are usually in the TAI scale, thus
    no other clocks should be necessary. For now, the qdisc will return
    EINVAL if any clocks other than CLOCK_TAI are used.
    Signed-off-by: default avatarJesus Sanchez-Palencia <jesus.sanchez-palencia@intel.com>
    Signed-off-by: default avatarVinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    25db26a9
Kconfig 27.6 KB