* [PATCH for 3.0-rc4 0/2] dp83640: bug fixes
@ 2011-06-15 9:55 Richard Cochran
2011-06-15 9:55 ` [PATCH for 3.0-rc4 1/2] dp83640: fix phy status frame event parsing Richard Cochran
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Richard Cochran @ 2011-06-15 9:55 UTC (permalink / raw)
To: linux-kernel; +Cc: netdev, David Miller, John Stultz, Thomas Gleixner
This series fixes two status frame related bugs in the driver for the
dp83640 phy. I am not sure whether you would call this a timer fix or
a networking fix, so I put both groups on CC.
Thanks,
Richard
Richard Cochran (2):
dp83640: fix phy status frame event parsing
dp83640: drop PHY status frames in the driver.
drivers/net/phy/dp83640.c | 24 +++++++++++++++++-------
1 files changed, 17 insertions(+), 7 deletions(-)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH for 3.0-rc4 1/2] dp83640: fix phy status frame event parsing
2011-06-15 9:55 [PATCH for 3.0-rc4 0/2] dp83640: bug fixes Richard Cochran
@ 2011-06-15 9:55 ` Richard Cochran
2011-06-15 9:55 ` [PATCH for 3.0-rc4 2/2] dp83640: drop PHY status frames in the driver Richard Cochran
2011-06-17 3:48 ` [PATCH for 3.0-rc4 0/2] dp83640: bug fixes David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Richard Cochran @ 2011-06-15 9:55 UTC (permalink / raw)
To: linux-kernel; +Cc: netdev, David Miller, John Stultz, Thomas Gleixner
If two eternal time stamp events occur at nearly the same time, the
phyter will add an extra word into the status frame. This commit fixes
the parsing code to recognize and skip over the extra word.
Signed-off-by: Richard Cochran <richard.cochran@omicron.at>
---
drivers/net/phy/dp83640.c | 20 +++++++++++++++-----
1 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/drivers/net/phy/dp83640.c b/drivers/net/phy/dp83640.c
index b0c9522..ead323e 100644
--- a/drivers/net/phy/dp83640.c
+++ b/drivers/net/phy/dp83640.c
@@ -543,11 +543,20 @@ static void recalibrate(struct dp83640_clock *clock)
/* time stamping methods */
-static void decode_evnt(struct dp83640_private *dp83640,
- struct phy_txts *phy_txts, u16 ests)
+static int decode_evnt(struct dp83640_private *dp83640,
+ void *data, u16 ests)
{
+ struct phy_txts *phy_txts;
struct ptp_clock_event event;
int words = (ests >> EVNT_TS_LEN_SHIFT) & EVNT_TS_LEN_MASK;
+ u16 ext_status = 0;
+
+ if (ests & MULT_EVNT) {
+ ext_status = *(u16 *) data;
+ data += sizeof(ext_status);
+ }
+
+ phy_txts = data;
switch (words) { /* fall through in every case */
case 3:
@@ -565,6 +574,9 @@ static void decode_evnt(struct dp83640_private *dp83640,
event.timestamp = phy2txts(&dp83640->edata);
ptp_clock_event(dp83640->clock->ptp_clock, &event);
+
+ words = ext_status ? words + 2 : words + 1;
+ return words * sizeof(u16);
}
static void decode_rxts(struct dp83640_private *dp83640,
@@ -643,9 +655,7 @@ static void decode_status_frame(struct dp83640_private *dp83640,
} else if (PSF_EVNT == type && len >= sizeof(*phy_txts)) {
- phy_txts = (struct phy_txts *) ptr;
- decode_evnt(dp83640, phy_txts, ests);
- size = sizeof(*phy_txts);
+ size = decode_evnt(dp83640, ptr, ests);
} else {
size = 0;
--
1.7.0.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH for 3.0-rc4 2/2] dp83640: drop PHY status frames in the driver.
2011-06-15 9:55 [PATCH for 3.0-rc4 0/2] dp83640: bug fixes Richard Cochran
2011-06-15 9:55 ` [PATCH for 3.0-rc4 1/2] dp83640: fix phy status frame event parsing Richard Cochran
@ 2011-06-15 9:55 ` Richard Cochran
2011-06-17 3:48 ` [PATCH for 3.0-rc4 0/2] dp83640: bug fixes David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Richard Cochran @ 2011-06-15 9:55 UTC (permalink / raw)
To: linux-kernel; +Cc: netdev, David Miller, John Stultz, Thomas Gleixner
The dp83640 PHY provides time stamp and other information via special
PHY status frames. Previously, the driver decoded the frames and then
let the network stack drop them. This works fine when the PTP messages
come over UDP.
However, when receiving PTP messages via L2 packets, this creates a
problem. The status frames use the official PTP destination MAC address,
and so they are delivered to user space along with the "real" frames,
causing confusion for applications.
This commit fixes the issue by simply dropping the PHY status frames
in the driver.
Signed-off-by: Richard Cochran <richard.cochran@omicron.at>
---
drivers/net/phy/dp83640.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/phy/dp83640.c b/drivers/net/phy/dp83640.c
index ead323e..2cd8dc5 100644
--- a/drivers/net/phy/dp83640.c
+++ b/drivers/net/phy/dp83640.c
@@ -1044,8 +1044,8 @@ static bool dp83640_rxtstamp(struct phy_device *phydev,
if (is_status_frame(skb, type)) {
decode_status_frame(dp83640, skb);
- /* Let the stack drop this frame. */
- return false;
+ kfree_skb(skb);
+ return true;
}
SKB_PTP_TYPE(skb) = type;
--
1.7.0.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH for 3.0-rc4 0/2] dp83640: bug fixes
2011-06-15 9:55 [PATCH for 3.0-rc4 0/2] dp83640: bug fixes Richard Cochran
2011-06-15 9:55 ` [PATCH for 3.0-rc4 1/2] dp83640: fix phy status frame event parsing Richard Cochran
2011-06-15 9:55 ` [PATCH for 3.0-rc4 2/2] dp83640: drop PHY status frames in the driver Richard Cochran
@ 2011-06-17 3:48 ` David Miller
2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2011-06-17 3:48 UTC (permalink / raw)
To: richardcochran; +Cc: linux-kernel, netdev, john.stultz, tglx
From: Richard Cochran <richardcochran@gmail.com>
Date: Wed, 15 Jun 2011 11:55:18 +0200
> This series fixes two status frame related bugs in the driver for the
> dp83640 phy. I am not sure whether you would call this a timer fix or
> a networking fix, so I put both groups on CC.
I've applied both to net-2.6, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-06-17 3:48 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-15 9:55 [PATCH for 3.0-rc4 0/2] dp83640: bug fixes Richard Cochran
2011-06-15 9:55 ` [PATCH for 3.0-rc4 1/2] dp83640: fix phy status frame event parsing Richard Cochran
2011-06-15 9:55 ` [PATCH for 3.0-rc4 2/2] dp83640: drop PHY status frames in the driver Richard Cochran
2011-06-17 3:48 ` [PATCH for 3.0-rc4 0/2] dp83640: bug fixes David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).