• Vinicius Costa Gomes's avatar
    taprio: Add support for hardware offloading · 9c66d156
    Vinicius Costa Gomes authored
    This allows taprio to offload the schedule enforcement to capable
    network cards, resulting in more precise windows and less CPU usage.
    
    The gate mask acts on traffic classes (groups of queues of same
    priority), as specified in IEEE 802.1Q-2018, and following the existing
    taprio and mqprio semantics.
    It is up to the driver to perform conversion between tc and individual
    netdev queues if for some reason it needs to make that distinction.
    
    Full offload is requested from the network interface by specifying
    "flags 2" in the tc qdisc creation command, which in turn corresponds to
    the TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD bit.
    
    The important detail here is the clockid which is implicitly /dev/ptpN
    for full offload, and hence not configurable.
    
    A reference counting API is added to support the use case where Ethernet
    drivers need to keep the taprio offload structure locally (i.e. they are
    a multi-port switch driver, and configuring a port depends on the
    settings of other ports as well). The refcount_t variable is kept in a
    private structure (__tc_taprio_qopt_offload) and not exposed to drivers.
    
    In the future, the private structure might also be expanded with a
    backpointer to taprio_sched *q, to implement the notification system
    described in the patch (of when admin became oper, or an error occurred,
    etc, so the offload can be monitored with 'tc qdisc show').
    Signed-off-by: default avatarVinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: default avatarVoon Weifeng <weifeng.voon@intel.com>
    Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9c66d156
sch_taprio.c 47.4 KB