net: dsa: hellcreek: Add TAPRIO offloading support
authorKurt Kanzenbach <kurt@linutronix.de>
Sat, 23 Jan 2021 10:56:33 +0000 (11:56 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sun, 24 Jan 2021 05:25:16 +0000 (21:25 -0800)
commit24dfc6eb39b26fc3a5a17a606e868b74f6202ee4
tree8dd1c8b1ad1d91c1f9ba27fba55b49114310d1bd
parentb80b5dbf118fbb97d67e9e41e68941efeb0457c6
net: dsa: hellcreek: Add TAPRIO offloading support

The switch has support for the 802.1Qbv Time Aware Shaper (TAS). Traffic
schedules may be configured individually on each front port. Each port has eight
egress queues. The traffic is mapped to a traffic class respectively via the PCP
field of a VLAN tagged frame.

The TAPRIO Qdisc already implements that. Therefore, this interface can simply
be reused. Add .port_setup_tc() accordingly.

The activation of a schedule on a port is split into two parts:

 * Programming the necessary gate control list (GCL)
 * Setup delayed work for starting the schedule

The hardware supports starting a schedule up to eight seconds in the future. The
TAPRIO interface provides an absolute base time. Therefore, periodic delayed
work is leveraged to check whether a schedule may be started or not.

Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/hirschmann/hellcreek.c
drivers/net/dsa/hirschmann/hellcreek.h