Time-Sensitive Networking (TSN) is a set of standards under development by the Time-Sensitive Networking task group of the IEEE 802.1 working group.
...
- Enhanced Time Synchronization using IEEE 802.1AS
Ethernet AVB (Audio Video Bridging, IEEE 802.1Qav)
- Frame Replication and Elimination for Reliability IEEE 802.1CB
- Enhancements for Scheduled Traffic IEEE 802.1Qbv
- Per-Stream Filtering and Policing, IEEE 802.1 Qci
- Enhancements and Performance Improvements, IEEE 802.1Qcc
- Frame Preemption, IEEE 802.1Qbu
- Interspersing Express Traffic, IEEE 802.3br
- Enhancements and Performance Improvements, IEEE 802.1Qcc
- Frame Preemption, IEEE 802.1Qbu
- Interspersing Express Traffic, IEEE 802.3br
Software support
TSN kernel drivers are currently support in Xilinx Linux staging area: https://github.com/Xilinx/linux-xlnx/tree/xilinx-v2022.1/drivers/staging/xilinx-tsn
TSN user space utilities and sample configurations are provided to enable TSN functionality. Please refer to TSN SW user guide and following sections for more details.
Kernel Configuration
The following config options should be enabled in order to build the TSN Subsystem:
CONFIG_XILINX_TSN
CONFIG_AXIENET_HAS_TADMA
CONFIG_XILINX_TSN_PTP
CONFIG_XILINX_TSN_QBV
CONFIG_XILINX_TSN_SWITCH
CONFIG_XILINX_TSN_QCI
CONFIG_XILINX_TSN_CB
CONFIG_XILINX_TSN_QBR
The following additional config is required/selected by TSN subsystem:
CONFIG_NET_SWITCHDEV
CONFIG_STP
CONFIG_NETFILTER
Devicetree
TSN subsystem DT documentation can be found here: Documentation/devicetree/bindings/staging/net/xilinx_tsn.txt
For TSN TEMAC, please refer to Documentation/devicetree/bindings/staging/net/xilinx-tsn-ethernet.txt
For TSN Switch, please refer to Documentation/devicetree/bindings/staging/net/xilinx_tsn_switch.txt
For TSN Endpoint, please refer to Documentation/devicetree/bindings/staging/net/xilinx_tsn_ep.txt
For TSN Extended Endpoint, please refer to Documentation/devicetree/bindings/staging/net/xilinx_tsn_ep_ex.txt
Please refer to PL Ethernet and DMA documentation for additional information: Documentation/devicetree/bindings/net/xilinx_axienet.txt
For more details on phy bindings please refer "Documentation/devicetree/bindings/net/phy.txt"
TSN System
- Xilinx’s TSN IP Switch have three ports Endpoint (Port 0), MAC1 (Port 1) and MAC2 (Port 2)
- Endpoint is connected to MCDMA (Multichannel DMA), each MCDMA channel is a dedicated channel for each type of traffic, i.e. Best Effort, Scheduled Traffic and Reserved. There could be other use cases where there would be separate channels for management traffic
- MAC1 is connected to external world by PHY1
- MAC2 is connected to external world by PHY2
...
You would observe that every second 12 ST packets are sent of which 8 packets are sent in the 100us of 10 ms cycle and the rest 4 packets are sent in the next cycle.
As we can see in the above picture, from 4th packet until 11th packet (8 packets) are received sequentially and the next packet starts after 10ms delay (packet no. 12).
Running IPIC:
IP interception translates the transmit packet with the configured source, destination MAC addresses, VLAN ID and PCP values if the packets' IPv4 tuples (source IP, destination IP, DSCP, protocol, source port number and destination port number) match. IPIC module maintains hash entries of IPv4 tuples and if the out-going packets' tuple data match with that of hash entries , translates the IP stream.
...
|
Mainline status
TSN driver is not currently upstreamed.
Known issues and troubleshooting
...
- Increase tx_timestamp_timeout to 10 in PTP config file. If using a board to board setup, this can be updated on both master and slave config to account for increased TX and RX traffic.
- If using tsn_talker to send traffic, no more than 3 instances of tsn talker can be used at full throughput with packet size of 1472.
→ Dynamic devicetree overlay is not supported with TSN 2022.1 kernel driver.
→ TSN PCP values are mandatory and there are no default values for PCP if not chosen as described in the section "PCP and Traffic Class".
Changelog
2022.1
- TSN kernel driver support added to staging area
https://github.com/Xilinx/linux-xlnx/tree/xilinx-v2022.1/drivers/staging/xilinx-tsn