Kurt Kanzenbach <k...@linutronix.de> writes:
> On Wed Jul 29 2020, Russell King - ARM Linux admin wrote: >> Would it make more sense to do: >> >> u8 *data = skb_mac_header(skb); >> u8 *ptr = data; >> >> if (type & PTP_CLASS_VLAN) >> ptr += VLAN_HLEN; >> >> switch (type & PTP_CLASS_PMASK) { >> case PTP_CLASS_IPV4: >> ptr += IPV4_HLEN(ptr) + UDP_HLEN; >> break; >> >> case PTP_CLASS_IPV6: >> ptr += IP6_HLEN + UDP_HLEN; >> break; >> >> case PTP_CLASS_L2: >> break; >> >> default: >> return NULL; >> } >> >> ptr += ETH_HLEN; >> >> if (ptr + 34 > skb->data + skb->len) >> return NULL; >> >> return ptr; >> >> in other words, compare pointers, so that whether skb_push() etc has >> been used on the skb is irrelevant? I like this! > The ptp v1 code always does locate the message type at > > msgtype = data + offset + OFF_PTP_CONTROL > > OFF_PTP_CONTROL is 32. However, looking at the ptp v1 header, the > message type is located at offset 20. What am I missing here? 0x20 == 32? I see it at offset 32 in IEEE 1588.