mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 15:04:27 +08:00
net: ptp: fix time stamp matching logic for VLAN packets.
Commit ae5c6c6d
"ptp: Classify ptp over ip over vlan packets" changed the
code in two drivers that matches time stamps with PTP frames, with the goal
of allowing VLAN tagged PTP packets to receive hardware time stamps.
However, that commit failed to account for the VLAN header when parsing
IPv4 packets. This patch fixes those two drivers to correctly match VLAN
tagged IPv4/UDP PTP messages with their time stamps.
This patch should also be applied to v3.17.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ee7bc3cdc2
commit
cca04b2854
@ -264,7 +264,7 @@ static int cpts_match(struct sk_buff *skb, unsigned int ptp_class,
|
|||||||
|
|
||||||
switch (ptp_class & PTP_CLASS_PMASK) {
|
switch (ptp_class & PTP_CLASS_PMASK) {
|
||||||
case PTP_CLASS_IPV4:
|
case PTP_CLASS_IPV4:
|
||||||
offset += ETH_HLEN + IPV4_HLEN(data) + UDP_HLEN;
|
offset += ETH_HLEN + IPV4_HLEN(data + offset) + UDP_HLEN;
|
||||||
break;
|
break;
|
||||||
case PTP_CLASS_IPV6:
|
case PTP_CLASS_IPV6:
|
||||||
offset += ETH_HLEN + IP6_HLEN + UDP_HLEN;
|
offset += ETH_HLEN + IP6_HLEN + UDP_HLEN;
|
||||||
|
@ -791,7 +791,7 @@ static int match(struct sk_buff *skb, unsigned int type, struct rxts *rxts)
|
|||||||
|
|
||||||
switch (type & PTP_CLASS_PMASK) {
|
switch (type & PTP_CLASS_PMASK) {
|
||||||
case PTP_CLASS_IPV4:
|
case PTP_CLASS_IPV4:
|
||||||
offset += ETH_HLEN + IPV4_HLEN(data) + UDP_HLEN;
|
offset += ETH_HLEN + IPV4_HLEN(data + offset) + UDP_HLEN;
|
||||||
break;
|
break;
|
||||||
case PTP_CLASS_IPV6:
|
case PTP_CLASS_IPV6:
|
||||||
offset += ETH_HLEN + IP6_HLEN + UDP_HLEN;
|
offset += ETH_HLEN + IP6_HLEN + UDP_HLEN;
|
||||||
@ -934,7 +934,7 @@ static int is_sync(struct sk_buff *skb, int type)
|
|||||||
|
|
||||||
switch (type & PTP_CLASS_PMASK) {
|
switch (type & PTP_CLASS_PMASK) {
|
||||||
case PTP_CLASS_IPV4:
|
case PTP_CLASS_IPV4:
|
||||||
offset += ETH_HLEN + IPV4_HLEN(data) + UDP_HLEN;
|
offset += ETH_HLEN + IPV4_HLEN(data + offset) + UDP_HLEN;
|
||||||
break;
|
break;
|
||||||
case PTP_CLASS_IPV6:
|
case PTP_CLASS_IPV6:
|
||||||
offset += ETH_HLEN + IP6_HLEN + UDP_HLEN;
|
offset += ETH_HLEN + IP6_HLEN + UDP_HLEN;
|
||||||
|
Loading…
Reference in New Issue
Block a user