Kernel transmit latency is often incurred in the packet scheduler. Introduce a new timestamp on transmission just before entering the scheduler. When data travels through multiple devices (bonding, tunneling, ...) each device will export an individual timestamp.
Showing the changes to include/uapi/linux (2 of 6 files). Show all
Unified · Split
| @@ -39,6 +39,7 @@ struct scm_timestamping { · 38 unmodified lines | ||
| 39 | 39 | */ |
| 40 | 40 | enum { |
| 41 | 41 | SCM_TSTAMP_SND, /* driver passed skb to NIC, or HW */ |
| 42 | + SCM_TSTAMP_SCHED, /* data entered the packet scheduler */ | |
| 42 | 43 | }; |
| 43 | 44 | |
| 44 | 45 | #endif /* _UAPI_LINUX_ERRQUEUE_H */ |
| @@ -21,8 +21,9 @@ enum { · 20 unmodified lines | ||
| 21 | 21 | SOF_TIMESTAMPING_SYS_HARDWARE = (1<<5), |
| 22 | 22 | SOF_TIMESTAMPING_RAW_HARDWARE = (1<<6), |
| 23 | 23 | SOF_TIMESTAMPING_OPT_ID = (1<<7), |
| 24 | + SOF_TIMESTAMPING_TX_SCHED = (1<<8), | |
| 24 | 25 | |
| 25 | − SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_OPT_ID, | |
| 26 | + SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_TX_SCHED, | |
| 26 | 27 | SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) | |
| 27 | 28 | SOF_TIMESTAMPING_LAST |
| 28 | 29 | }; |