mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
![]() If a packet which is utilizing the launchtime feature (via SO_TXTIME socket option) also requests the hardware transmit timestamp, the hardware timestamp is not delivered to the userspace. This is because the value in skb->tstamp is mistaken as the software timestamp. Applications, like ptp4l, request a hardware timestamp by setting the SOF_TIMESTAMPING_TX_HARDWARE socket option. Whenever a new timestamp is detected by the driver (this work is done in igb_ptp_tx_work() which calls igb_ptp_tx_hwtstamps() in igb_ptp.c[1]), it will queue the timestamp in the ERR_QUEUE for the userspace to read. When the userspace is ready, it will issue a recvmsg() call to collect this timestamp. The problem is in this recvmsg() call. If the skb->tstamp is not cleared out, it will be interpreted as a software timestamp and the hardware tx timestamp will not be successfully sent to the userspace. Look at skb_is_swtx_tstamp() and the callee function __sock_recv_timestamp() in net/socket.c for more details. Signed-off-by: Vedang Patel <vedang.patel@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
e1000_82575.c | ||
e1000_82575.h | ||
e1000_defines.h | ||
e1000_hw.h | ||
e1000_i210.c | ||
e1000_i210.h | ||
e1000_mac.c | ||
e1000_mac.h | ||
e1000_mbx.c | ||
e1000_mbx.h | ||
e1000_nvm.c | ||
e1000_nvm.h | ||
e1000_phy.c | ||
e1000_phy.h | ||
e1000_regs.h | ||
igb.h | ||
igb_ethtool.c | ||
igb_hwmon.c | ||
igb_main.c | ||
igb_ptp.c | ||
Makefile |