diff options
| author | Vineeth Karumanchi <vineeth.karumanchi@amd.com> | 2025-08-14 12:40:57 +0530 |
|---|---|---|
| committer | Paolo Abeni <pabeni@redhat.com> | 2025-08-19 12:13:03 +0200 |
| commit | 89934dbf169e358b57c2b394bb51a57d3f259dc0 (patch) | |
| tree | 50c026fba2b9c268c9bc009afde97bd3eba6834c /rust/helpers/helpers.c | |
| parent | 6089970b077fdec6f80b502e875d7a5b3f95cdf9 (diff) | |
net: macb: Add TAPRIO traffic scheduling support
Implement Time-Aware Traffic Scheduling (TAPRIO) offload support
for Cadence MACB/GEM ethernet controllers to enable IEEE 802.1Qbv
compliant time-sensitive networking (TSN) capabilities.
Key Features:
1. Enhanced Scheduled Traffic (ENST) Register Management
- Per-queue ENST registers: ENST_START_TIME, ENST_ON_TIME, ENST_OFF_TIME
- Centralized control via ENST_CONTROL for gate enable/disable
- Infrastructure enhancements:
* Extended macb_queue structure with ENST timing control registers
* Mapped ENST register offsets into queue management framework
* Introduced macb_queue_enst_config for per-entry TC configuration
- Timing conversion utility:
* enst_ns_to_hw_units(): Converts nanoseconds to hardware units
* Timing values are programmed as hardware units based on link speed
* Conversion formula: time_bytes = time_ns / divisor
* Speed-specific divisors: 1Gbps=8, 100Mbps=80, 10Mbps=800
- Hardware limit utility:
* enst_max_hw_interval(): Returns max interval for given speed
2. TAPRIO Configuration via "tc qdisc replace"
- macb_taprio_setup_replace(): Configures TAPRIO hardware offload
- Parameter validation checks performed:
* TC entry limit validation against available hardware queues
* Base time non-negativity enforcement
* Speed-adaptive timing constraint verification
* Cycle time vs. total gate time consistency checks
* Single-queue gate mask enforcement per scheduling entry
- Programming sequence:
* GEM doesn't support changing ENST registers if ENST is enabled,
hence disable ENST before programming
* Atomic timing register configuration (START_TIME, ON_TIME, OFF_TIME)
* Enable queues via ENST_CONTROL
3. TAPRIO Cleanup via "tc qdisc destroy"
- macb_taprio_destroy(): Safely removes TAPRIO configuration
- Restores default queue behavior
- Cleanup steps:
* Reset TC state
* Disable ENST
* Clear timing registers
* Ensure atomic updates with locking
4. Traffic Control Offload Infrastructure
- macb_setup_taprio(): TAPRIO command dispatcher
* Verifies hardware support
* Handles runtime suspend state
- macb_setup_tc(): TC_SETUP_QDISC_TAPRIO entry point
- Supports REPLACE and DESTROY operations
Tested on Xilinx Versal platforms with QBV-capable MACB controllers.
Signed-off-by: Vineeth Karumanchi <vineeth.karumanchi@amd.com>
Link: https://patch.msgid.link/20250814071058.3062453-2-vineeth.karumanchi@amd.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'rust/helpers/helpers.c')
0 files changed, 0 insertions, 0 deletions
